面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

  传统统的两种企业构架:面向功能的企业构架和面向过程的企业构架,这两种企业架构所采用的技术基本上是紧密耦合的,这种架构方法将应用程序功能的代码通常与功能本身的代码混合在一起,带来的后果就是更改一部分代码的时候将对使用该代码的代码具有重大影响,造成系统的复杂性提高,并增加维护系统的成本,而且还使重新使用应用程序功能变得较困难,这严重影响了企业系统的稳定性。而SOA架构以其高度开放型和可重用性、灵活性完全避免了传统企业架构方法所带来的问题。

  SOA的特征是:独立的功能实体。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力,以及实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理,消息队列,冗余部署和集群系统在SOA中都起到至关重要的作用。大数据量低频率访问。对于传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客户端和服务器来回很多次函数调用才能完成,这些调用在Internet环境下往往是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。基于文本的消息传递。SOA系统采用基于文本而非二进制的消息传递方式。在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端。数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理想的兼容性。

一个使用SOA的企业,可以使用一组现有的应用来创建一个供应链复合应用,这些现有的应用通过标准接口来提供功能。为了实现SOA,企业需要一个服务架构,图2显示了一个例子:

SOA架构下的EDA soa 架构_SOA

 

服务消费者可以通过发送消息来调用服务。这些消息由一个服务总线转换后发送给适当的服务实现。这种服务架构可以提供一个业务规则引擎,该引擎容许业务规则被合并在一个服务里或多个服务里。这种架构也提供了一个服务管理基础,用来管理服务,类似审核,列表,日志等功能。此外,该架构给企业提供了灵活的业务流程,更好地处理控制请求,例如SOX,并且可以在不影响其他服务的情况下更改某项服务。

  SOA目标是整合业务过程,必须具备下面要求:异构性,横跨现有应用系统;可伸缩性,根据环境变化非常容易地能够提升系统性能;适用性,将应用错误和通讯错误隔离开来,不至于因为一点失败导致全局混乱;分布式,跨部门跨地域交互操作;机动性,允许各个部门以最小的代价很容易更改与应用相关的设计和实现,也就是各个部门系统相互独立,没有耦合性;可见性,可以对各种处理和服务运行情况进行管理监视。SOA是一种松散耦合的软件体系结构,在这种体系结构中,由各自独立可复用的服务去构成系统功能。这些服务向外公布有意义明确的接口,软件的开发是通过对这些实现透明的接口的调用来完成。SOA可以降低开发成本,提高系统集成度和响应速度等,还能帮助解决因为系统升级带来的烦恼。未来SOA构架下的企业软件就像是一个不断进化的生态过程,某些“服务(业务组件)”不断地局部升级,新的“服务”不断地加入,只有这样的系统才能真正做到实时企业,快速适应业务变化。

  服务导向架构并不是一种全新的解决方案;相反,SOA是技术与架构的自然进化。系统架构一直在不断进步,与商业保持高度一致。系统设计师与商家很早就认识到将技术与商业流程相协调的重要性,包括充分应用并合理化技术资源,以及为商业提供更好的支持。SOA也在一定程度上源于早已有之的企业架构理论。企业架构对技术进行评估,但是更重要的是,它关注整个企业和全部的商业流程并提供了做出技术决策的背景信息。SOA工具则融合了互联网技术,如HTTP和XML,以及综合技术,如消息总线、转译技术和连接技术。