轻松掌握WebService技术后台—Soap图解法_第1页
轻松掌握WebService技术后台—Soap图解法_第2页
轻松掌握WebService技术后台—Soap图解法_第3页
轻松掌握WebService技术后台—Soap图解法_第4页
轻松掌握WebService技术后台—Soap图解法_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上篇博客中我们已经从宏观上介绍了WebService,以及WebService三大技术支持后台。那我们这篇博客给大家介绍以下Soap以及WSDL的模样。首先从长相外表上了解一个事物,然后通过后期实践不断深入了解。嘻嘻,其实对人的了解何尝又不是呢?学习其实是与生活本来是想通的,很多学习的道理或方法都是来自生活。好啦,我们不感慨人生了,直奔这篇博客的主题。SOAP是WebService消息传输的格式,我们运行一个程序时,只看到运行的结果是否符合我们的要求,其实背后又是如何运行的呢?那为了捕捉真实的逼真的消息,我们必须利用身边的工具,赤手空拳是无用的。上篇博客中,我们介绍了两种调试捕捉消息的工具,其

2、实若是在Eclispe中开发WebService的话,直接通过Eclispe也可以看到消息传递的。Eclispe中,打开J2EE视图:首先,把服务运行起来:然后点击基于webservice的浏览器:选择wsdl页面:ws中两个方法:点击任何一个函数,如添加方法:点击source,以下是发送的和接受的消息:通过我们捕捉soap消息,我们可以看出soap消息的组成部分。soap消息可以形象地比喻:soap消息是一个信封。信中有信头,信主体。其中写信,当然,可以没有心头了(所谓的称谓),信主题必须要有,否则写这封信就没有意义了。所以soap消息格式如下:那代码格式的soap消息基本结构如下:<

3、?xml version="1.0"?>< soap:Envelopexmlns:soap=""soap:encodingStyle="">< soap:Header>.< /soap:Header>< soap:Body>.<soap:Fault>.</soap:Fault>< /soap:Body>< /soap:Envelope>其中,soap消息有一些注意的地方:· SOAP 消息必须用 XML 来编码·

4、SOAP 消息必须使用 SOAP Envelope 命名空间· SOAP 消息必须使用 SOAP Encoding 命名空间· SOAP 消息不能包含 DTD 引用· SOAP 消息不能包含 XML 处理指令通过观察传递的soap消息,我们可以发现,不仅仅是传递的消息,在消息上部还有http协议信息。发送的消息如下:在发送消息中,有发送的目的地Host,传送的字节数Content-Length,传送类型Content-type,字符编码charsetPOST /ns HTTP/1.1Content-type: text/xml;charset="utf-

5、8"Host: :8880Connection: keep-aliveContent-Length: 240接受的消息如下:在接受消息中,有接受的状态比如成功200(HTTP/1.1 200 OK)http协议传输的编码格式Transfer-encoding,传输类型Content-typeHTTP/1.1 200 OKTransfer-encoding: chunkedContent-type: text/xml;charset="utf-8"了解了Soap的格式规范,我们在编码时,会方便很多。用C+访问Java发布的webService时,就

6、是使用的编写的Soap客户端,并且在Java服务器端,也是使用Soap形式发布服务的。在后期博客中,我们会使用编写Soap形式在进行发布或访问服务,所以现在我们花点时间来了解一下Soap,嘻嘻,现在苦点,以后就会甜点。本来这第二篇打算讲解“开发第一个基于XFire的webservice”的内容来着。但是想想。开发实例只是局限于了会用的层面上。如果想真正的理解webservice还是需要挖掘其原理。所以本篇文章我想还是和大家一起来学习一下webservice的原理吧。知其原理,应用直接就是小case了。在学习webservice的原理之前。我想还是有必要弄清另一个概念SOA.这个概念在很多学术论

7、文和文章中经常和webservice一起被提起。刚开始我一直不理解这两个概念的关系。所以我们先来看一下SOA.SOA是英文Service-Oriented Architecture,即面向服务架构的缩写。 在有关书籍中他是这个定义的:SOA指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。从这个定义中定义者希望表达的前提有下面两点:1) 软件系统架构:SOA不是一种语言,也不是一种具体的技术而是一种软件系统架构,它尝试给出在特定环境下推荐采用的一种架构,从这个角度上来说,它更像一种模式(Pattern)。因此它与很多已有的软件技术比如

8、面向对象技术,是互补的而非互斥的。它们分别面向不同的应用场景,用来满足不同的特定需求。 2) SOA的使用范围:需求决定同时也限制功能。SOA并不是包治百病的万灵丹,它最主要的应用场合在于解决在Internet环境下的不同商业应用之间的业务集成问题。从上面的定义其实我们不难发现。其实webservice简单来说就是SOA的一种体现形式。下面我们来看一下有关webservice的原理解释WebService是一种跨编程语言和跨操作系统平台的远程调用技术所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统(采用交互提问的方式来

9、加深大家对此技术的理解)。远程调用技术有什么用呢?商场的POS机转账调用的转账方法的代码是在银行服务器上,还是在商场的pos机上呢?什么情况下可能用到远程调用技术呢?例如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。除了WebService外,常

