已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SOAP,马殿富北航计算机学院2006-05,主要内容,SOAP发展历史SOAP的主要功能SOAP协议组成部分信封标题RPC相关应用,发展历史,SOAP最早由DaveWinner、DonBox和BodAtkinson提出。在1987年,Microsoft开始考虑基于XML的分布式计算,其目标是使应用程序能够使用HTTP上层的远程过程调用(RPC)相互通信。DevelopMentor和Userland加入到了讨论。在1998年初,S0AP名字就已经被确定。Userland在1998年发布了一个XML-RPC规范。1999年9月SOAP0.9提交IETF。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。,SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化和类型化信息提供了一个简单且轻量级的机制。SOAP1.1简单对象访问协议(SimpleObjectAccessPropotol)是Web服务的事实标准。支持应用程序与应用程序之间的通信;应用于商务对商务的通信以及企业应用集成。以独立于各种编程语言或平台的方式来构造消息、处理消息,从而使用不同编程语言编写的程序之间具有互操作性,并能够在不同的操作系统上运行。通过对模块中特定格式编码的数据的重编码机制来表示应用语义。,SOAP概述,SOAP主要功能:,定义通信单元的机制:一个SOAP封套封装了所有其他的信息。一个消息可以有一个消息体,消息体中可以包含任何XML格式文档。错误处理机制:标识错误源和导致错误的原因,并允许错误诊断信息在共享者和交互者之间传递。可扩展件机制:使用XML模式和名字空间技术,灵活扩展元素。灵活的数据表示机制:允许交换已经以某种格式序列化的数据,同时也提供了以XML格式表示诸如编程语言数据类型这样的抽象数据结构的规则。表示远程过程调用(RPC)和作为响应的SOAP消息的约定,并且便于映射为过程式编程语言结构。支持以文档为中心的方法。将SOAP消息束定到HTTP的机制,因为HTTP是Internd上最常用的通信协议。,SOAP,基于XML的协议,由四部分组成:信封(Envelope):定义了一个消息框架,描述消息的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理。编码规则(EncodingRules):用于表示应用程序需要使用的数据类型的实例。绑定(Binding):定义底层通信协议,进行消息交换。RPC:表示远程过程调用和应答的协定。,SOAP,SOAP信封包装传输的消息。SOAP定义4个XML元素:信封(env:Envelope)标题(env:Header)体(env:Body)一组和多组SOAP条目的信息。故障(env:Fault)协议层错误信息的特殊SOAP条目,命名空间,/soap/envelope/2001/XML.Schema-instance/2001/XML.Schema/soap/encoding/wsdl//wsdl/soap/schema/conformanceClain,SOAP用例,12001-06-22T14:00:00-05:00PickupMaryatschoolat2pm,SOAP结构,SOAP消息是由一个SOAPEnvelope、一个可选的SOAPHeader和一个SOAPBody组成的XML文档。元素和属性的命名空间标识是/2001/06/soap-envelope。SOAP消息应当包含如下部分:一个SOAPenvelope。Envelope是表示该消息的XML文档的根级元素。一个SOAPHeader。Header是为了支持在松散环境下在通讯方之间尚未预先达成一致的情况下为SOAP消息增加特性的通用机制。SOAP定义了很少的一些属性来用于指明谁可以处理该特性以及它是可选的还是强制的。一个SOAPBody。Body为该消息的最终接收者所想要得到的信息提供了一个容器。此外,SOAP定义了Body的一个子元素Fault用于报告错误。,SOAP主要属性,encodingStyle属性SOAP的全局encodingStyle属性被用于指明在SOAP消息中使用哪种编码规则。该属性可以在任意元素中出现,其作用范围包括该元素的内容和所有其子元素中未使用该属性的所有子元素。root属性可以被用来标注编序的根,根一般就有值“1”。那些非真正根的编序根也可以被标注为赋予值为“1”的编序根。一个元素也可以被明确地标注为赋予值为“0”的非编序根。SOAP根属性可以出现在SOAPHeader和SOAPBody元素中的任何子元素里,该属性没有默认值。,SOAPHeader,SOAP提供了一个可伸缩的机制用于在分散的模块化的环境下扩展SOAP消息,而通讯双方并不需要有预先的约定知识。典型的扩展例子可以是实现一些诸如认证、事务管理以及支付的Header条目。Header元素应当被编码为SOAPEnvelopeXML文档的第一直接子元素。Header的所有直接子元素都被称为Header条目。Header条目的编码规则包括:一个SOAPHeader条目由一个完整修饰的元素名来标识,所谓完整修饰的元素名是由一个命名空间URI和局部名来组成。SOAPHeader元素的所有直接子元素都必须是完整修饰的。encodingStyle属性可以用于指明Header条目的编码风格。actor属性和SOAPmustUnderstand属性可以用于指明由哪个SOAP结点来处理条目以及如何处理条目。,SOAPHeader,描述安全凭证事务ID路由调试信息支付令牌,actor属性,SOAP消息从生成者到达最终接受者,将潜在地沿着消息路径经过一系列的SOAP中间结点。SOAP中间结点是一个能够接受和转发SOAP消息的应用程序。所有的中间结点都如同最终接受者一样由一个URI来标识。actor属性用一个RUI标识节点处理对应的文件头时必须扮演的角色。当一个节点接收到一个SOAP消息时,它要分析文件头,以确定哪些代码块是由该节点支持的角色。Header元素中接收者角色类似和约的接受者。一个接收者接到其想要的一个Header元素必须不转发该Header给SOAP消息路径中的下一个应用程序。SOAPactor全局属性可以被用于指明Header元素的接收者。而SOAPactor属性的值是一个URI。这个特别的URI/2001/06/soap-envelope/actor/next指明该Header元素是直接的下一个进行消息处理的SOAP应用程序想要的。这与HTTP的连接头字段的hop-by-hopscopemodel的表示。若省略SOAPactor属性,则表明接收者是SOAP消息的最终接收者。,mustUnderstand属性,mustUnderstand全局属性用于指明一个Header条目是强制的还是可选的要求接收者处理。Header条目的接收结点由SOAPactor属性来定义。mustUnderstand属性的值可为“0”或“1”。若没有使用SOAPmustUnderstand属性,则在语义上等价于mustUderstand属性出现同时取值为“0”。若Header条目带有值为“1”的mustUnderstand属性,则该Header条目的接收结点要么必须遵循语义并正确地处理这些语义,要么必须宣称处理消息失败。mustUnderstand属性是为了考虑健壮地升级而设置的。所有用值为“1”的SOAPmustUnderstand属性来标记的元素必须被认为是可以影响该元素的上级元素或同级元素的语义。,SOAPBody,SOAPBody元素提供一个简单的用于与消息的最终接收者交换强制信息的机制。而Body元素的典型应用包含序列的RPC调用和错误报告。Body元素在编码上作为SOAPEnvelope元素的一个直接子元素。如果包含Header元素,则Body元素必须直接跟随Header元素,否则Body元素必须是Envelope元素的第一直接子元素。所有Body元素的直接子元素被成为SOAPBody条目,同时每一个Body条目都应当编码为SOAPBody元素里的一个独立元素。,SOAPBody,Body条目的编码规则包括:1一个Body条目由一个完整修饰的元素名来标识,所谓完整修饰的元素名是由一个命名空间URI和局部名来组成。SOAPBody元素的直接子元素可以是命名空间修饰的。2SOAPencodingStyle属性可以被用来表明Body条目中使用的编码规则。3SOAP定义了一个Body条目,用于报告错误的Fault条目。,SOAP错误,SOAPFault元素是用于在SOAP消息中传输错误或状态信息。如果SOAP消息需要包含SOAPFault元素的话,它必须作为一个Body条目出现,同时在Body元素内它必须至多出现一次。SOAPFault元素定义了如下子元素:1faultcode元素是应那些要提供一个算法上的机制来标识错误的软件的需要。faultcode必须在SOAPFault元素中出现。SOAP定义了一个很小的SOAP错误代码的集合用于覆盖基本的SOAP错误。2faultstring元素是为那些错误代码提供一个人可以读懂的错误解释,它不是为程序处理而设,提供一些解释该错误种类的信息。3faultactor元素是为在SOAP消息路径中是谁引起了该错误的发生这一情况描述信息。faultactor属性的值是一个标识该源的一个URI。所谓并非作为SOAP消息最终接收者的应用程序必须在SOAPFault元素中包含faultactor元素。而消息的最终接收者可以使用faultactor元素来明确地指明是它生成了该错误。4detail元素是用于传输与SOAPBody元素相关的应用程序特别的错误信息。如果Body元素中的内容不能被成功地处理的时候,它必须出现。它必须不能被用于传输属于Header条目的错误信息。,SOAP错误,若SOAPFault元素中不出现detail元素,则表明其中的错误与Body元素的处理无关。这可以用于区分在错误情况下Body元素是否被SOAP的最终接受者处理过。detail元素的所有直接子元素都被称为detail条目,同时每个detail条目都作为detail元素中的一个独立的元素进行编码。detail条目的编码规则如下:1一个detail条目由一个完整修饰的元素名来标识。detail元素的直接子元素可以是命名空间修饰的。2SOAPencodingStyle属性可以被用来表明detail条目中使用的编码规则。,SOAP编码,简单类型SOAP采用了在“XMLSchemaPart2:Datatypes”的“Build-indatatypes”节中定义的所有类型,包括值和词汇空间(lexicalspaces)1字符串:“string”数据类型在“XMLSchemaPart2:Datatypes”中被定义。2枚举:“XMLSchemaPart2:Datatypes”规范定义了一种称为“玫举(enumeration)”的机制。3字节数组:一个Byte数组可以编码为单引用或多引用值。对一个不透明的Byte数组的推荐表示是使用在XMLSchema规范中定义的“base64”编码方式。4多态存取标识:多态地访问数个类型的值,在运行时刻每个类型都是可使用的。一个多态存取标识实例必须包含一个“xsi:type”属性以描述类型的实际值。,SOAP编码,复合类型SOAP依照在程序语言中常常看见的以下结构模式来定义复合类型:1“struct”是一个复合类型值,其成员的存取标识名是相互区别的唯一标志,应彼此各不相同。2“array”是一个复合类型值,其成员的顺序位置是相互区别的唯一标志。,SOAP中的RPC,SOAP的一个设计目标就是要利用XML的可扩展性和可伸缩性来包装和交换RPC调用。在RPC中,使用HTTP作为SOAP协议绑定媒介的情况下,一个RPC调用可以很自然地映射到一个HTTP请求,而RPC响应则可以映射到HTTP响应。使用SOAP方式的RPC并不限于HTTP协议绑定。为实施一个方法调用,需要以下信息:1目标SOAP结点的URI2方法名3可选的方法或过程的特征4方法或过程的参数5可选的头数据SOAP依赖协议绑定来提供传送URI的机制。,RPC和SOAPBody,RPC调用和响应都是在SOAPBody元素中传送,使用如下表示方式:1一个方法调用被建模成一个结构struct。该方法调用显示为一个简单结构struct,包含每个in或in/out参数的存取标识。该结构的名和类型可使用过程或方法的名来标识。2每个in或in/out参数都被表示为一个存取标识,该存取标识的名和类型都对应于相应参数的名和类型。他们的次序也是按照原来RPC中的次序。3一个方法响应被建模成一个结构struct。,SOAP请求消息,Computer,RPC和SOAPBody,该方法响应显示为一个简单结构struct,包含每个out或in/out参数的存取标识。而第一个存取标识是返回值,而随后则是按照原来次序的返回参数。每个out或in/out参数都被表示为一个存取标识,该存取标识的名和类型都对应于相应参数的名和类型。返回值的存取标识名并没有多少语义。同样的,结构的名也并没有多少语义。当然,无论如何,在添加了“Response”字串的方法名后,要有一个约定来命名它。方法调用出错应使用SOAPFault元素来编码。如果一个绑定协议对于错误表达还有额外规则,那么这些规则都应当被遵守。方法和响应的结构可以使用规则来编码,也可以使用在encodingStyle属性中描述的其他编码。应用程序可以处理漏写参数的请求不过也可以返回一个错误。因为在响应中若包含“result”则表明成功,若包含“fault”则表明失败,所以如果方法响应中同时包含了“result”和“fault”则是错误的。,SOAP响应消息,8000.00,HTTP传输SOAP,虽然SOAP可以和多种HTTP请求方法联合使用,但这里的绑定只定义了SOAP是如何在HTTPPost请求中传输的。1HTTPHeader中的SOAPAction字段:SOAPActionHTTP请求头字段(headerfield)可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届吉林省榆树市四上数学期末教学质量检测试题含解析
- 2027届四川省阿坝藏族羌族自治州壤塘县三上数学期末质量跟踪监视试题含解析
- 2026高中秋季开学滑坡泥石流灾害预警识别科普
- 变配电运行值班员(8)理论考试测试卷及答案
- 2027届苏州市相城区数学四年级第一学期期末综合测试试题含解析
- 2027年山东省高职综合评价招生 职业认知能力模拟检测卷
- 2026中国文化传媒领域深层剖析及行业前景和投资机会深度研究报告
- 2026融资租赁行业市场发展潜力商业模式竞争分析研究发展蓝皮书
- 2026生物医药行业技术与市场结合趋势研判与产业升级探讨及资本进入途径分析报告
- 2026葡萄牙交通运输规划及高效的能源利用和商业前景分析
- 2025年茂名港集团有限公司招聘笔试真题
- 2026安徽师范大学专职辅导员招聘3人(第二批)笔试参考题库及答案详解
- 2026年车险查勘定损人员上岗考核试卷及答案
- 成都教科附属2026初一入学语文分班考试真题含答案
- 2026-2027北师大版七(上)数学第一章 丰富的图形世界 单元测试卷
- 2026中煤华利新疆炭素科技有限公司招聘16人笔试历年典型考点题库附带答案详解
- 中国骨科大手术vte预防指南(2025版)
- 肺癌病人营养支持护理
- 2026年江苏省安全员C1证(机械类)考试真题(含答案解析)
- 2025方便速食行业线上消费趋势洞察
- 小绞车司机安全操作注意事项
评论
0/150
提交评论