早在20世纪90年代中期,Gartner就提出了SOA(service-oriented
architecture,面向服务架构)的概念,但当时的技术与环境还无法使SOA走向应用,所以SOA的概念很早就出现了,但却没有受到人们的关注。直到21世纪,随着XML与Web
Service 等技术的发展,SOA才得以从概念逐渐转向于应用,才逐渐走入人们的视野。
SOA最初的定义是由Gartner公司给出的,但到目前为止,由于各厂商、个人和专家对SOA的理解不同,所以出现了很多关于SOA的定义:
Gartner对SOA的定义为“客户端/服务器的软件设计方法,一项应用由软件服务和软件服务使用者组成……SOA与大多数通用的客户端/服务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标准接口。”
Service-architecture.com将SOA定义为:“本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。”
Looselycoupled.com将SOA定义为:“按需连接资源的系统。在SOA中,资源被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传统的系统结构相比,SOA规定了资源间更为灵活的松散耦合关系。”
虽然到目前为止,关于SOA还没有一个统一的、被广泛认可的定义。但SOA的核心思想却是固定的:
- SOA是一种软件架构思想,并不是一种产品。
- SOA的重点是面向服务,此服务包括企业的内部与外部的每一个业务细节,比如企业中财务应收发票的处理就是一个服务。SOA的思想是把这些服务从复杂的环境中独立出来——组件化封装,然后通过标准的接口使不同的服务之间相互调用。在此过程中需注意以下两点:
- 每个服务有一个明确的界限,其他服务只能通过接口来调用服务。
- 每个服务是独立自主的,每个服务不必依赖于其他的系统。
SOA的实现:
要真正的实现SOA,市场上必须要有以下四个因素 :服务消费者、服务提供者、服务注册中心、合同。

图 1实现SOA的四个要素
《SOA治理:动成长企业的关键要素》,Ben
Brauer(Hp).Sean Kline(Systinet)
- 服务提供者:通俗的讲就是我们常说的软件供应商,它通过在服务注册中心将提供的服务与要求的合同注册并发布出来。
- 服务消费者:即企业与其他消费服务的组织,它们通过服务注册中心寻找符合自身的合同与服务。
- 服务注册中心:相当于一个服务信息的数据库,为服务提供者与服务消费者提供一个平台,使两者可以各取所需,同时服务注册中心要有一个通用的标准,使服务提供商提供的服务符合这个标准,这样,服务消费者使用的服务才可以跨跃不同的服务提供商。
- 合同:是服务提供商与服务消费者之间的一种协议。
目前,SOA的真正应用时间还很短,还没有统一的标准,服务注册中心也没有形成,环境还不太成熟,所以目前关注更多的是单个企业的建设。
SOA的关键技术:
目前,实现SOA的技术很多,比如Web Services、CORBA等,这些技术一个很重要的共同点就是支持在不同的不同平台上、以不同语言编写的各种程序以基于标准的方式相互通信。下面我们主要介绍其中的主流技术:
1)XML
XML是Extensible Markup Language的简写,一种扩展性标识语言。
XML语言有很多的优势主要表现在:
- XML可以广泛的运用于web的任何地方;
- XML可以满足网络应用的需求;
- 使用XML将使编程更加简单;
- XML便于学习和创建;
- XML代码将清晰和便于阅读理解;
其中,XML语言在对SOA的支持优势上主要体现为:
不同的平台,同一种语言
可移植性在于企业可以定义标签和属性。“读取”XML文档无需特殊的库或应用程序服务器(但需要将开发环境配置为支持 XML)。XML文档是纯文本文件,因此不需要专用的软件对其进行解释,这一点与大多数二进制文件不同。这意味着企业可以使用记事本程序打开和编辑XML文件。
在XML语言出现之前,企业如果想要对系统或数据进行整合,只有少数几种方案可以选择,其中比较普遍的一种方案就是创建数据中心,将系统双方的数据格式进行转换,从而实现系统之间的通讯,但这种方案成本高,可维护性差。而在XML出现之后,使系统或数据之间的通讯变得简单,这样,企业就可以在几种(不兼容的)硬件或软件平台或应用程序之间交换大量的数据。
接口标准、简单
程序员在对接口进行编程时经常将它称之为协议。从编程的角度出发,接口在没有暴露实现的情况下提供了编程结构。如果使用DTD(文件类型定义)和大纲(schema),那么XML就有类似的特性。DTD和大纲都用来描述XML文档的结构以及XML文档的建立规则。可以用一个(或者多个)相关DTD(或者大纲)组织这样的规则集合,我们称之为XML文法。
XML文法不仅可以用于应用程序之间通信的标准化,还可以为开发者提供一个接口协议。换句话说,开发者在创建一个需要使用XML文档结构的应用程序时,他不需要知道文档是如何实现的(即实际的XML文档)。DTD以及大纲描述了文档的结构,它们可以作为开发的接口协议。对DTD的任何改动同时也改变了协议。
封装
封装是XML重要特性之一。从本质上来说,封装指的是获得一个或者多个数据块(chunks of data)并把它们集合成一个简单对象(而不是几个独立对象)的概念。封装与集合(aggregation)类似,但是它们之间有一个重要的差别,即封装一般意味着它没有外部依赖性。这样,企业就可以把每一个服务独立出来,单独封装,达到SOA的目的。
2)SOAP
简单对象访问协议 (Simple Object Access Protocol) 是一个基于XML的,它用于在分布式环境中发送消息,并执行远程过程调用。简单地讲,就是允许Java对象和COM对象在分布式、分散的、
基于Web的环境中彼此通话。更一般地讲,SOAP允许任何类型的对象(或代码)在任何平台上,以任何一种语言相互通信。

