soap北京航空航天大学

上传人:san****019 文档编号:83459785 上传时间:2019-02-27 格式:PPT 页数:31 大小:367.50KB
返回 下载 相关 举报
soap北京航空航天大学_第1页
第1页 / 共31页
soap北京航空航天大学_第2页
第2页 / 共31页
soap北京航空航天大学_第3页
第3页 / 共31页
soap北京航空航天大学_第4页
第4页 / 共31页
soap北京航空航天大学_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《soap北京航空航天大学》由会员分享,可在线阅读,更多相关《soap北京航空航天大学(31页珍藏版)》请在金锄头文库上搜索。

1、SOAP,马殿富 北航计算机学院 2006-05,主要内容,SOAP发展历史 SOAP的主要功能 SOAP协议组成部分 信封 标题 RPC 相关应用,发展历史,SOAP最早由Dave Winner、Don Box和Bod Atkinson提出。 在1987年,Microsoft开始考虑基于XML的分布式计算,其目标是使应用程序能够使用HTTP上层的远程过程调用(RPC)相互通信。DevelopMentor和Userland加入到了讨论。 在1998年初,S0AP名字就已经被确定。Userland在1998年发布了一个XML-RPC规范。 1999年9月SOAP0.9提交IETF。 2000年5

2、月8日,SOAP1.1作为Note提交W3C。IBM发布Java SOAP实现,并给开放源代码组织Apache XML Project。Sun公司将Web服务集成到J2EE中。 2000年9月13日,W3C组建了XML协议工作组,专门负责设计XML协议,以便成为基于XML分布式计算的核心。这个工作组将SOAP1.1作为基础,并于2001年7月9日提交了第一份工作组草案SOAP1.2。,SOAP 为在一个松散的、分布的环境中使用XML对等地交换结构化和类型化信息提供了一个简单且轻量级的机制。 SOAP1.1简单对象访问协议(Simple Object Access Propotol)是Web服务

3、的事实标准。 支持应用程序与应用程序之间的通信; 应用于商务对商务的通信以及企业应用集成。 以独立于各种编程语言或平台的方式来构造消息、处理消息,从而使用不同编程语言编写的程序之间具有互操作性,并能够在不同的操作系统上运行。 通过对模块中特定格式编码的数据的重编码机制来表示应用语义。,SOAP概述,SOAP主要功能:,定义通信单元的机制: 一个SOAP封套封装了所有其他的信息。 一个消息可以有一个消息体,消息体中可以包含任何XML格式文档。 错误处理机制: 标识错误源和导致错误的原因,并允许错误诊断信息在共享者和交互者之间传递。 可扩展件机制: 使用XML模式和名字空间技术,灵活扩展元素。 灵

4、活的数据表示机制: 允许交换已经以某种格式序列化的数据,同时也提供了以XML格式表示诸如编程语言数据类型这样的抽象数据结构的规则。 表示远程过程调用(RPC)和作为响应的SOAP消息的约定,并且便于映射为过程式编程语言结构。 支持以文档为中心的方法。 将SOAP消息束定到HTTP的机制,因为HTTP是Internd上最常用的通信协议。,SOAP,基于XML的协议,由四部分组成: 信封(Envelope):定义了一个消息框架,描述消息的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理。 编码规则(Encoding Rules):用于表示应用程序需要使用的数据类型的实例。 绑定(Bindin

5、g):定义底层通信协议,进行消息交换。 RPC:表示远程过程调用和应答的协定。,SOAP,SOAP信封包装传输的消息。SOAP定义4个XML元素: 信封(env:Envelope) 标题(env:Header) 体(env:Body) 一组和多组SOAP条目的信息。 故障(env:Fault) 协议层错误信息的特殊SOAP条目,命名空间,“ http:/schemas.xmlsoap.org/soap/envelope “ “ http:/www.w3.org/2001/XML.Schema-instance “ “ http:/www.w3.org/2001/XML.Schema “ “ h

6、ttp:/schemas.xmlsoap.org/soap/encoding “ “ http:/schemas.xmlsoap.org/wsdl/“ “ http:/schemas.xmlsoap.org/wsdl/soap “ “ http:/ws-i.org/schema/conformanceClain“,SOAP用例, 1 2001-06-22T14:00:00-05:00 Pick up Mary at school at 2pm ,SOAP结构,SOAP消息是由一个SOAP Envelope、一个可选的SOAP Header和一个SOAP Body组成的XML文档。 元素和属性的

7、命名空间标识是“http:/www.w3.org/2001/06/soap-envelope“。SOAP消息应当包含如下部分: 一个SOAP envelope。 Envelope是表示该消息的XML文档的根级元素。 一个SOAP Header。 Header是为了支持在松散环境下在通讯方之间尚未预先达成一致的情况下为SOAP消息增加特性的通用机制。 SOAP定义了很少的一些属性来用于指明谁可以处理该特性以及它是可选的还是强制的。 一个SOAP Body。 Body为该消息的最终接收者所想要得到的信息提供了一个容器。此外,SOAP定义了Body的一个子元素Fault用于报告错误。,SOAP 主要

8、属性,encodingStyle属性 SOAP的全局encodingStyle属性被用于指明在SOAP消息中使用哪种编码规则。 该属性可以在任意元素中出现,其作用范围包括该元素的内容和所有其子元素中未使用该属性的所有子元素。 root属性 可以被用来标注编序的根,根一般就有值“1”。那些非真正根的编序根也可以被标注为赋予值为“1”的编序根。一个元素也可以被明确地标注为赋予值为“0”的非编序根。 SOAP根属性可以出现在SOAP Header和SOAP Body元素中的任何子元素里,该属性没有默认值。,SOAP Header,SOAP提供了一个可伸缩的机制用于在分散的模块化的环境下扩展SOAP消

