当前位置: 首页 > 图文教程 > XML家族 > XML > XML模式:SOAP

XML
XML(一)
一日精通Ajax技术
使用XML文件记录操作日志
XMLHTTP对象封装技术
轻松使用DOM 的技巧和诀窍
如何生成XML数据
使用xml作为数据源,让asp:Menu类自由扩展菜单项
使用PHP和AJAX的XML编程(4)
使用PHP和AJAX的XML编程(3)
使用PHP和AJAX的XML编程(2)
使用PHP和AJAX的XML编程(1)
Web 2.0 编程思想:16条法则
如何用ASP生成XML数据文档
在SQLServer中用XQuery分解XML数据
巧用XML做多语言界面的FLASH
XML文档搜索使用小结
XML入门指南(1)XML简介
xml中的空格之完全解说
为何XML对Web服务很重要
XML数据库中几个容易混淆的概念

XML模式:SOAP


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 76 ::
收藏到网摘: n/a


简单对象访问协议(Simple Object Access Protocol,SOAP)实际上是一种 Web 服务技术,但 Web 服务中客户机和服务器之间的数据交换格式是通过灵活的 XML 模式实现的。
Web 服务的主要优点是客户机和服务器通过网络进行信息和数据交换的互操作性的层次。SOAP 标准使用 XML 以一种体系结构中立的格式来构造数据,定义数据类型和信息。
对于编程语言来说,只需要提供数据类型和需要在远程服务器上调用的函数名称即可。SOAP 库将用主机语言编写的信息和格式转化成 XML 格式的消息,其中包括调用的函数和提供的参数。
通过 W3C 的例子就可以了解 SOAP 的结构。调用远程 SOAP 函数 GetEndorsingBoarder() 的时候,客户机上的调用程序生成清单 1 所示的 XML 消息。 清单 1. 调用远程 SOAP 函数 GetEndorsingBoarder()
                                      
                <SOAP-ENV:Envelope   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">   <SOAP-ENV:Body>     <m:GetEndorsingBoarder xmlns:m="http://namespaces.snowboard-info.com">       <manufacturer>K2</manufacturer>       <model>Fatbob</model>     </m:GetEndorsingBoarder>   </SOAP-ENV:Body> </SOAP-ENV:Envelope>                          

SOAP 客户机发送的整个消息都放在 SOAP 信封中。信封的内容就是消息的详细内容。
被调用的函数显然是 GetEndorsingBoarder,它包括两个参数:manufacturer 和 model。由此可见,它把本地的可能采用二进制编码的字符串转化成了 XML 字符串。由于 XML 是平台独立的,主机使用 SOAP 系统不需要复杂的二进制编码和解码就可以交换消息。
服务器通过另一个 XML 编码的 SOAP 信封返回响应,这一次是函数的返回值。SOAP 请求的响应格式与函数相同,只不过在信封内容的后面加上了 Response,如清单 2 所示。
清单 2. SOAP 请求的响应
                                      
                <SOAP-ENV:Envelope   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">   <SOAP-ENV:Body>     <m:GetEndorsingBoarderResponse xmlns:m="http://namespaces.snowboard-info.com">       <endorsingBoarder>Chris Englesmann</endorsingBoarder>     </m:GetEndorsingBoarderResponse>   </SOAP-ENV:Body> </SOAP-ENV:Envelope>                          

通常不需要自己编写 SOAP 消息,SOAP 库会自动生成。不过 SOAP 信封的结构和简单性表明使用 SOAP 标准共享信息很简单。
SOAP 大大简化了交换消息和调用远程函数的工作。远程过程调用(Remote Procedure Call,RPC)标准需要复杂的方法来处理二进制数据的序列化,发送结构化更高的信息需要详细的声明和双向的信息转换。
使用 SOAP,XML 序列化大大降低了这种复杂性,使得跨平台、跨语言集成和数据交换更加简单。