随着现代通信技术、计算机网络技术和企业信息化的飞速发展,企业使用的软件,如地理信息系统(GIS)、企业资源计划(ERP)、办公自动化(OA)、客户关系管理(CRM)等应用系统也越来越多。这些应用系统都是根据当时的业务需求而建设的,它们分别归属为企业不同部门所使用,虽然这些应用系统各有侧重点,但它们之间也包含着重复的信息和数据。可是,由于这些应用系统相互独立运行,使得它们之间无法进行信息的交流和共享,导致了众多的信息被封闭在相互独立的应用系统中,在企业内部形成了一个个所谓的"信息孤岛"。为了让不同的系统之间信息能够共享和集成,实现将众多的"信息孤岛"联系起来的需求,客观上的需求驱动了使能技术- 企业应用系统集成的产生和发展。
企业应用集成(EAI: Enterprise Application Integration)是指对企业中完成不同业务功能的应用系统进行集成,在它们之间建立起可供数据交流和应用沟通的纽带,进而使他们之间的信息交互成为可能。通过这种方式使用户可以访问企业的整体信息,而不必考虑这些具体信息到底是属于哪一个应用系统的,即各个不同应用系统对用户来说是透明的。这就需要采用一种应用系统集成方式将企业内部的各个现有应用系统集成起来,以达到整合企业资源的目的。
1传统应用系统集成
传统的企业应用集成方法主要有两种,点到点(Point-to-Point)的集成和基于企业消息总线或中间件的集成(即EAI)。点到点的方式属于硬编码的方式,在集成应用时工作量较大、开放性不好,且随着待集成的应用的增加,集成的复杂度急剧上升。基于中间件的集成如CORBA、DCOM等之间的互操作,他们的方法都是先建一个集成平台,然后开发各种各样的适配器和连接器(Adapter & connector)去连接已有的应用系统。用适配器来进行信息的有效收集、现有集成平台与原有平台的信息转发。而这种情况下,应用程序和消息总线之间的连通性是用私有总线API和应用程序API来实现的。这种集成本质上仍然是点对点的集成,不仅有失灵活,而且容易受制于传统分布式对象中间件技术存在的局限性,该集成防范成本太高、实现过程复杂且无法通用。传统方法的根本问题都是客户端与服务端之间耦合过于紧密。这种紧耦合的集成方式将影响系统的灵活性和扩展性,阻碍业务的流程调整和优化,不利于企业业务发展。
因此,企业间应用集成客观上迫切需要一种有效的、新的集成方法来克服传统的企业应用集成的缺点。如何选择新的集成方法和技术平台是我们必须考虑的重要问题之一。为此,笔者提出了面向服务架构SOA(Service Oriented Architecture)的企业应用集成方法。
2 面向服务架构(SoA)
2.1 SOA面向服务架构的含义。
面向服务架构(service oriented architecture,SOA)的概念是GartnerGroup,于1996年提出的。关于SOA,目前尚未有一个统一的、业界广泛接受的定义。一般认为:SOA,面向服务架构是一个组件模型,它将应用程序的不同功能单元(称为服务),通过服务间定义良好的接口和契约联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信。
2.2 SOA的体系结构
面向服务的体系架构中共有3种角色,它们分别是服务提供者、服务消费者和服务注册中心。其中服务提供者负责服务功能的具体实现,并通过注册服务操作将其所提供的服务发布到服务注册中心,当接收到服务消费者的服务请求时,执行所请求的服务。服务消费者则是服务执行的发起者,首先需要到服务注册中心中查找符合条件的服务;然后根据服务描述信息进行服务绑定/调用,以获得需要的功能。而服务注册中心则用来提供服务提供者注册服务、提供对服务的分类和查找功能,以便服务消费者发现服务(见图1)。

SOA体系结构中的每个实体(组件)都扮演着服务提供者、消费者、注册中心这三种角色中的一种或多种。在这些角色之间使用了三种操作:
(l) 发布(Publish)。为使服务可访问,需要发布服务描述使消费者可以发现和调用它。
(2) 发现(Find)。服务消费者定位服务,可以通过服务注册中心查找特定种类的服务。
(3) 绑定(Bind)。在检索完服务之后,服务消费者根据服务描述中的信息来调用服务,使服务消费者能够真正使用服务提供者。
2.3 S0A的特点:
1)互操作性:基于标准,提供了不同厂商解决方案之间的互操作性,SOA可以使用任何平台之间的功能,而与编程的语言、操作系统和计算机类型等等无关,可以确保各种基于SOA解决方案之间的集成和互操作性;
2)松散耦合:传统的软件系统是一种"紧耦合结构",各子系统、各要素之间拆分和沟通很困难。SOA则是松散耦合的,服务提供者使用标准定义语言定义和公布它的服务接口,接口定义服务消费者和服务提供者之间的调用契约。只要服务接口保持一致,改动调整应用程序的内部功能或结构将对其它部分没有影响。
3)位置透明:SOA通过"发布/检索"机制提供位置透明性,即服务请求者无需知道服务提供者的实际位置。这种方式创建了一个虚拟平台,在这个平台上所有的组件和服务都可以认为驻留在同一个机器上或平台上,该虚拟平台允许使用相同的调用访问本地和远端的服务,即透明访问,很好地支持了B2B集成。
3基于Web Services的面向服务的企业应用系统集成
3.1 Web Services
Web Services是建立在开放标准和独立于平台的协议基础之上的分布计算单元。Web服务本身由四大部分组成:XML ,SOAP,WSDL,UDDI。web服务技术本身的兴起也正是依托这四大开放标准的发展过程和标准化历程而发展起来的。它使用SOAP协议在服务提供者与服务使用者之间进行通信。Web Services通过WSDL协议定义服务接口,使用UDDI协议进行Web Services注册和查找。
3.2 Web Services与SOA
SOA与 Web Services是两个不同层面的问题,SOA是一个概念,一种理念,一种模型,面向商业应用,SOA的具体实现技术包括CORBA、DCOM、JZEE、WEB服务等;后者则是实现模式,面向技术框架。SOA概念并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解以及如何交互。其中的区别也就是定义如何执行流程的战略与如何执行流程的战术之间的区别。另一方面,Web服务在需要交互的服务之间如何传递消息有具体的指导原则。从战术上实现SOA模型是通过HTTP传递的SOAP消息的Web服务模型。因而,从本质上讲,web服务是SOA的最佳的实现技术。这是由于web服务是标准的,它保证了来自不同的Web服务即使运行在不同的平台上,底层的实现机理不同也可以顺利交互和共享,这是传统的技术如CORAB、EJB或DCOM等都是做不到的,更为突出的是Web服务的定义和实现是分开描述的,即它的松耦合性,可以方便地修改Web服务内在的实现而不会对现有的系统造成破坏,这极大地促进了信息件架构的灵活性。基于web这种标准的成熟和应用的普及为广泛的实现SOA架构提供了基础。Web Services通过WSDL协议定义服务接口。服务提供者可以通过UDDI发布自己的Web service1,如供应商发布订单服务、客户支持服务等;服务消费者可以通过UDDI查找企业或者平台提供的Web service1,如客户需要查找供应商提供的订单状态查询服务等。发布服务的过程:1)服务提供者定义自己提供的Webservicel;2)将服务发布于UDDI上。请求者查询服务的过程:1)通过UDDI查询自己需要的服务;2)将Web service1集成在系统中。