SOA架构的分析及其实施

随着信息化的发展,越来越多的遇到了“不敏捷”和“效率不高”两大难题,由于“不敏捷”,企业或部门不能依赖于IT基础架构来快速满足业务需求的变化,缺乏有效应对业务提升的能力,由于“效率不高”,项目和软件开发的成本过高,投入的资金较难得到预期效果。

对于软件的架构,有很多定义,一般来说,“架构是一系列关于软件系统组织的重大决策”,回顾软件架构的发展历程,自从软件脱离于硬件成为独立的产业以来,主要经历了三个重大的软件架构。在早期的功能化编程中,数据和功能是分开的,所以编程有“数据结构加算法”的概念,这个阶段就是面向过程的架构。后来软件越来越大型化,对模块重用的需求更突出了,于是出现了面向对象的方法,人们开始将数据和功能合并到一个封装的可重用对象实现中,这种方法具有极其重要的作用,尤其是组件技术的成熟,以COM技术为主要代表的面向对象架构。随着技术的发展,IT界试图在分布式系统中也使用面向对象架构,出现了DCOM和CORBA,EJB这样的分布式对象架构。在大型项目应用分布对象技术时候,人们很快发现,这种方法具有明显的局限性,于是SOA(Service-Oriented Architecture)应运而生了。

1     SOA简介

    SOA是一种架构模型,在传统的业务层和技术层之间增加了一个服务层,独立完成特定的服务功能,使业务层和技术层相互独立,便于适应具体业务的变化。SOA建立在Web服务的基础之上,主要以SOAP/XMI.接口和Web服务描述语言分发。它可以根据需求通过网络对松散藕合的粗粒度应用组件进行分布式部署、组合和使用。

    SOA的组成元素包括功能和服务质量两大部分,服务层是SOA的基础服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化。

    SOA架构中每个实体都扮演着服务提供者、服务请求者和服务注册中心这三种角色中的某一种或多种。服务提供者是提供服务的一方,它将自己的服务和接口契约发布到服务注册中心:服务注册中心是SOA架构的关键,它包含所有可用服务的数据库,将服务请求者和服务提供者联系起来。

    SOA的关键特性:一种粗粒度、松祸合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。

       SOA是近年来软件项目开发和信息系统构建方法的一个国际性技术趋势,代表一个开放的、可扩展的、联邦的和可组合的软件架构,常用于大型软件项目的开发。

       2   SOA的相关技术规范

       虽然SOA不是某项具体的技术,SOA本身还处在不断的发展之中。随着理论和实际的发展,总结了一些经验的架构分层。SOA包含四个关键概念,应用程序前端,服务,服务库和服务总线。一个服务包含一个合约,一个或多个接口以及一个实现。服务库有时也称为服务目录。如下图所示:

                         

       其中服务是一个明确的功能实体,常常封装高级业务实体,从客户的角度分析,服务是一个可以完成特定任务的合约以及接口和实现。服务总线,服务库(服务目录)等都有相关的技术规范以及产品实现,本文不再详细展开。

关于服务的类型划分,目前业界也尚未有统一的界定,基本上一致认可的主要有4大类型的服务:

基本服务:简单服务,包括“以数据为中心”的服务和“以逻辑为中心”的服务,以数据为中心的服务类似于传统程序模型中的数据访问层,但具有垂直划分特性,即只处理一个主要业务实体的数据,而不是试图管理整个应用程序的数据。

提供连接服务的基础设施,如服务总线,连接已有应用的连接器和适配器等,这些基础设施也以服务的方式提供,称为中介服务。

以流程为中心的服务,封装组织的业务流程知识,并控制和维护他们的状态,对于服务的流程,也有如BPEL4WS这样的参考规范。

公共服务是为合作伙伴和客户提供的服务,公共服务需要特殊考虑一些因素,如安全,计账和收费等。

       SOA应用系统的框架:

                                     

       SOA系统的架构线状图:

                                     

    3     SOA的特征

    可从企业外部访问:通过采用先进的B2B协议外部用户可以访问企业服务。

    随时响应用户请求:服务使用者请求服务时,SOA要求必须有服务提供者能够响应。同步应用通常部署在前台,其最终用户很容易受到服务提供者短缺的影响。相比之下,部署在后台的异步应用更为稳健,大部分情况下异步应用能够稳健应对短时间短缺,用户通常不会觉察到短暂的短缺。

    粗粒度的服务接口:采用粗粒度服务接口,使用者和服务层之间只需一次往复即可。

    分级:粗粒度服务比细粒度服务的重用性差,因此必须允许采用不同的粗粒度等级来创建服务.这种服务分级包含了粒度较细、重用性较高的服务,也包含粒度较粗、重用性较差的服务。

    松散祸合:SOA具有“松散辐合”组件服务,可以将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。

可重用的服务:按照可重用的原则设计服务,SOA将可以使应用变得更为灵活,同时大大提高工作效率。设计可重用服务是与数据库设计或通用数据建模类似的最有价值的工作。

标准化的服务接口:XML和Web服务标准化的开放性使企业能够在所部署的所有技术和应用中采用SOA。

支持各种消息模式:在一个SOA实现中,常会出现混合采用不同消息模式的服务,如:无状态的消息,有状态的消息,等幕消息等。

精确定义的服务契约:SOA中所有流程都被定义为服务,服务通过基于类封装的服务接口委托给服务提供者,服务接口根据可扩展标识符、格式和协议单独描述。

