WebService工作原理 与 性能测试结论

转载 2017年01月03日 19:56:31

用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助。

WebService是基于网络的、分布式的模块化组件。

 

我们直接来看WebService的一个简易工作流程

客户端 ——>阅读WSDL文档(了解webservice的请求) ——> 调用WebService 

 

上面的流程是一个大致的描述,客户端阅读WSDL文档发送请求,然后调用Web服务器最后返回给客户端,这和普通的http请求一样,请求->处理->响应,与普通的请求不一样的就是webservice请求中有一个WSDL文档和SOAP协议,以及.NET Framework自带的Web Service请求处理器 ISAPI Extension。

 

我们来看一个比较完整的流程

客户端——> 阅读WSDL文档 (根据文档生成SOAP请求) ——>发送到Web服务器——>交给WebService请求处理器 (ISAPI Extension)

——>处理SOAP请求——> 调用WebService——>生成SOAP应答 ——> Web服务器通过http的方式交给客户端

 

OK,到这里已经明白了的同学你可以走了,去逛逛别的文章,没懂的我们继续往下:

 

我们先来解释一下上面的流程中出现的几个名词:

1. SOAP: 是以XML形式提供简单、轻量、用于在分散或分布式环境中交换结构化和类型信息的机制。SOAP消息的基本结构通过HTTP协议传递XML数据。简单的说就是一个基于XML的协议。

2. WSDL : 是使用XML文档描述Web服务的标准,是Web服务的的接口定义语言,描述如何访问具体的接口,包含3个基本属性:

     a. 如何访问服务:和服务交互的数据格式以及必要的协议。

     b. 服务在哪里: 协议相关的地址,比如url信息等

     c. 服务具有哪些功能: 服务提供的具体操作方法,=》就是你webservice中提供了哪些可调用的方法

 

原理详细描述:

无论使用什么工具、语言编写 WebService,都可以使用 SOAP 协议通过 HTTP 调用,其工作原理相同。创建 WebService 后,将其暴露给Web客户,任何语言、平台的客户都可以阅读其  WSDL 文档,以调用 WebService 。客户可以根据 WSDL 描述文档生成一个 SOAP 请求信息。 WebService 部署在Web服务器( 如IIS )上,客户生成的 SOAP 请求会被嵌入在一个 HTTP 请求中并发送到Web服务器,Web服务器(IIS)再将请求转发给 WebService 请求处理器。

对于.Net而言,WebService请求处理器则是一个 .NET Framework 自带的 ISAPI Extension。Web请求处理器用于解析收到的SOAP请求,调用 WebService,然后生成相应的SOAP应答。Web服务器得到SOAP应答后,在通过HTTP应答的方式将其返回给客户端。

 

WebService优势:

1.平台无关性 。  任何平台都可以使用WebService

2.编程语言无关系。 基于XML,XML本身与平台无关,使用XSD作为数据类型系统,不论用什么语言编写,所有数据类型都会被转换为XSD,只需要遵守WebService的统一标准即可。

3.部署、升级和维护Web服务简单、方便。

4.实现多数据、多服务的聚合。

5.成本低。

6.不受防火墙的影响。使用SOAP协议通信,封装了XML格式的数据,以ASCII文本的方式传输,而非二进制,调试方便,而且可以使数据容易的通过防火墙,不需要单独开通信端口。 

 

总结:

WSDL、SOAP和UDDI(统一描述、发现和集成机制) 一起工作,支持WebService与Internet上的其他服务、应用程序和设备交互作用。UDDI提供了发布和定位Web服务功能(更多请自行了解),WSDL描述了Web服务,SOAP服务提供了传输消息。


性能测试结论


因为最近要推行用webservice soap来实现多语言的调用的服务,所以对soap进行一个简单的压力测试,就是一句简单的字符串传输和一个简单的对象传输返回。

        简单的压测,结果并不尽如人意,在100M的带宽(局域网内的两台机器),跑满了带宽每秒的调用数就是2000多而已。如果没有对比,或许我不会不满意,但是,由于之前公司部分架构是采用alibaba的rpc框架dubbo进行开发soa服务的,我当时简单的测试下,同样的100M带宽同样的测试内容,dubbo可以达到数万次/秒的调用。因此相当的不满意。

后来,了解了dubbo和webservice soap之间的在传输和序列化方面的区别(在我看来RPC框架的性能其实最重要的决定性就是这两种)。

        dubbo是基于Java netty实现二进制数据传输,默认用Java Serializer进行序列化的框架,即是属于二进制协议。

soap则是简单对象访问协议 (SOAP:Simple Object Access Protocol)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。

现在原因就在这里了,soap的协议是属于文本协议,而且序列化则是采用xml序列化,soap协议的附加内容太大,导致传输上比dubbo的传输慢,而且序列化xml也比直接二进制序列化慢,所以性能上dubbo都是优于webservice soap的。

尽管,webservice soap的性能低于dubbo,但是考虑到跨语言调用以及实施部署难度,接下来只能继续推行webservice soap。



几种流行Webservice框架性能对比(转载、拼接)

1摘要   开发webservice应用程序中离不开框架的支持,当open-open网站列举的就有很多种,这对于开发者如何选择带来一定的疑惑。性能Webservice的关键要素,不同的框架性能上存...

几种流行Webservice框架性能对比

开发webservice应用程序中离不开框架的支持,当open-open网站列举的就有30多种,这对于开发者如何选择带来一定的疑惑。性能Webservice的关键要素,不同的框架性能上存在较大差异,而...

(原创)如何高效的进行WebService接口性能测试

版权声明:本文为原创文章,转载请先联系并标明出处 关于接口测试的理解,主要有两类,一类是模块与模块间的调用,此类接口测试应该归属于单元测试的范畴,主要测试模块与模块之间联动调用与返回。此类测试大多关...

几种流行Webservice框架性能对比(转载、拼接)

1摘要   开发webservice应用程序中离不开框架的支持,当open-open网站列举的就有很多种,这对于开发者如何选择带来一定的疑惑。性能Webservice的关键要素,不同的框架性能上存...

Webservice工作原理及实例

Web Service工作原理 一、Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上...

WebService的简介, 原理, 使用

云计算的时代, 大有可为的依然是Server端. WebService也不是一种新技术, 只是一种简洁的技术, 比较方便的给客户端提供友好的接口。 这篇文章就好好理解一下, WebService框架的...

WebService到底是什么?

一、序言   大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分。但是不得不承认的是...
  • WOOSHN
  • WOOSHN
  • 2012年10月14日 11:25
  • 331743

webservice和soap原理

做客户端有必要对soap做基本的了解,开发手机的程序员可能对web service不是太了解。 soap简单说是基于xml的,建立在http协议上的协议,用来调用web server提供的servi...

几种流行Webservice框架性能对比

几种流行Webservice框架性能对比(转载、拼接)   分类: WebService(1)   Dubbo(1)  目录(?)[+] 1摘...

用SoapUI进行Webservice的性能压力测试

转载地址:http://blog.csdn.net/jastar/article/details/6077505 仅供学习分享 1.      新建测试工程   选择在一个测试用例中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebService工作原理 与 性能测试结论
举报原因:
原因补充:

(最多只允许输入30个字)