SOAP讲义.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:13 大小:25KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

免费试读已结束,剩余 3 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MSEWebServices及其应用Services及其应用WebServices本次课程内容SOAPWhatisSOAP简单对象访问协议SOAP(SimpleObjectAccessProtocol)()是在松散的、分布的环境中使用XML交换结构化的和类型是在松散的、分布的环境中使用交换结构化的和类型化的信息的一种简单协议。化的信息的一种简单协议。XML的标准化为跨平台之间的交流带来了极大的方便,而的标准化为跨平台之间的交流带来了极大的方便,的标准化为跨平台之间的交流带来了极大的方便SOAP的实质就是把这种交流的方式标准化了的实质就是把这种交流的方式标准化了SOAP本身并不定义任何应用语义,如编程模型或特定语义本身并不定义任何应用语义,本身并不定义任何应用语义实现,实现,它只定义了一种简单的以模块化的方式包装数据的机制。将数据/对象打包成对象打包成XML格式的数据将数据对象打包成格式的数据publicclassPerson{Stringname;intage;//方法的定义...}<Person><name>zhang3</name><age>20</age></Person>WhatisSOAPSOAP没有定义任何底层的传输协议没有定义任何底层的传输协议可以使用HTTP、FTP、SMTP或者、或者JMS,甚至是自定义协议可以使用、或者,来传输SOAP报文来传输报文一般使用HTTP协议一般使用协议一种协议,类似于:一种协议,类似于:IIOPforCORBAJRMPforRMI与上述协议的区别:与上述协议的区别:XMLisusedfordataencoding“text”basedprotocolvs.“binary”protocolSOAP的调用效率比较低的调用效率比较低HTTP不是有效率的通信协议不是有效率的通信协议XML需要额外的文件解析需要额外的文件解析选择SOAP的原因它的提出主要源于处理分布式计算中的RPC(远(它的提出主要源于处理分布式计算中的程过程调用)程过程调用)已有的分布式计算的解决方案,包括DCE,已有的分布式计算的解决方案,包括,DCOM,CORBA等等上述解决方案的缺点:上述解决方案的缺点:实现复杂,实现复杂,许多计算平台没有足够的能力来完成一个完整的DCOM或者或者CORBA方案整的或者方案它们必须使用自己特定的协议,它们必须使用自己特定的协议,这样造成混乱不能跨越防火墙,不能跨越防火墙,基本上是局域网技术选择SOAP的原因它是使用XML传送以文档为中心的消息以及远程过程调用的标准化封装机制。过程调用的标准化封装机制。SOAP很简单;它基本上是一个用XML信封作为很简单;有效负载的HTTPPOST。。SOAP定义了一个标准机制,使用SOAP报头和定义了一个标准机制,对操作或函数进行标准编码的消息。对操作或函数进行标准编码的消息。SOAP消息支持Web服务体系结构中的发布、查服务体系结构中的发布、找和绑定操作。找和绑定操作。SOAP不具有的内容整个技术标准基于文本,简单和扩展并重”整个技术标准基于文本,“简单和扩展并重”,但是有很多重要的事项没有被包括进来:是有很多重要的事项没有被包括进来:分布式垃圾回收消息的批处理对象引用对象的激活使用SOAP的XML消息传递使用SOAP的XML消息传递一个简单的SOAP请求响应请求/响应一个简单的请求publicinterfaceHello{publicStringsayHelloTo(Stringname);}假设有上述接口定义的服务存在客户端在远程调用sayHelloTo方法时,提供一个名字,方法时,提供一个名字,客户端在远程调用方法时期望返回一个字符串假设JavaRMI、CORBA、DCOM都不存在,开发者必都不存在,假设、、都不存在须负责将方法调用串行化,并把消息发给远程服务器。须负责将方法调用串行化,并把消息发给远程服务器。一个简单的方式是使用XML一个简单的方式是使用一个简单的SOAP请求响应请求/响应一个简单的请求<?xmlversion="1.0"?><Hello><sayHelloTo><name>John</name></sayHelloTo></Hello>XML打包请求用XML打包请求将接口名作为根结点方法和参数作为结点将请求发送给服务器不创建自己的TCP/IP消息,利用HTTP消息,利用不创建自己的消息将请求封装成HTTPPOST请求格式发出将请求封装成请求格式发出