IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  XML  >

SOAP技术与B2B应用集成

SOAP技术总结及其在InterOPStack中的作用

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

柴晓路, Chief System Architect

2003 年 7 月 01 日

本文总结了SOAP技术的各个组成部分,并描述了各个组件的协同的架构。同时,本文也结合WSDL、UDDI对SOAP在InterOP Stack技术体系中的作用作了一个简述,为以后的文章作一个铺垫。

在先前的系列文章中,已经系统地介绍了SOAP技术的各个组成部分:SOAP Message、SOAP Envelope、SOAP Encoding、SOAP RPC Presentation等。在这里,我就各个组成部分的协作和功能作一个总结。并就各个部分在B2B应用中的地位加以阐述。在本文的第二部分,将概述InterOP Stack整个技术体系与SOAP的关系及其协同,使大家能了解SOAP在整个体系中的功能及应用。在SOAP技术与B2B应用集成系列之后的文章系列中,我将会介绍WSDL和UDDI,到时候大家就能对整个InterOP Stack中各项技术的协作有一个更全面,更清楚的认识,并进一步认识到SOAP技术的重要性。

本文所引用的资源主要包括两类,一类用于解决B2B电子商务应用交互和集成的系列技术标准规范,他们与SOAP是一个不可分割的技术体系,包括UDDI、SOAP、WSDL、XML等,另一类是SOAP的开发软件包,包括Microsoft的SOAP软件包SOAPToolkit和Apache Project的SOAP Package。本文的最后给出了这些资源的链接,有兴趣的读者可以通过这些 资源链接找到所需的内容

SOAP技术总结

SOAP Message(SOAP消息)是用于传输应用入口调用信息的承载体,尤其是B2B应用调用。从根本上来看,SOAP Message是从发送方到接受方的一种传输方法。在B2B应用中,SOAP消息是B2B应用调用信息的基本承载体。

SOAP Envelope(SOAP信封)用于描述SOAP Message的结构,定义了一个以SOAP Header,SOAP Body为子主体的描述结构。SOAP Envelope是SOAP Message的信息框架。在B2B应用中,SOAP Envelope为B2B应用调用信息提供了一个基本的信息描述框架。

SOAP Header提供了一个可伸缩的机制用于在分散的模块化扩展SOAP消息,而通讯双方并不需要有预先的约定知识。在B2B应用中的典型的扩展例子可以是实现一些诸如认证、事务管理以及支付的Header条目。

SOAP Body元素提供一个简单的用于与消息的最终接收者交换必须处理的信息的机制。在SOAP Body中可以描述应用入口调用和响应的各种数据信息。在B2B应用中,Body元素的应用可以是B2B应用调用请求信息(如产品ID、产品数量等)和响应信息(如订单号、订单履行日期)及错误信息(如产品库存不够等)。

SOAP Encoding(SOAP遍序方法)是基于一个简单类型系统,而这个系统是程序语言、数据库和半结构数据中类型系统的公共特性的泛化。默认的SOAP Encoding定义和XML Schema是相容的,基本一致的。SOAP Encoding使类似整数(integer)、字符串(string)、数组(array)、结构(struct)等数据类型得以在SOAP消息中表示。SOAP Encoding为SOAP Header和SOAP Body中的数据表示提供了默认的方式,当然你也可以使用其他任意基于XML Schema的型/值描述系统。

SOAP RPC Presentation(SOAP RPC表示)是一个用于表示远端过程调用和响应的约定,利用XML的可扩展性和可伸缩性来包装和交换RPC调用。目前通过绑定各种已有的Internet协议,譬如HTTP、SMTP、POP3等,利用这些协议的调用响应机制,完成SOAP的调用和响应。具体地说,SOAP消息会作为这些协议的正文被发送。也就是说将SOAP协议包上了一个HTTP的外壳,在HTTP Network里面传输,当然SMTP、POP3也是同样。SOAP RPC Presentation是最终面向传输的绑定机制。

各个组件协作的组成可以参阅下图:



SOAP技术总结

如果把B2B应用利用InterOP Stack技术进行交互与程序员使用编程技术和资源进行应用开发相对比的话(尽管不是非常贴切)。SOAP就是各种编程语言中提供调用函数,调用服务,调用外部应用的标准调用方法和联编技术。WSDL就是使程序员理解调用界面的界面描述,即开发手册和参考手册。而UDDI则包含了函数、服务资源库,资源检索引擎等。

对于开发人员而言,他的流程一般是,通过UDDI Operator或UDDI Search Engine的Web界面在UDDI Registry(Public的或Private的UDDI Registry)上找到需要的Web Service,然后在UDDI Registry内,或通过UDDI Registry中的连接找到该Web Service的调用规范,该调用规范一般是使用WSDL描述,当然按照InterOP Stack系列技术的一贯惯例,该规范也可以使用任意另外一种相容的技术规范来描述。开发人员可以使用开发工具或通过手动方式理解该调用规范,然后在自己的应用中加上该调用规范定义的Web Service调用。然后开发出的应用就可以通过SOAP来调用该指定的Web Service了。

而对于具有自动集成相关应用的服务(Service)或应用(Application),它的流程一般是,应用户需求通过SOAP协议访问UDDI Operator或UDDI Registry找到需要的Web Service,UDDI Operator和UDDI Registry会通过SOAP协议响应Web Service的调用规范和调用规范的链接,应用程序得到使用WSDL描述的服务调用规范文本,通过解析该描述文本,自动生成本地调用接口绑定,并将所需的调用参数适当绑定并完成调用。

我们来考察一下这两种流程,第一种需要人去阅读WSDL文本,相对而言对开发人员要求比较高,而且造成不必要的麻烦,因为WSDL本来就是给计算机来阅读的。而第二种流程中,由应用来自动完成参数的绑定,这对应用程序的AI要求又过高了。因此建议在实施Web Service架构,使用InterOP Stack技术的时候,应当使用开发工具完成WSDL语言的解析并生成具体开发语言中的调用界面,比如VB中的RPC类型的Interface,Java中的方法形式的Interface等等。最后由开发人员来完成参数的绑定。



从上面的分析中我们可以发现,SOAP是整个体系的基础,是服务调用的基本协议。因此一个SOAP消息的传输网络对于Web Service体系的有效建设是多么必要。





回页首


结语

SOAP技术与B2B应用集成的系列文章到这里就告一段落了,希望大家通过阅读本系列的文章对SOAP技术能有一个全面的认识,我将在以后的文章中介绍Web Service的另一个基础技术WSDL,以及Web Service的协作注册技术UDDI。希望大家能通过本专栏对Web Service/InterOP Stack这一今天的新兴技术,明天的主流技术有一个全面的认识。



参考资料



关于作者

柴晓路:上海得易电子商务技术有限公司首席系统架构师、XML技术顾问。2000年获复旦大学计算机科学硕士学位,曾在国际计算机科学学术会议(ICSC)、中国XML技术研讨会(北京)、计算机科学期刊等各类国际、国内重要会议与期刊上发表论文多篇。其专长为 XML与数据交换、数据库、面向对象技术等。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款