http://www.ibm.com/developerworks/cn/webservices/ws-whichwsdl/
对比服务的两类方式:一类是同步或者远程过程调用(RPC)方式;另一类是异步或者消息(文档)方式
同步服务:同步服务的客户端将它们的请求表示为带变量的方法调用,方法返回一个包含返回值的响应。这意味着,当客户端发送一个请求时,它会首先等待响应消息,然后才会继续向下运行。这就使得整个调用不是完全成功就是完全失败。加入某个操作由于某种原因不能成功,则其他所有的依赖操作也将失败。由于在客户端和服务之间的双向通信,RPC类型的服务在客户端和服务提供者之间需要紧耦合的通信模式。当应用程序具有下列特性时,通常将用到RPC类型的Web Service:
- 调用服务的客户端需要一个立即的响应
- 客户端与服务以反复对话的方式进行写作
典型RPC类型的同步服务例子包括:返回特定股票的当前价格,提供特定地区的当前天气情况
异步服务:异步服务是文档类型的服务或消息驱动类型的服务。当客户端调用消息类型的服务时,客户端通常发送整个文档,诸如订购单,而不是单独发送一些参数。服务收到整个文档后,会处理它,然后返回(也可能不返回)一个结果消息。调用异步服务的客户端在继续运行应用程序的其他部分之前,不需要等待响应,从服务发出的响应可以在数小时甚至数天后才出现。
在松耦合环境中,异步交互(消息)是一个核心设计模式。消息使得应用所处的松耦合环境既不需要了解如何进行通信的技术细节,也不需要了解其他应用程序的借口。这使得任何两个流程之间的通信操作可以是自包含的、独立的工作单元。当应用程序具有些列特性时,通常需要使用文档类型的Web Service:
- 客户端不需要(不期待)立即的响应。
- 服务是面向文档的(客户端通常发送一个完整的文档,例如订购单,而不是发送一些离散参数)。
文档类型的Web Service 的例子包括订购单处理、响应客户的询价请求、响应一个特定顾客的订购等。在所有这些情况中,客户端向Web Service发送一个完整的文档,诸如订购单,然后假定Web Service以某种方式正在处理,但是客户并不需要一个立即的回复。