您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 03-Web服务实用技术(SOAP)
2008-2010byLiWeigang.Allrightsreserved.Web服务实用技术主讲:李伟刚liweigang@nwpu.edu.cn西北工业大学软件与微电子学院2008-2010byLiWeigang.Allrightsreserved.第三章SOAP2008-2010byLiWeigang.Allrightsreserved.主要内容SOAP概述SOAP消息结构SOAP编码SOAP消息交换SOAP处理技术2008-2010byLiWeigang.Allrightsreserved.第一节SOAP概述2008-2010byLiWeigang.Allrightsreserved.SOAP是一个独立于任何特定传输协议的XML消息协议是复杂的分布式对象通信技术的轻量级替代物源自BizTalk(Microsoft/UserLand/DevelopMentor)W3C的标准BasedonXMLSOAP2008-2010byLiWeigang.Allrightsreserved.SOAP最早由DaveWinner、DonBox和BodAtkinson提出。在1997年,Microsoft开始考虑基于XML的分布式计算,其目标是使应用程序能够使用HTTP上层的远程过程调用(RPC)相互通信。DevelopMentor和Userland加入到了讨论。在1998年初,SOAP名字就已经被确定。Userland在1998年发布了一个XML-RPC规范。1999年9月SOAP0.9提交IETF(Internet工程任务组)。2000年5月8日,SOAP1.1作为Note提交W3C。IBM发布JavaSOAP实现,并捐给开放源代码组织ApacheXMLProject。Sun公司将Web服务集成到J2EE中。2000年9月13日,W3C组建了XML协议工作组,专门负责设计XML协议,以便成为基于XML分布式计算的核心。这个工作组将SOAP1.1作为基础,并于2001年7月9日提交了第一份工作组草案SOAP1.2。2003年6月24日SOAP1.2成为W3C推荐标准。2007年4月27日W3C发布SOAP1.2推荐标准第二版。SOAP发展史2008-2010byLiWeigang.Allrightsreserved.SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化和类型化信息提供了一个简单且轻量级的机制。支持应用程序与应用程序之间的通信。应用于B2B的通信以及企业应用集成。以独立于各种编程语言或平台的方式来构造消息、处理消息,从而使用不同编程语言编写的程序之间具有互操作性,并能够在不同的操作系统上运行。通过对模块中特定格式编码的数据的重编码机制来表示应用语义。SOAP-What?2008-2010byLiWeigang.Allrightsreserved.SOAP-What?2008-2010byLiWeigang.Allrightsreserved.SOAP-What?SOAPNetworkProtocolIntermediator2008-2010byLiWeigang.Allrightsreserved.使用RPC进行通信需对服务接口达成一致需对通信协议达成一致使用ORB服务可以使用Internet,但是需要更改安全设置SOAP-What?2008-2010byLiWeigang.Allrightsreserved.使用XML消息,信封可封装任意内容和附件不需要特殊的网络设置用XML描述服务(即WSDL)用XML描述消息SOAP-What?2008-2010byLiWeigang.Allrightsreserved.定义通信单元的构成:一个SOAP封套封装了所有其他的信息。一个消息可以有一个消息体,消息体中可以包含任何XML格式数据。错误处理机制:标识错误源和导致错误的原因,并允许错误诊断信息在共享者和交互者之间传递。可扩展机制:使用XMLSchema和名字空间技术,灵活扩展元素。灵活的数据表示机制:允许交换已经以某种格式序列化的数据,同时也提供了以XML格式表示诸如编程语言数据类型这样的抽象数据结构的规则。表示远程过程调用(RPC)和作为响应的SOAP消息的约定,并且便于映射为过程式编程语言结构。支持以文档为中心的方法。将SOAP消息绑定到HTTP上,因为HTTP是Internet上最常用的通信协议。SOAP的功能2008-2010byLiWeigang.Allrightsreserved.第二节SOAP消息结构2008-2010byLiWeigang.Allrightsreserved.基于XML的协议,由四部分组成:信封(Envelope):作为描述消息中的内容以及如何处理消息的信息框架编码规则(EncodingRules):用于表示应用程序需要使用的数据类型的实例绑定(Binding):定义底层通信协议,进行消息交换RPC:远程过程调用和返回的约定SOAP的内容2008-2010byLiWeigang.Allrightsreserved.SOAP消息处理模型2008-2010byLiWeigang.Allrightsreserved.SOAP消息结构EnvelopecontainsHeaderBodyHeaderisoptionalOut-of-bandinformation(带外信息)suchas…AuthenticationinformationMessageroutesLoggingTransactionflowBodycontainsXMLbodyofRPCcallSOAPEnvelopeSOAPHeaderHeaderBlockHeaderBlock...SOAPBodyBodyBlockBodyBlock...2008-2010byLiWeigang.Allrightsreserved.SOAP消息剖析注:/是省略写法2008-2010byLiWeigang.Allrightsreserved.SOAP消息例子SOAPenvelopeapp-specificmessages:Envelopexmlns:s=:Bodym:GetLastTradePricexmlns:m=Some-URIsymbolIBM/symbol/m:GetLastTradePrice/s:Body/s:EnvelopeASOAPRequestMessage2008-2010byLiWeigang.Allrightsreserved.SOAP消息例子ASOAPRequestMessageapp-specificmessages:Envelopexmlns:s=:Bodym:GetLastTradePricexmlns:m=Some-URIsymbolIBM/symbol/m:GetLastTradePrice/s:Body/s:EnvelopemessagenamespaceSOAPEnvelopeNamespaceSOAPenvelope2008-2010byLiWeigang.Allrightsreserved.SOAP消息例子ASOAPRespondMessageSOAPenvelopeapp-specificmessageResultreturnedinBodys:Envelopexmlns:s=:Bodym:GetLastTradePriceResponsexmlns:m=Some-URIPrice134/Price/m:GetLastTradePrice/s:Body/s:Envelope2008-2010byLiWeigang.Allrightsreserved.SOAPEnvelope元素信息项是SOAP消息的最外层元素,它具有:值为Envelope的本地名称值为的命名空间名称在它的attributes中有零个、一个或多个由命名空间限定的属性信息项在它的children中按顺序有一个或两个元素信息项,次序如下:一个可选的头元素信息项:Header一个必选的体元素信息项:BodySOAP信封2008-2010byLiWeigang.Allrightsreserved.encodingStyle属性:encodingStyle属性信息项指出了对SOAP消息部分内容进行序列化的编码规则SOAP的全局encodingStyle属性被用于指明在SOAP消息中使用哪种编码规则。encodingStyle属性信息项可以在下述地方出现,其作用范围包括该元素的内容和所有其子元素中未使用该属性的所有子元素:SOAP头块SOAP体元素信息项的子元素信息项——如果该子元素不是SOAP故障元素信息项SOAPDetail元素信息项的子元素信息项上述三者的任意子元素encodingStyle属性信息项不能出现在除上述SOAP信息集之外的其它任何元素中SOAP主要属性2008-2010byLiWeigang.Allrightsreserved.SOAP提供了一个可伸缩的机制用于在分散的模块化的环境下扩展SOAP消息,而通讯双方并不需要有预先的约定知识。典型的扩展例子可以是实现一些诸如认证、事务管理以及支付的Header条目Header元素应当被编码为SOAPEnvelopeXML文档的第一直接子元素。Header的所有直接子元素都被称为Header条目SOAPHeader2008-2010byLiWeigang.Allrightsreserved.env:Headerxmlns:env=:Transactionxmlns:t=:mustUnderstand=true5/t:Transaction/env:Header2008-2010byLiWeigang.Allrightsreserved.Header条目的编码规则包括:一个SOAPHeader条目由一个完整修饰的元素名来标识,所谓完整修饰的元素名是由一个命名空间URI和局部名来组成SOAPHeader元素的所有直接子元素都必须是完整修饰的encodingStyle属性可以用于指明Header条目的编码风格role属性和SOAPmustUnderstand属性可以用于指明由哪个SOAP结点来处理条目以及如何处理条目SOAPHeader2008-2010byLiWeigang.Allrightsreserved.描述安全凭证事务ID路由调试信息支付令牌安全……SOAPHeader2008-2010byLiWeigang.Allrightsreserved.SOAP消息从生成者到达最终接受者,将潜在地沿着消息路径经过一系列的SOAP中间结点。SOAP中间结点是一个能够接受和转发SOAP消息的应用程序。所有的中间结点都如同最终接受者一样由一个URI来标识role属性信息项的类型是xs:anyURI。role属性信息项的值是一个URI,该URI标识了该头块期望SOAP结点担任的角色当一个节点接收到一个SOAP消息时,它要分析文件头,以确定哪些代码块是由该节点支持的角色role属性2008-2010byLiWeigang.Allrigh
本文标题:03-Web服务实用技术(SOAP)
链接地址:https://www.777doc.com/doc-1575144 .html