4     SOA的优点

编码灵活性:可基于模块化的低层服务、采用不同组合方式创建高层服务,从而实现重用。

明确开发人员角色:开发人员各司其职,集中精力解决相对的问题。

支持多种客户类型:借助精确定义的服务接口和对X1IL, Web服务标准的支持,可以支持多种客户类型。

更易维护:服务提供者和服务使用者的松散祸合关系及对开放标准的采用确保了该特性的实现。

更好的伸缩性:依靠服务设计、开发和部署所采用的架构模型实现伸缩性。服务提供者可以彼此独立调整,以满足服务需求。

更高的可用性:使用者无须了解提供者的实现细节,服务提供者就可以在WebLogic集群环境中灵活部署,使用者可以被转接到可用的例程上。

SOA能够帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统,以SOA架构的系统能够更加从容地面对业务的急剧变化。

SOA是对等(P2P)计算的真正的商业化。它提供了这样一种框架:一个系统上的软件可以安全而且可靠地提出请求并获得其他系统上的计算资源,而不再需要一台中央服务器来管理和控制整个端到端的网络。

       5     SOA项目的实施过程

SOA项目的实施整体分为两个过程:规划过程和实施过程。规划阶段非常重要,需要根据业务发展需求确定总体项目建设规划,确定项目范围和目标。规划是否正确决定着SOA项目实施的成败。实施过程项目建设的执行阶段,包括从服务的规划设计到服务发布后的运行维护等整个过程,在此过程中,开发人员和用户相互沟通,不断完善服务,是一个持续更迭的阶段。SOA项目的具体实施步骤如下:

    业务分析:建立项目的总体规划图。整理和分析项目的背景、环境、资源及风险等,确定项目业务策略及鱼需解决的业务问题;完成以下工作:业务服务定义,业务流程定义、业务数据分析和组织架构。

    系统总体规划:综合分析业务,确定项目的总目标及实施方案。

    服务规划及设计:分析整理项目业务,建模并确定服务实现策略。

    服务开发及测试:服务实现,SOA项目开发阶段的核心概念,包括单个功能的服务,也包括流程类的服务。

    服务部署:根据SOA项目目标,使用部署工具将所开发的各类服务及流程部署至项目运行的物理环境内,例如应用服务器、流程服务器、门户服务器等。

服务发布:将开发完成的服务发布到服务注册中心内,以便被其他服务发现和调用。

服务运维及监控:业务人员监控业务流程运行状况,系统维护人员从IT层面对系统服务的管理。

SOA支持项目的递进式实现,可以采用不断滚动改进的方式实施项目。首先,SOA中强调的服务是业务的服务,而不是技术实现的服务。其次,标准的确定是过程中一直需要考虑的问题,在分析和设计阶段都需要对标准加以考虑,并最终确定项目需要采用和制定的标准.再次,要实施好SOA项目,合理的团队成员和良好的团队精神不可或缺。最后,项目是否能成功,业务人员参与也是一个重要因素,这样可以保证SOA项目实施的成功,才能更好体现SOA的价值。

6    SOA项目实施PK传统项目实施

实施过程。传统项目的实施重点在于开发实现阶段,并且是从头开始,从零开始,而且经常使用瀑布式开发方法部署SOA。SOA项目实施中,重点在于前期的规划阶段,SOA项目的部署实施往往是对现存企业或组织内部应用的修补,对现有计算资源的整合,它是个循序渐进的过程,周期比较长,并且,企业部署SOA通常通过迭代方式实现,以减少出现业务故障的风险。

实施团队。SOA项目的实施团队更为复杂:强调将高层决策者及业务部门工作人员的全程、深入参与。SOA项目中的实施角色及职责也与传统的项目实施不同。

7    SOA的现状及未来

SOA为应用的动态整合提供了一个非常好的思路,一个解决问题的方法,但作为一个具有发展前景的应用系统架构,SOA尚存在许多有待改进的地方,例如在可靠性、安全性、编制(Orchestration)。遗留系统(Legacysupport)支持和语义(Semantics)方面均还存在不足。SOA相关技术和应用还处于探索和发展之中,SOA的核心标准也将继续演进。

国际上,在经历了数年的研发和测试以后,IBM, BEA,微软等已经陆续推出各自的SOA策略、架构以及产品,真正将SOA推动到可部署阶段。

BEA公司最新的中间件软件品牌AquaLogic,提供了全面的管理环境,帮助开发者使用开放的Web服务标准和工具创造所谓的SOA架构。IBM公司则基于SOA理念提出了“整合”战略,希望通过建立基于开放标准的、统一的、高效的、易于管理的IT基础平台,通过SOA与Workplace客户端技术(WCT),实现企业IT前台用户端、后台服务器的整合。IBM公司的信使软件WebSphereMQ}供了对SOA的支持。微软推出了代号为Indigo的技术,这项技术为合作伙伴建立新一代连接系统SOA铺平了道路。

在国内,调查结果显示,尽管SOA在中国尚处于应用启蒙阶段,但企业在SOA上的投入却在快速增加。已经或计划部署SOA的主要是大中型企业。多数中国企业用户对SOA仍持观望态度,市场培育将是一个长期的过程。但是,我们相信随着SOA的应用得到了正确的认识,SOA成为软件业的下一个大趋势将是不争的事实。

原文地址:https://www.cnblogs.com/reynold/p/1961079.html