| 新技术:“标准协议”描绘Web服务(1) |
 |
 |
|
2002-09-20 23:23
作者: 柴晓路
转自:
开放系统世界
|
| |
我们知道,Web Services是一个全新的技术架构,在这个技术架构中,为了支持技术架构的各种特性,各种各样的技术规范被不断地开发出来。整个Web Services的技术系列被称为是“Web Services Stack”,他们就像一个堆栈那样,按照这样的方式共存协作着。
Web Services Stack”的示范一。底部的两层是已经定义好的、并且广泛使用的传输层和网络层的标准IP、HTTP、SMTP等。中间部分是目前开发的Web服务的相关标准协议,包括服务调用协议SOAP、服务描述协议WSDL和服务发现协议UDDI、WS-Inspection,以及服务工作流描述语言WSFL、Web服务的安全协议和路由协议等。右边部分是各个协议层的公用机制,这些机制一般由外部的正交机制来完成。
本文我将针对中间部分Web服务的相关标准协议进行介绍。
调用Web服务
SOAP(Simple Object Access Protocol)为在一个松散及分布环境中使用XML对等地交换结构化和类型化的信息,提供了一个简单、且轻量级的机制。SOAP本身并不定义任何应用语义,如编程模型或特定语义实现,它只定义了一种简单的机制,通过一个模块化的包装模型和对模块中特定格式编码的数据重编码机制来表示应用语义。SOAP的这项能力使得它可以被很多种类的系统用于从消息系统到RPC(Remote Procedure Call)的延伸。
SOAP由四部分组成:
1.SOAP Envelope (SOAP信封),构造定义了一个整体的表示框架。它用于表示消息(Message)中是什么,谁应当处理它,以及这是可选的、还是强制的。所谓可选的就是可以由目标应用程序选择是否处理;强制则是表明必须处理,如果无法处理则需要返回错误。
2.SOAP Encoding rules (SOAP编码规则)定义了一个数据的编序机制。通过这样一个编序机制来定义应用程序中需要使用的数据类型,并可用于交换由这些应用程序定义的数据类型所衍生的实例。例如可能应订单服务的需要,使用SOAP编序规则定义订单的数据类型,并在订单生成的客户端与订单服务之间交换订单实例。目前SOAP编码规则已经渐渐被规范化为使用XML Schema作为数据模型的标准定义方式。
3.SOAP RPC Representation (SOAP RPC表示)定义了一个用于表示远端过程调用和响应的约定。也就是定义了如果使用SOAP消息来表示传统的RPC。
4.SOAP Binding (SOAP绑定)定义了一个使用底层传输协议(比如HTTP、SMTP等)来完成在结点间交换SOAP消息的约定。
为了简化SOAP的复杂度,这四部分在功能上是正交的。特别是信封和编码规则是被定义在不同的XML命名空间(Namespace)中,这样有利于通过使用模块化的设计获得实现的简明性。SOAP目前的版本是1.2,在“http://www.w3.org/2000/xp/Group/”可获取更详细的信息。
从根本上来看,SOAP消息是从发送方到接受方的一种传输方法。SOAP消息一般会和实现模式相结合,例如请求/响应的来回消息模式。SOAP的实现可以优化特殊网络系统或网络协议的特有特征。例如,通过SOAP HTTP绑定,就可以将SOAP响应消息通过HTTP响应来传输,此时,请求和响应使用同一个HTTP连接。
然而,无论SOAP与哪种协议绑定,消息都可以通过消息路径(Message Path)来指定路线发送。消息路径机制使消息在到达最终目的地之前,可以在一个或多个中间件上处理。这是一个非常有用且适合分布式计算环境的机制。例如,一个申请订单的消息可以首先到达账户服务(AccountAuthentic ation Service)确认身份获取权限,其次到达产品价格查询服务(ProductQuote Service)获得所需产品的最新价格,然后进入订单服务(PurchaseOrder Service),根据所得的最新价格产生订单并响应调用者。通过这样一种机制可以实现基于模块化服务设计基础的B2B商务流程实现,通过低耦合模块的统一集成获得良好的系统体系和功能实现。
每个处理SOAP的结点正是表现为一个Web服务,这些Web服务通过SOAP消息完成了交互和远程调用,SOAP为调用Web服务提供了一个基本的消息调用机制。
|
| |
|
 |
|