探索中国CIO人才现状 | 第四季调研报告
基于SOA的企业应用系统集成研究
2013-12-09  作者:CIO时代网 

  随着企业信息化建设的不断加强和计算机技术的快速发展,以及互联网的应用,加强了企业内部和企业之间的信息交流,由于目前我国很多大中型企业部署的应用系统是由不同的企业生产的,这些产品在开发时采用不同的编程语言和实现平台,采用的数据交换格式和通信协议存在差异,因而使得企业在不同系统间实现信息互相传递与共享非常困难,对原有应用系统与实施的新应用系统不能进行有效集成,在企业中形成了一个个“信息孤岛”。


  传统的企业应用集成方法按集成层次分为数据集成、业务流程集成和面向服务的集成。其中数据集成实现了数据的规范化,但是不是其他应用能共享的格式,扩展困难;业务流程集成通过中间件技术集成了多个业务流程层,但是它只在企业内部进行,不适应企业间业务流程组合。这些集成方法不具备灵活性,而且集成方法复杂、成本高。现在企业竞争激烈,企业业务在快速增长并不断变化,要适应这种发展必须采取一种脱离面向技术的解决方案,在企业新增应用系统时,不需要再从底层技术去开发。基于面向服务架构(ServiceOrientedArchitecture,SOA)的企业应用系统集成,提供了一个统一的、标准化的、可配置的业务集成平台,可以解决不同类型的异构系统之间难以有效整合的问题。


  1.1SOA的技术基础与Web服务


  SOA是一种体系架构,它说明了一种设计思想,那么在具体应用中需要用现有的技术来实现SOA。现阶段,在软件的实现上,SOA的服务主要利用Web服务(WebServices)实现;在服务的编排方面,利用业务过程执行语言(BusinessProcessExeutionLanguage,BPEL)实现;在服务的通讯方面,利用企业服务总线(EnterpriseServiceBus,ESB)实现。所以,我们一般认为WebServices、BPEL和ESB是实现SOA的技术基础。


  目前实现SOA的最主要手段是Web服务。Web服务是基于XML和HTTPS的一种服务,其通信协议主要基于SOAP,用WSDL进行服务描述,通过UDDI来发现和获得服务的元数据,它能在现有各种不同平台的基础上构建一个通用的、与平台无关、与语言无关的技术层。各种不同平台的应用程序都可以通过这个技术层来实现彼此间的信息交换和集成。


  1.2Web服务的体系结构


  Web服务是一种部署在Web上的对象或组件,它是基于服务提供者、服务请求者和服务注册中心3个角色并由发布、查找、绑定和调用3个动作构建。


  在Web的服务体系中,3个角色的作用分别为:服务注册中心用于注册已经发布的服务提供者,对其分类,并提供搜索服务;服务请求者是服务的使用者,它可以通过服务注册中心来寻找自己所需要的服务,然后调用该服务;服务提供者是服务的所有者,它发布自己的服务,对使用自身服务的请求进行响应。


  3个动作的作用分别为:发布是使服务提供者向服务注册中心注册自己的功能及访问接口;查找是服务请求者向服务注册中心查找特定种类的服务;绑定和调用是使服务请求者能够使用服务提供者所提供的服务。


  1.3Web服务的核心技术


  1.3.1XML


  可扩展标记语言(ExtensibleMarkupLanguage,XML)是W3C制定的可扩展的文本标记语言,它可以作为定义数据描述语言的语言,如标记语法或词汇、交换格式和通信协议,用来实现企业内部和企业之间的电子数据交换。它具有内容与形式分离、良好的扩展性、良好的跨平台移植性和良好的自描述性等特点,而且XML是Web服务平台中表示数据的基本格式,与HTTP甲构成了Web服务的主要技术基础。


  1.3.2WSDL


  Web服务描述语言(WebServicesDescriptionLanguage,WSDL)是描述服务的基础规范,描述了Web服务的调用接口。WSDL是由Microsoft和IBM合作开发的一种基于XML的协议语言,用来定义Web服务并描述如何访问这些服务;它是基于XML的语言,它用于描述Web服务及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。


  WSDL为各种各样的消息交互模式提供了支持,它支持没有响应的单向输入消息,请求伸应,以及带响应或不带响应的单向发送,其中后两种模式使服务能够指定它需要的其他服务。


  1.3.3SOAP


  简单对象访问协议(SimpleObjectAccessProtocol,SOAP)用于WebService调用XML消息。SOAP是一个基于XML的,用于分布式计算环境下数据交换的简单、轻量级协议。Web服务使用SOAP作为它的标准通信协议。因为SOA是平台无关和厂商无关的标准,因此尽管SOA并不必须使用SOAP,但在带有单独IT基础架构的合作伙伴之间的松耦合互操作中SOAP仍然是支持服务调用的最好方法。


  1.3.4UDDI


  统一描述、发现和集成协议(UniversalDescription,DiscoveryandIntegration,UDDI)是Web服务架构下的服务描述、发现和集成机制。UDDI规范定义了一个发布和发现有关Web服务信息的标准方法,UDDI相当于Web服务在Internet中的注册中心,所有在其中注册了的Web服务都可以被整个Internet中的客户程序所知道。UDDI指定了一种机制,对于Web服务提供商来说,该机制可以公布Web服务的存在,对于Web服务的使用者来说,该机制可以定位感兴趣的Web服务。


  UDDl分为3种类型:(1)私有UDDI服务注册中心,它描述了一个组织内部可见的服务;(2)专有UDDI服务注册中心,它描述了一个或多个组织可见的服务;(3)公有UDDI服务注册中心,它描述了公共可见的服务。在具体应用中可以根据需要选择不同种类的UDDI服务注册中心。


  2面向服务的应用集成模型框架


  a.表示层。


  该层由企业门户和企业应用程序构成。企业门户为客户提供服务,向不同的客户提供不同的访问方式和认证授权,通过调用不同的Web服务,客户得到自己需要的信息;企业应用程序是企业内部使用的应用程序系统。


  b.业务层。


  该层是企业所有业务的逻辑集合,它是通过面向服务的业务流程执行语言(WS—BPEL语言)进行业务流程描述。其中OASIS标准组织已将BusinessProcessExecutionLanguage(BPEL)定义为基于标准的方法,使用该方法可以编排由服务构成的业务流程。2007年,WS—BPEL2.0被批准为标准语言。作为一种执行语言,WS—BPEL定义了如何表示业务流程中的活动,以及流控制逻辑、数据、消息相关性和异常处理等。


  业务层将存在的Web服务操作连接,按照特定的规则统一描述到某个业务流程中,将粗粒度服务编排和组合成企业不同的业务流程,实现动态化。业务过程描述文档中包含了它要使用的服务的引用(如:服务名称、使用服务的地址和WSDL文档的存放位置),BPEL文档中标明了每个服务的使用顺序。业务层中还有能理解WS—BPEL过程描述文档的工作流引擎,该引擎负责按顺序或必要的逻辑来使用服务。


  c.服务层。


  该层是业务层的一个平台,定义了总线提供的细粒度的API接口,通过WebServices封装只是将API用基于XML的WSDL重新描述,但是服务仍然是细粒度的,而服务引擎(ServiceEngine)代表了粗粒度服务的实现,它使用原有系统的API重新组合成具有更粗粒度的服务。


  d.集成层。


  该层是通过企业服务总线(ESB)来实现,企业服务总线描述服务的元数据和服务注册管理;在服务请求者和提供者之间传递数据及对这些数据进行转换,并支持同步模式和异步模式等。企业服务总线提供基于标准的连接服务,将应用中实现的功能或者数据资源转化为服务请求者能以标准的方式来访问的服务。企业服务总线(ESB)是SOA的基础架构,在整个结构体系中,每个服务都是通过企业服务总线来进行互相访问。


  假设当有一个服务请求者A想寻找一个Web服务,那么它要通过相关的调用协议通过入站端口进入到ESB中,这时就可以找到已经存人在UDDI中的对应的Web服务B,然后通过出站端口,将消息提供给服务请求者A。


  ESB可以通过发现、路由、匹配和选择,支持服务之间的动态交互,解耦服务请求者和服务提供者。


  e.操作系统层。


  该层是由整个集成框架中的最小单元组成,这些基本服务是应用系统集成的基石。这些基本服务(数据或业务单元)通过单独封装成单个Web服务,用WebServices封装应用系统可屏蔽原有系统的实现细节,消除不同技术之间集成的困难。WebServices封装使外部应用程序以统一的松散耦合的方式使用系统服务,当业务的实现逻辑需要更改时,只要WebServices的WSDL接口不变,无论系统的业务逻辑、实现技术甚至是更换全新的应用系统,客户程序都不需要作任何改动。我们将各种API接口用WSDL进行再描述,然后通过HTTP与SOAP共同进行传输。


  SOA可以满足各种信息集成的要求,动态地适应企业流程的更新与重组,体现了跨平台、灵活性和易扩展。只要将企业的应用系统看作是一组组服务,那么就可以通过重新组合编排这些服务来满足企业需要。但是SOA技术的数据标准和Web技术还处在不断完善阶段,Web服务语言还有许多不兼容,这都制约了Web服务集成应用的发展。