面向服务架构(Service Oriented Architecture,SOA)是一种组织和利用可能处于不同所有权范围控制下的分散功能的范式[2]。通常所说的SOA是一套设计、开发软件的原则和方法,它将应用程序的不同功能单元(即服务)通过定义良好的接口和协议联系起来,以便平台或系统中所构建的各类服务可以通过统一的方式进行交互。
简而言之,SOA是一种理念,即给定一种标准接口和一个约束接口的服务协议,任何业务应用只要满足服务协议,即可通过给定的标准接口进行通信和交互,实现对接。这与USB接口类似,任何支持通用串行总线(Universal Serial Bus,USB)通信协议的设备终端(如U盘、相机、鼠标等),都可以与具有USB端口的主机进行通信,传输数据。
SOA理念最初用于整合企业应用中分散的业务功能。企业在发展过程中,会不断形成新的业务系统,来满足业务流程信息化的需要。为解决不同系统,尤其是不同厂商间产品集成的问题,出现了不同的企业应用集成(Enterprise Application Integration,EAI)技术。各个系统可以通过消息中间件实现数据交换。各应用将自己的输出封装成消息,通过消息中间件进行发布,而需要数据的应用从消息中间件中获得消息即可,典型的产品是IBM的消息传输中间件产品(Message Queue,MQ)。通过这种消息的封装方式可以有效地集成企业内的各种系统,提高信息集成的水平。
由于缺乏消息的标准,容易造成对单一产品的依赖,而且不同消息中间件之间也不能直接交换数据。Java技术和J2EE的发展促成了基于J2EE的JCA(J2EE连接器架构)的诞生。JCA用于解决应用与应用之间的通信问题,使EAI领域有了相对开放统一的标准,成为EAI的第一个正式规范。
相对于EAI在系统建设后整合上发挥的作用,SOA偏重于事先的规范。SOA提出的标准接口和服务协议的理念,使基于SOA开发的服务具备松耦合的特征。松耦合在这里是指服务具有中立的接口定义,且没有强制绑定到特定的实现上,即服务之间有通用的对话方式;而紧耦合则是指应用程序之间不同组件的接口与其功能和结构紧密相连,当某一组件的功能发生变化时,其他相关部分也要进行调整。
对于企业来说,松耦合具有极大的便利性。在SOA架构下,由于服务的可重用性,当企业搭建新的应用系统时,可直接使用现有服务而无须再次开发,只需要对所需功能进行补充完善,从而充分利用现有的资源,降低成本。
SOA的消息集成是一种适应企业业务流程而进行的流程管理行为,是一种以服务为导向的集成,与EAI事后“打补丁”的方式,在思路上有明显的区别。基于SOA的集成方式比EAI的集成方式适用范围更广,更容易组合各个服务,响应业务的变化。(www.xing528.com)
因此,虽然同样能够解决企业集成的问题,在通常情况下,EAI和SOA的目标都是以现有的应用组合支持企业的业务流程,根本区别在于,EAI通过集成服务应用功能,以企业业务模型的方式展现现有的应用组合;SOA隐藏现有应用,突出一系列与应用无关的业务服务,在现有应用组合上突显企业的业务模型。
SOA在开始时针对Web服务,主要体现在软件应用层面。由于最初关注的问题不同,SOA当前所具有的含义与云计算强调的内容存在明显的差异。
SOA的实施在本质上是一种用于交换系统与系统之间信息的企业集成技术,更关心系统集成效率提升的问题。SOA实施技术允许消费者的软件应用在公共网络上调用服务,并提供一个软件层,实现对各种开发语言和平台的集成。因此,企业实施SOA可以统一企业架构中的系统接口,以节约资源,并在将来集成时提高速度或敏捷性。
云计算的重点在于通过资源的重新组合,来满足不同服务的需求。这可能会包含SOA内的软件服务,但云计算的使用涵盖了更多领域。从服务的角度而言,云计算扩展了服务的内涵,使IT功能可以像商品一样在市场上销售。从实际情况来看,一个企业可以同时部署SOA和云计算,也可以单独部署其中一项,或者借助SOA的方法将本地应用、私有云和公有云中的应用整合形成灵活的混合云方案。
云计算是SOA思想在系统和硬件层面的延伸。云计算平台借鉴其面向服务架构的思想,实现更大范围服务的模块化、流程化和松耦合,即通过通用接口的定义屏蔽底层硬件资源的区别,通过其他接口的定义实现数据交换的一致性,从而实现底层硬件资源和上层应用模块的自由调度。这样,企业可以通过资源和模块重组,快速完成整个业务系统的功能转变,满足不同的业务需要。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。