SOA(Service-oriented Architecture)面向服务的架构体系,是一个组件模型(也可以说是一个结构体系),SOA把不同的服务通过接口和契约组合在一起,从而实现粗粒度和松耦合的软件架构。
那么面向服务的架构体系,与我们之前学过的面向过程,面向对象,面向组件有什么不同呢?
首先,复用粒度更大:SOA的复用粒度是业务,直接映射业务实体,以便在业务级别实现企业集成,在粒度方面,我们经常使用的面对对象只能算是技术实现,与EJB的组件粒度相似或是更粗。
松耦合:SOA通过接口和契约把服务连接起来,这种服务之间的接口是中立的:接口不依赖于硬件、操作系统、编程语言,从而实现了服务之间的松耦合。而类的接口是面对实现了这个接口的类,特定于编程语言。
有效负荷大:面向服务的SOA以数据为中心,调用少,有效负荷大;面对对象的应用程序采用细粒度的交互模式,调用多,有效负荷小,增加了分布式程序的网络压力。
面向服务的软件架构,基本的颗粒是服务,而不论这个服务的实现应用了什么技术,运行在什么平台,从而把应用程序从技术中分离出来。使用SOA可以应对复杂的企业环境,容易继承企业遗留系统和新系统。
最近开始接触了SOA,感觉SOA站在了更高的角度对面企业系统,通过SOA也了解了很多新的概念:服务,分布计算,通信中间件,EAI,ESB等等。希望尽快能把这些知识应用在自己开发的系统里!