图 2 SOAP封套图
3)Web Service
Web Service微软提出的基于互联网的开发模型,一经提出即收到业界的广泛推从。
概念一:
Web Services是自包含的、模块化的应用程序,它可以在网络(通常为Web)中被描述、发布、查找以及调用。
概念二:
Web Services是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。
概念三:
所谓Web服务,它是指由企业发布的完成其特别商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项应用服务。(UDDI规范2.0)
Web Services应用是由基于Web的一组服务组成,是面向对象分析与设计(OOAD)的一种合理发展(logical evolution),同时也是电子商务解决方案中,面向体系结构、设计、实现与部署而采用的组件化的合理发展(logical
evolution of components geared towards the architecture,design,implementation,
and deployment of e-business
solutions)。这两种方式在复杂的大型系统中经受住了考验。和面向对象系统一样,封装、消息传递、动态绑定、服务描述和查询也是Web
Services中的基本概念,而且,Web Services另外一个基本概念就是:所有东西都是服务,这些服务发布一个API供网络中的其他服务使用,并且封装了实现细节。
其他与Web Services相关的技术还有WSDL、UUDI等。
4)消息代理
消息代理(Message Broker)是一种在数据源与目的地之间移动数据使信息处理流畅的软件技术,数据源与目的地包括已有的应用、文件、数据库、对象(如CORBA、COM)、硬拷贝输出及Web客户端等。
企业分布式环境下,业务单位四处散布,包罗万象的应用运行在不同的软、硬件平台上,消息代理主要提供应用集成所必须的数据的递送、收集、翻译、过滤、映射和路由等功能,屏蔽不同的硬件平台、数据库、消息格式、通信协议之间的鸿沟与差异,提供应用到应用之间的高效、便捷的通信能力。
5)ESB
ESB(Enterprise Service Bus,企业服务总线)是从EAI的基础上发展而来的,ESB可以提供一种低成本的应用集成方案,它以Web服务标准为基础,为SOA提供了一种不错的实现方法。
IBM 的标准与开放源代码副总裁 Robert Sutor 在其博客中描述了 ESB 必须体现的八个定义原则:
通用性——提供跨整个扩展企业环境的连接层
异构性——提供面向消息的多平台、多协议和多 API 支持层,能够整合异构系统
互操作性——提供对开放协议的支持,支持来自多个供应商的系统之间的互操作
增量集成——提供按需求动态扩展系统的能力
服务质量——提供各种服务质量,如安全、性能、可靠性、可伸缩性等等
替换——使用开放API以确保能够替换供应商的实现
事件定位——提供将生成业务事件的应用程序和提交与响应这些事件的应用程序分离的能力
服务定位——通过遵循 SOA 设计方法论,以将关键功能抽象为服务的方式来提供分离应用的功能。
目前,业界内厂商对ESB的认识不同,一部分厂商认为ESB可以是一种独立的产品,另外一部分厂商认为其是一个概念,需要和其他产品集成才能使用,还有一部分厂商认为其只是一种服务。多数厂商都认为ESB并不是实现SOA的必需品,但可以使企业更快速、更准确的实现SOA。
以上是目前企业架构SOA所使用的主流技术,但e-works认为随着软件技术的不断发展成熟,未来将会出现更加完善、更加成熟的SOA软件技术。
SOA的优势:
实现企业IT闲置资产的重用
实施SOA,企业必然需要对自身所用的信息系统进行重新的分类,这势必会使企业全面的了解自身的信息系统,然后针对企业的服务寻找适合的IT支持。以前由于种种原因被闲置的企业IT资产,企业必然会重新考虑,挖掘到闲置资产的价值,从而使闲置的IT资产得以重用。另外,SOA可以将旧的系统封装起来,成为Web
Services得以重新利用。
降低企业的IT投资成本
以往多数企业在建设企业的IT系统时是从项目的角度出发的,比如ERP项目、CRM项目等,事后等企业的IT系统越来越多的时候,才会考虑系统的集成问题,但这时候往往集成的难度就很大了。而SOA要求企业在建设IT系统之初就要考虑这些问题,也就是要考虑服务之间的接口问题。这样就会使企业的IT的成本大大缩减。
同时,SOA将改变以往的软件购买模式,目前的多数企业在购买软件时往往是是成熟性软件,需一个模块或一个系统的购买,企业在购买时往往无法将那些企业不需要的功能剔除出去,这样,企业就不得不为此多付出资金成本、培训成本等许多不必要的成本,而SOA则可以帮助企业实现真正的按需购买,企业需要什么功能就购买相应的服务,帮助企业避免不必要的支出。
实现企业的动态变革
SOA使企业的IT人员不必太多的关心企业IT系统的底层技术,而更多的去考虑企业的业务以及业务与IT的接合。同时,以往企业在开发系统时,在重复功能上浪费了大量的人力与财力,同时系统在开发完成后,如果企业业务变化,系统将很难更改或者更改的成本很高。而SOA面对的是一个个独立的服务,服务之间可以通过标准接口来相互调用,这样企业在重复功能上就可以直接通过接口调用,而不必去重新开发。企业的业务发生变化时,只需要修改相对应的服务即可,降低了修改的难度与复杂度,保证了企业的IT系统的动态变化。
|