用一句话来概括基本的观点就是“SOA不是WebService,WebService是目前最适合实现SOA的技术”。之所以SOA和WebService被混为一谈,最可能的原因了也就在于此吧。
WebService是就现在而言最适合实现SOA的一些技术的集合,事实上最近SOA的火爆在很大程度上归功于WebService标准的成熟和应用的普及为广泛的实现SOA架构提供了基础。下面让我们看看WebService中的各种协议是如何互相工作来满足SOA所需的特点的:
独立的功能实体:通过UDDI的目录查找,我们可以动态改变一个服务的提供方而无需影响客户端的应用程序配置。所有的访问都通过SOAP访问进行,只要WSDL接口封装良好,外界客户端是根本没有办法直接访问服务器端的数据的。
大数据量低频率访问:通过使用WSDL和基于文本(Literal)的SOAP请求,我们可以实现能一次性接收大量数据的接口。这里需要着重指出的是SOAP请求分文本方式和远程调用(RPC)两种方式,正如上文已经提到的,采用远程调用方式的SOAP请求并不符合这点要求。但是令人遗憾的是现有的大多数SOAP请求采用的仍然是远程调用(RPC)方式,在某些平台上,例如IBMWebSphere的早期版本,甚至没有提供文本方式的SOAP支持。
基于文本的消息传递:WebService所有的通讯是通过SOAP进行的,而SOAP是基于XML的,不同版本之间可以使用不同的DTD或者XMLSchema加以辨别和区分。因此只需要我们为不同的版本提供不同的处理就可以轻松实现版本控制的目标。