【IT168 技术文章】
A system for linking resources on demand. In an SOA, resources are made available to other participants in the network as independent services that are accessed in a standardized way. This provides for more flexible loose coupling of resources than in tradITional systems architectures.
在企业级应用开发领域,谈论最多的一个词,恐怕非SOA(Service-Oriented ArchITecture,面向服务架构),然而在这股技术热潮的背后,各个厂家和个人对SOA的定义和理解不尽相同。Looselycoupled.com,将SOA定义为:“按需连接资源的系统。在SOA中,资源被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传统的系统结构相比,SOA规定了资源间更为灵活的松散耦合关系。”这段话的英文原文是:A system for linking resources on demand. In an SOA, resources are made available to other participants in the network as independent services that are accessed in a standardized way. This provides for more flexible loose coupling of resources than in traditional systems architectures.
个人认为这是比较能够反映SOA本质的一个描述,该定义从资源的连接性的角度来阐述SOA。粗粒度松耦合的系统,精确定义、封装完善、独立标准的接口,以及通用的通信模型等这些架构特征都是为了实现一个按需连接资源的系统。为什么企业需要一个按需连接资源的系统?IDC的高层曾经说SOA 是一种彻底实现企业系统整合和业务灵动的方法。实现企业的系统整合,是指彻底消除企业的信息孤岛,使企业IT系统各部分的连接简单而容易;彻底的业务灵动的方法,则是打散各个业务系统的功能,抽取独立的功能模块成精确定义的服务,以服务为单元进行业务自由组合。下文尝试去理解SOA描述的奇妙世界。
首先一个问题,怎么样的系统算是按需连接资源的系统呢?资源定义为可以通过标准方式访问的独立服务。按需连接资源的系统这个系统架构的理解可以分解成两个比较基本的问题:
(1) 服务的连接性问题
(2) 服务单元的划分问题
下面首先考虑服务的连接性问题,根据网上的资料阐述,SOA的连接性是一种任意互连(any-to-any connectivITy)。虽然SOA没有定义任意具体的实现,按需互连的说法,很容易让人想起TCP/IP系统,不妨分析一下TCP/IP系统按需互连的效果。
(1) 网络上增加一台机器/设备,只需要接上网线,配上IP、子网掩码、DNS等。
(2) 网络上的DNS设备,可以根据域名查找到具体某一个机器的情况
(3) 存在专门路由的网元设备,对网络消息进行路由,使网络上的一台机器能和任意一台其他机器通信。
这些特性,映射到SOA中,是非常诱人的“任意互连”
(1) 架构中增加一个服务,只需要将服务部署到某台服务器之后做一些配置SOA
(2) 架构中存在目录服务,可以查询、获取具体某个服务的具体信息SOA
(3) 架构中可以服务的使用者(也可以是一个服务)可以请求和使用任一个服务。SOA
下面的图说明的是目前大多数企业IT系统网络互联的情况,可以看到在网络的底层是可以自由互连的,然而,在业务层,由于没有使用统一的业务描述协议和通用的通信模型而无法自由互连。

SOA定义的按需连接资源,不仅仅是IP层,其目的是希望业务层也能自由连接。为了实现这一目标,整个业务层都将被标准化。
在SOA的宏伟构想,可以解读成以服务为单位、构造一个类似于TCP/IP自由互连的业务网络。其本质是构建一个开放的分布的适合任意符合服务接口的服务实现系统接入的业务网络。正如TCP/IP层的路由器是工作在IP层,SOA业务网络是工作在SOAP层进行连接管理、寻址、和路由。

在TCP/IP的网络中存在专职进行消息路由的设备,集线器、路由器等。在SOA的网络架构中也可能存在专门针对服务消息进行路由的设备,目前扮演这个角色的是宣传中的SOA的核心设备企业服务总线(Enterprise Service Bus,ESB),JBI规范的领导Ron Ten-Hove解释说:
· 服务容器常常把各种IT资产连接到ESB上,
ESB:
· 具有可靠的消息系统,以供服务容器交互。
· 提供消息转换服务。
· 提供消息路由服务。
· 为控制对服务的访问提供安全功能。
· 可被集中管理,虽然它是一个分布式系统。
· 允许对服务的渐进式改变,而不需要停机或者其他对系统可用性的干扰。
在不少技术人员对集中式的、单点的ESB存在抵御的心理,事实上,ESB不一定是集中式的、单点的,正如在TCP/IP网络中路由器不是集中式的、单点的一样。