面向服务架构(Service-Oriented Architecture,SOA)
目录 |
面向服务架构又称“面向服务的体系结构”,是Gartner于2O世纪9O年代中期提出的面向服务架构的概念。2002年的l2月,Gartner提出“面向服务的架构(SOA)”是“现代应用开发领域最重要的课题”之后。国内外计算机专家、学者掀起了对SOA的积极研究与探索。
我们现在正在享受着SOA给软件带来的好处。如计算机网络符层的服务协议象http、ftp等就是基于SOA思想的设计和开发的。各层协议问提供透明的服务和接口,使各层协议问最大程度的降底藕合性。减小外界对各层的影响,SOA是未来软件开发与设计的标准,使我们未来开发的软件也象网络的各层协议一样提供给客户完美的服务接口,减小因企业服务的改变而引起软件的改写,降低开发成本与开发人员的劳动强度。
顾名思义,SOA就是以“服务”为基本元素来组建企业IT架构。在技术层面上,SOA是一种“抽象的、松散耦合的粗粒度软件架构”;在业务层面上,SOA的核心概念是“重用”和“互操作”[1],它将企业的IT资源整合成可操作的、基于标准的服务,使其能被重新组合和应用。
面向服务架构,从语义上说,它与面向过程、面向对象、面向组件一样,是一种软件组建及开发的方式。与以往的软件开发、架构模式一样,SOA只是一种体系、一种思想,而不是某种具体的软件产品。SOA要解决的主要问题是:快速构建与应用集成。SOA能够在实际应用中获得成功基于两个重要的因素:灵活性和业务相关性。这使得它成为解决企业业务发展需求与企业IT支持能力之间矛盾的最佳方案。
SOA成功的第一个重要因素是“灵活性”。SOA是第一个考虑了企业业务发展长期性的IT架构,从本质上说,SOA是一组松耦合的服务,每一个服务的建立和替换都是相对简单的。与传统的紧耦合架构相比,松耦合架构更能适应业务的变化:在SOA中,可以用一个服务替换另一个服务而无须关心其底层的实现技术,唯一要考虑的就是服务接口。SOA还可以充分利用企业现有的IT资源,包括企业已有的应用和数据库。新系统可以通过将已有应用和数据融入SOA,而不是替换它们,来使其成为企业整体解决方案的一部分。这种方式最终将使企业的IT架构能够更快速、更有效地适应业务需求的变化。
SOA成功的第二个重要因素是“业务相关性”。SOA与其他IT架构的最大区别在于它与业务的关联性。它是以“服务”为基本单元来组织IT资源,其中的每一项服务都可以完成实际业务流程中的一项任务。例如,您可以把一项服务叫做“打印发票”,它可能包含计算收入、查找相应税率、计算应缴税款、打印发票等一系列操作。这样一来,服务就与业务产生了密切的联系,业务人员也可以参与服务的创建并且用它们定义新的业务流程。
目前技术条件下,SOA的具体实现方式是利用XML和Web服务。此外,它还需要安全性、策略管理、可靠消息传递以及审计系统等等的支持,从而有效地工作。
SOA服务和Web服务之间的区别在于设计[2]。SOA的概念中并没有明确定义服务具体如何交互,而仅仅定义了服务如何相互理解以及如何交互。这种区别也就是指导策略与具体方法之间的区别。而且,Web服务在需要交互的服务之间如何传递消息有具体的指导原则,具体实现Web服务的模型是通过HTTP传递的SOAP消息的模型。尽管目前Web服务是实现SOA的最好方式。但是SOA并不局限于Web服务。其他使用WSDL直接实现服务接口并且通过XML消息进行通信的协议也可以包括在SOA之中。
因此,从本质上说,Web服务只是实现SOA的具体方式之一。随着技术的发展,完全可能会出现替代Web服务的新技术新方法,利用它们能够更好的实现SOA。
SOA的服务级别抽象图,如下图所示:
基于以上图示.SOA具有以下五个特征:
1、可重用
一个服务创建后能用于多个应用和业务流程。
2、松耦合
服务请求者到服务提供者的绑定与服务之间应该是松耦合的。因此,服务请求者不需要知道服务提供者实现的技术细节,例如程序语言、底层平台等等。
3、明确定义的接口
服务交互必须是明确定义的。Web服务描述语言(Web Services Description Language,WSDL)是用于描述服务请求者所要求的绑定到服务提供者的细节。WSDL不包括服务实现的任何技术细节。服务请 求者不知道也不关心服务究竟是由哪种程序设计语言编写的。
4、无状态的服务设计
服务应该是独立的、自包含的请求,在实现时它不需要获取从一个请求到另一个请求的信息或状态。服务不应该依赖于其他服务的上下文和状态。当产生依赖时,它们可以定义成通用业务流程、函数和 数据模型。
5、基于开放标准
当前SOA的实现形式是Web服务,基于的是公开的W3C及其他公认标准.采用第一代Web服务定义的SOAP、WSDL和UDDI以及第二代Web服务定义的WS-*来实现SOA。
面向服务的体系结构中的角色[3]包括:如下图所示:
1、服务使用者:服务使用者是一个应用程序、一个软件模块或需要一个服务的另一个服务。它发起对注册中心中的服务的查询,通过传输绑定服务,并且执行服务功能。服务使用者根据接口契约来执行服务。
2、服务提供者:服务提供者是一个可通过网络寻址的实体,它接受和执行来自使用者的请求。它将自己的服务和接口契约发布到服务注册中心,以便服务使用者可以发现和访问该服务。
3、服务注册中心:服务注册中心是服务发现的支持者。它包含一个可用服务的存储库,并允许感兴趣的服务使用者查找服务提供者接口。
面向服务的体系结构中的每个实体都扮演着服务提供者、使用者和注册中心这三种角色中的某一种(或多种)。面向服务的体系结构中的操作包括:
面向服务的体系结构中的构件包括:
1、实施SOA,可以实现企业IT闲置资产的重用。
2、可以降低企业的IT投资成本。
3、可以实现企业的动态变革。
1、引入SOA的思想
实施SOA需要企业改变以往对待IT系统的观念,从新的角度来看待IT系统。尽管SOA并非一个新的概念,但对于企业高层、中层等人员真正理解SOA内涵的并不多。SOA是一个架构思想,并不是一个产品。企业不可能通过引入某一个产品就能实现SOA,企业需要的是一个SOA的框架结构。
2、做好前期规划准备
在实施SOA前,一定要做好前期规划。首先要正确评估企业现状,包括企业的管理水平、业务流程、IT系统、企业上下游的关联等。其次,在正确评估基础上,与SOA专家进行沟通,确认企业实施SOA时机是否成熟,与专家一起构建企业未来的SOA蓝图。其中最重要的工作就是对企业的业务流程进行分析,找出业务流程与IT系统的结合点,使企业的业务与IT系统紧密地联系在一起。
3、选择正确的平台
要将不同的系统和应用统一到一个大框架内.因此基础平台的选择尤为关键。一定要关注平台所支持的标准以及所拥有的功能,如企业可选择含有ESB功能的基础平台。
1、人才到位
尤其是需要有SOA的总架构师,有一个SOA架构团队。
2、螺旋式上升
SOA不是一次性模型,它包括持续的发展和重新设计。
3、SOA投资
SOA之路就像退休储蓄一样,是一种长期的投资。用户可能会经历一些短期的痛苦,但是最终将得到回报。
4、总体规划、分步实施
SOA的实施是一项较为庞大的工程,存在各种各样的风险。企业要在认清风险的基础上,总体规划、分步实施。
5、服务的粒度划分
如果粒度划分太细.企业付出的成本相应会高,如果粒度划分太粗,则IT系统无法很好地按需快速变动,企业必须要在两者之间寻得一个平衡点。
Technology,and Design[M].Prentice Hall PTR.