浅析面向服务的体系结构SOA
2009-09-11丁敏英罗立红
丁敏英 罗立红
摘要:SOA是一种对未来软件架构设计有着巨大影响的技术。文章就什么是SOA;SOA的特点;SOA用于解决哪些问题;SOA相关的技术以及SOA与Web service的区别等问题提出自己的理解。总结出SOA的特性。
关键词:SOA系统架构;分层模型;Web服务
中图分类号:TP311文献标识码:A
文章编号:1674-1145(2009)09-0147-02
一、SOA产生的背景
现代企业面临的环境越来越复杂,一个企业往往具有多个业务系统,而且这些系统往往是异构的,而且可能需要与客户、合作伙伴的业务系统交互。因此在这样的复杂环境中构件新的企业应用是非常困难的。这就要求今天的企业解决方案具有广泛的兼容能力,可以支持不同的系统平台、数据格式和多种连接,要求在Internet环境下,实现系统是松散藕荷的、跨平台的、与语言、接口无关的,而且要求提供对Web应用程序的可靠访问等等。各种系统间的互操作性就显得必要,要求系统能够无缝地进行通信和共享数据,从而在Internet环境下,消除巨大的信息孤岛,实现信息共享、进行数据交换,达到信息的一致性。SOA就是为了适应这种复杂多变的应用环境,用一种不同于以往的方式来快速、简便地开发企业应用系统,为企业在激烈的市场竞争中抢得先机。
二、什么是面向服务的体系结构(SOA)
面向服务的体系结构(serviee-oriented architecture。SOA)是指为了解决在Internet环境下业务集成的需要,通过连接能够完成特定任务的独立功能实体的一种系统架构。是一个组件模型,它将应用系统的不同功能实体(称为服务)通过定义良好的接口和契约联系起来,从而使得开发人员能够调用服务的功能来快速便捷地构造企业所需业务系统。服务的接口是采用中立的方式进行定义的,独立于实现服务的硬件平台、操作系统、网络环境和编程语言等。使得构建在这样的系统架构中的各种服务可以以一种统一和通用的方式进行交互。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。
从SOA的定义中,我们看到两点:(1)软件系统架构:SOA不是一种语言,也不是一种具体的技术,更不是一种产品,而是一种软件系统架构,它尝试给出在特定环境下推荐采用的一种架构,从这个角度上来说,它其实更像一种架构模式(Pat-tern),是一种理念架构,是人们面向应用服务的解决方案框架;(2)服务(service):服务是整个SOA实现的核心。SOA架构的基本元素是服务,服务是一种逻辑实体,由一个或多个已发布接口定义的契约,是外部可见的功能。SOA指定一组实体(服务提供者、服务消费者、服务注册中心、服务条款、服务代理和服务契约),这些实体详细说明了如何提供和消费服务。遵循SOA观点的系统必须要有服务,这些服务是可互操作的、独立的、模块化的、位置明确的、松耦合的并且可以通过网络查找其地址。
服务是SOA的核心,具有如下一些特点:
1.服务的重用(Reuse)。服务的可重用性显著地降低了企业应用系统开发的成本。为了实现可重用性,服务只工作在特定处理过程的上下文(context)中,独立于底层实现和客户需求的变更。
2.服务的互操作(internperability)。互操作并不是一个新概念。在CORBA、DCOM、Web service中就已经采用互操作技术了。在SOA中,通过服务之间既定的通信协议进行互操作。主要有同步和异步两种通信机制。SOA提供服务的互操作特性更利于其在多个场合被重用。
3.服务是自治的(Autonomous)功能实体。服务是由组件组成的组合模块,是自包含和模块化的。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。SOA架构中非常强调功能实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列(Message Queue),冗余部署(Redundant Deploymen)和集群系统(Clus-ter)在SOA中都起到至关重要的作用。
4.服务之间的松耦合(Loosly Coupled)在基于SOA架构的系统中,具体应用系统的功能是由一些松耦合并且具有中立接口定义的服务组合构建起来的。松耦合系统的好处有两点,一点是它的灵活性;另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。比如:服务提供者可以将以前基于遗留代码(例如,COBOD的实现完全用基于Java语言的新代码取代,同时又不对服务请求者造成任何影响。
5.服务是位置透明的(Location Transparency)服务是针对业务需求设计的。需要反应需求的变化,要想真正实现业务与服务的分离,就必须使得服务的设计和部署对用户来说是完全透明的。也就是说,用户完全不必知道响应自己需求的服务的位置,甚至不必知道具体是哪个服务参与了响应。
三、SOA架构的分层模型
整个SOA架构的分层模型如图1所示。
在SOA系统中不同的功能模块可以被分为7层:
第1层就是企业已经存在的系统资源,例如企业ERP或者CRM系统等。
第2层就是组件层,在这一层中我们用不同的组件把底层系统的功能封装起来。
第3层就是sOA系统中最重要的服务层,在这层中我们要用底层功能组件来构建我们所需要的不同功能的服务。
第4层就是商业流程层,在这一层中我们利用已经封装好的各种服务来构建商业系统中的商业流程。
第5层表示层,我们利用表示层来向用户提供用户接口服务。
第6层企业服务总线(ESB)上面5层都需要有一个集成的环境来支持它们的运行,企业服务总线(ESB)就提供了这样的功能。
第7层主要为整个SOA系统提供一些辅助的功能,例如服务质量管理,安全管理这一类的辅助功能。
四、SOA技术克服的传统分布式系统开发体系结构中的一些问题
SOA最主要的应用场合在于解决在Internet环境下不同商业应用之间的业务集成问题。Internet应用环境有以下特点:(1)大量异构系统并存,比如在Internet环境中,计算机硬件体系结构的差异,操作系统的不同,编程语言的不同,数据库不同,应用服务器不同,使用的规范不同等等;(2)大量、频繁的数据传输速度缓慢并且不稳定;(3)版本升级无法完成,根本就无法知道互联网上有哪些机器直接或者间接地使用某个服务。
1.大量异构系统并存。在Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。所以SOA非常强调架构
中提供服务的功能实体的完全独立自主的能力。
2.大数据量低频率访问。对于NET、EJB或者XML-RPC这些传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客户端和服务器来回很多次函数调用才能完成。在Intranet的环境下,这些调用给系统的响应速度和稳定性带来的影响都可以忽略不计,但是在Internet环境下这些因素往往是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。
3.基于文本的消息传递。由于Internet中大量异构系统的存在决定了SOA系统必须采用基于文本而非二进制的消息传递方式。在COM/DCOM、CORBA这些传统的组件模型中,从服务器端传往客户端的是一个二进制编码的对象,在客户端通过调用这个对象的方法来完成某些功能;但是在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端的方式可以帮忙绕过兼容性这个大泥坑。
五、面向服务架构(SOA)的优势
SOA不同于现有的分布式技术之处在于大多数软件商接受它并有可以实现SOA的平台或应用程序。SOA伴随着无处不在的标准,为企业的现有资产或投资带来了更好的重用性。SOA能够在最新的和现有的应用之上创建应用;SOA能够使客户或服务消费者免予服务实现的改变所带来的影响;SOA能够升级单个服务或服务消费者而无须重写整个应用,也无须保留已经不再适用于新需求的现有系统。总而言之,SOA以借助现有的应用来组合产生新服务的敏捷方式,提供给企业更好的灵活性来构建应用程序和业务流程。其优势主要体现在如下几个方面:(1)利用现有的资产;(2)更易于集成和管理复杂性;(3)更快地整合现实;(4)减少成本和增加重用。
SOA业务流程是由一系列业务服务组成的,可以更轻松地创建、修改和管理它来满足不同时期的需要。
六、结语
随着分布式应用系统复杂性的持续增长以及企业业务不断变化以适应激烈的市场竞争,企业的各种新业务的快速推出,新老应用系统的集成,系统可用性,可靠性和可伸缩性等等,这些成为各公司企业面临的主要问题,SOA成为解决这些问题的最好解决方案。
参考文献
[1]Yvonne Balzer.改进您的SOA专案规划.IBM,2004-08-01.
[2]OASIS探寻标准SOA参考架构.2007.
[3]实现SOA的相关技术.2005-09-15.
作者简介:丁敏英,湖南商务职业技术学院教师;罗立红。湖南商务职业技术学院教师。