10、见的远程调用技术还有RMI(Remote method invoke)和CORBA,由于WebService的跨平台和跨编程语言特点,因此比其他两种技术应用更为广泛,但性能略低。WebService使用SOAP协议实现跨编程语言和跨操作系统平台WebService 采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。 WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明 HTTP消息的内容格式,这些特定的HTTP消

11、息头和XML内容格式就是SOAP协议(simple object access protocol,简单对象访问协议) 。SOAP协议= HTTP协议+ XML数据格式SOAP协议是基于HTTP协议的,两者的关系就好比高速公路是基于普通公路改造的,在一条公路上加上隔离栏后就成了高速公路。商店的服务员只要收到了钱就给客户提供货物,商店服务员不用关心客户是什么性质的人,客户也不用关心商店服务员是什么性质的人。同样,WebService 客户端只要能使用HTTP协议把遵循某种格式的XML请求数据发送给WebService服务器,WebService服务器再通过HTTP协议返回遵循 某种格式的XML结果

12、数据就可以了,WebService客户端与服务器端不用关心对方使用的是什么编程语言。HTTP协议和XML是被广泛使用的通用技术,各种编程语言对HTTP协议和XML这两种技术都提供了很好的支持,WebService客户端与服务器端使用什么编程语言都可以完 成SOAP的功能,所以,WebService很容易实现跨编程语言,跨编程语言自然也就跨了操作系统平台WSDL文件好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。WebService客户端要调用一个 WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,W

13、ebService务器端首先要通过一个 WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地 址表示,服务通过什么方式来调用。WSDL(webservicedescription language)是基于XML格式的,它是WebService客户端和服务器端都能理解的标准格式,其中描述的信息可以分为what,where,how等部分!ØWSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebSer

14、vice服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找2.直接告诉给客户端调用者,例如,在自己网站给出信息或邮件告诉。WebServices体系架构 下面我们就来看一下Web Services的体系结构-面向服务的体系结构。如图:Web Services的体系结构从上图可以看出,SOA结构中共有三种角色:(1) Service provider:服务提供商,发布自己的服务,并且对使用自身服务的请求进行响应。(2) Service broker:服务注册中心,注册已经发布的Service provider,对其进行分类,并提供搜索服务,这是可搜索的服

15、务描述注册中心,服务提供者在此发布他们的服务描述。在静态绑定开发或动态绑定执行期间,服务请求者查找服务并获得服务的绑定信息(在服务描述中)。对于静态绑定的服务请求者,服务注册中心是体系结构中的可选角色,因为服务提供者可以把描述直接发送给服务请求者。同样,服务请求者可以从服务注册中心以外的其它来源得到服务描述,例如本地文件、FTP 站点、Web 站点、广告和服务发现(Advertisement and Discovery of Services,ADS)或发现 Web 服务(Discovery of Web Services,DISCO)。(3) Service Requester:服务请求者,

16、利用Service broker查找所需的服务,然后使用该服务SOA体系结构中的组件必须具有上述一种或多种角色。在这些角色之间使用了三种操作:(1) Publish操作:使Service Provider可以向Service Broker注册自己的功能及访问接口(2) Find操作:使Service Requester可以通过Service Broker查找特定种类的服务。(3) Bind操作:使Service Requester能够真正使用Service provider。为支持结构中的三种操作(publish、find和bind),SOA需要对服务进行一定的描述,这种服务描述(Servic

17、e Description)应具有下面几个重要特点:首先,它要声明Service provider的语义特征。Service broker使用语义特征将Service provider进行分类,以帮助具体服务的查找。Service requester根据语义特征来匹配那些满足要求的Service provider。(因此,语义特征中重要的一点就是对Service provider的分类。)其次,服务描述应该声明接口特征,以访问特定的服务。最后,服务描述还应声明各种非功能特征,如安全要求,事务要求,使用Service provider的费用等等。接口特征和非功能特征也可以用来帮助Service

18、requester对Service provider的查找。Web 服务的构件Web Services的构件可以通过下图给出了清晰的描述。web Services构件模型(1) 服务在这里,Web 服务是一个由服务描述来描述的接口,服务描述的实现就是该服务。服务是一个软件模块,它部署在由服务提供者提供的可以通过网络访问的平台上。服务存在就是要被服务请求者调用或者同服务请求者交互。当服务的实现中利用到其它的Web 服务时,它也可以作为请求者。当然更为重要的是:我们需要发现服务,这就要借助UDDI等技术来完成。(2) 服务描述服务描述包含服务的接口和实现的细节。其中包括服务的数据类型、操作、绑定信息和网络位置。还可能包括可以方便服务请求者发现和利用的分类及其它元数据。服务描述可以被发布给服务请求者或服务注册中心。Web 服务体系结构解释了如何实例化元素和如何以一种可以互操作的方式实现这些操作。这一部分是通过WSDLWeb Services描述语言来实现。(3) 消息格式这部分通常指的就是Web Services的内容需要进行展示所要支持消息格式,它用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论