9、息,而通讯双方并不需要有预先的约定知识。典型的扩展例子可以是实现一些诸如认证、事务管理以及支付的Header条目。 Header元素应当被编码为SOAP Envelope XML文档的第一直接子元素。Header的所有直接子元素都被称为Header条目。 Header条目的编码规则包括: 一个SOAP Header条目由一个完整修饰的元素名来标识,所谓完整修饰的元素名是由一个命名空间URI和局部名来组成。 SOAP Header元素的所有直接子元素都必须是完整修饰的。 encodingStyle属性可以用于指明Header条目的编码风格。 actor属性和SOAP mustUnderstand

10、属性可以用于指明由哪个SOAP结点来处理条目以及如何处理条目。,SOAP Header,描述安全凭证 事务ID 路由 调试信息 支付令牌 ,actor属性,SOAP消息从生成者到达最终接受者,将潜在地沿着消息路径经过一系列的SOAP中间结点。SOAP中间结点是一个能够接受和转发SOAP消息的应用程序。所有的中间结点都如同最终接受者一样由一个URI来标识。 actor属性用一个RUI标识节点处理对应的文件头时必须扮演的角色。当一个节点接收到一个SOAP消息时,它要分析文件头,以确定哪些代码块是由该节点支持的角色。 Header元素中接收者角色类似和约的接受者。一个接收者接到其想要的一个Heade

11、r元素必须不转发该Header给SOAP消息路径中的下一个应用程序。 SOAP actor全局属性可以被用于指明Header元素的接收者。而SOAP actor属性的值是一个URI。这个特别的URI“http:/www.w3.org/2001/06/soap-envelope/actor/next“指明该Header元素是直接的下一个进行消息处理的SOAP应用程序想要的。这与HTTP的连接头字段的hop-by-hop scope model的表示。 若省略SOAP actor属性,则表明接收者是SOAP消息的最终接收者。,mustUnderstand属性,mustUnderstand全局属性用

12、于指明一个Header条目是强制的还是可选的要求接收者处理。 Header条目的接收结点由SOAP actor属性来定义。mustUnderstand属性的值可为“0”或“1”。若没有使用SOAP mustUnderstand属性,则在语义上等价于mustUderstand属性出现同时取值为“0” 。 若Header条目带有值为“1”的mustUnderstand属性,则该Header条目的接收结点要么必须遵循语义并正确地处理这些语义,要么必须宣称处理消息失败。 mustUnderstand属性是为了考虑健壮地升级而设置的。所有用值为“1”的SOAP mustUnderstand属性来标记的元

13、素必须被认为是可以影响该元素的上级元素或同级元素的语义。,SOAP Body,SOAP Body元素提供一个简单的用于与消息的最终接收者交换强制信息的机制。而Body元素的典型应用包含序列的RPC调用和错误报告。 Body元素在编码上作为SOAP Envelope元素的一个直接子元素。如果包含Header元素,则Body元素必须直接跟随Header元素,否则Body元素必须是Envelope元素的第一直接子元素。 所有Body元素的直接子元素被成为SOAP Body条目,同时每一个Body条目都应当编码为SOAP Body元素里的一个独立元素。,SOAP Body,Body条目的编码规则包括:

14、 1一个Body条目由一个完整修饰的元素名来标识,所谓完整修饰的元素名是由一个命名空间URI和局部名来组成。SOAP Body元素的直接子元素可以是命名空间修饰的。 2SOAP encodingStyle属性可以被用来表明Body条目中使用的编码规则。 3SOAP定义了一个Body条目,用于报告错误的Fault条目。,SOAP错误,SOAP Fault元素是用于在SOAP消息中传输错误或状态信息。如果SOAP消息需要包含SOAP Fault元素的话,它必须作为一个Body条目出现,同时在Body元素内它必须至多出现一次。 SOAP Fault元素定义了如下子元素: 1faultcode元素是应

15、那些要提供一个算法上的机制来标识错误的软件的需要。faultcode必须在SOAP Fault元素中出现。SOAP定义了一个很小的SOAP错误代码的集合用于覆盖基本的SOAP错误。 2faultstring元素是为那些错误代码提供一个人可以读懂的错误解释,它不是为程序处理而设,提供一些解释该错误种类的信息。 3faultactor元素是为在SOAP消息路径中是谁引起了该错误的发生这一情况描述信息。faultactor属性的值是一个标识该源的一个URI。所谓并非作为SOAP消息最终接收者的应用程序必须在SOAP Fault元素中包含faultactor元素。而消息的最终接收者可以使用faulta

16、ctor元素来明确地指明是它生成了该错误。 4detail元素是用于传输与SOAP Body元素相关的应用程序特别的错误信息。如果Body元素中的内容不能被成功地处理的时候,它必须出现。它必须不能被用于传输属于Header条目的错误信息。,SOAP错误,若SOAP Fault元素中不出现detail元素,则表明其中的错误与Body元素的处理无关。这可以用于区分在错误情况下Body元素是否被SOAP的最终接受者处理过。 detail元素的所有直接子元素都被称为detail条目,同时每个detail条目都作为detail元素中的一个独立的元素进行编码。 detail条目的编码规则如下: 1一个detail条目由一个完整修饰的元素名来标识。detail元素的直接子元素可以是命名空间修饰的。 2SOAP encodingStyle属性可以被用来表明detail条目中使用的编码规则。,SOAP编码,简单类型 SOAP采用了在“XML Schema Part 2: Datatypes”的“Build-in datatypes”节中定义的所有类型,包括值

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号