SOA(Service Oriented Architecture),自2004年以来似乎成为一个热点。当然,SOA的概念自1996年就被提出来了。那么,什么样的系统与架构能称之为为SOA呢?实现SOA目的何在?SOA关注的重点在哪里?如何实现基于SOA的软件系统?
说到SOA,不能不提到另一个概念——RPC(Remote Procedure Call),分布式软件系统的产生自然对跨越进程边界的通信提出了自己的需求,特别是这些进程处于在物理上分离的机器之中时。通信要进行,就必须有协议来支持,因此,关于不同协议的标准也纷纷出现了。由于协议对于平台的依赖性存在着巨大的商业利益,协议的争夺也就成为了标准的争夺,比如COM与CORBAR之间的战争。问题是这些标准既是平台相关的,又是基于二进制的,所以基于不同标准所构建的系统想要做到互联互通谈何容易。但是事物的发展是不会为几个利益集团所左右的,人类社会对于沟通与交流的渴望从未停止过,同时,这也是文明进步的一种体现,因此,要有把异构系统整合在一起的能力,系统间交换与通信协议必须是平台无关的。从这个角度来讲,SOA是一个路标,指出了系统间交互协议设计的方向,所以,有人一提起SOA就想到Web Service并不奇怪。
可以肯定地说,SOA并不等于Web Service,但至少从目前来看,SOA少不了Web Service,尽管它可能是一个相互妥协的产物;尽管它可能是一个效率不高的协议。Web Service的三大基础协议(SOAP、UDDI、WSDL)可以被理解成实现三方通信的SOA,但是SOA的本质并不需要这的实现方式。