企业级软件平台建设SOA第2章SOASOA市场趋势1什么是SOA2SOA的生命周期3如何实施SOA45案例:SOA在金融行业的应用“为了顺利运作,企业必须具有灵活性,必须具有灵活的IT基础设施。很多公司都在通过基于面向服务的架构(SOA)对系统进行整合来获得协调统一的IT和业务灵活性。”IBM软件集团副总裁SandyCarter市场趋势最近一项调查称,80%的财富500强企业表示在大概两年的时间内会转变一次他们的业务模式,而业务模式的成功改变很大程度上取决于其信息系统对快速演变的商业环境的适应能力,因为大概一半受访公司表示,这项转变会受到僵硬的信息系统的牵制。市场趋势十年前,解决灵活性问题的方法是企业应用集成(EIA),在主机端运行经过整合的软件。但是新的商业过程往往跨越多个组织或需要复杂的分析和协作,这一方法已越来越难于适应日新月异的商业环境。市场趋势新的解决方案不仅需要提供高效的商业推动力,更需要是能组建未来业务模式灵活的模块。客户机/服务器时代必然转向SOA这一新的潮流。市场趋势公司都在努力将IT系统环境转为以服务为导向的架构(SOA),以支持安装各种软件来有效交换数据,从而降低创建和维护界面的成本。业界分析公司Gartner估计,到2008年,60%以上的企业将在创建基础软件应用和业务流程时,将SOA作为“指导原则”什么是SOA?SOA的历史1996年,Gartner最早提出SOA。2002年12月,Gartner认为SOA是“现代应用开发领域最重要的课题”,还预计到2008年,SOA将成为占有绝对优势的软件工程实践方法,主流企业现在就应该在理解和应用SOA开发技能方面进行投资。SOA是一种架构模型和一套设计方法学,其目的是最大限度地重用应用程序中立型的服务以提高IT适应性和效率。它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。SOA不是一种语言,也不是一种具体的技术而是一种软件系统架构,它尝试给出在特定环境下推荐采用的一种架构,从这个角度上来说,它更像一种模式(Pattern)。SOA的特征服务的封装服务是位置透明的服务的重用服务的互操作服务之间的松耦合度服务是自治的功能实体SOA中的三个角色1服务申请者(ServiceRequester)3服务注册器(ServiceRegistry)2服务提供者(ServiceProvider)SOA中的三个角色ServiceRegistryServiceRequesterServiceProviderFindBindPublishSOA的三种操作发布(publish)查找(find)绑定(bind)定义了SOA的角色之间的合约可以用面向服务的体系结构做什么业务的水平改变内部改变垂直改变可以用面向服务的体系结构做什么改变和SOA系统适应改变的能力是最重要的部分。对于开发人员来说,这样的改变无论是在他们工作的范围之内还是在他们工作的范围之外都有可能发生,这取决于是否有改变需要知道接口是如何定义的以及它们相互之间如何进行交互。与开发人员不同的是,架构师的作用就是引起对SOA模型大的改变。构成SOA的技术SOA本身是应该如何将软件组织在一起的抽象概念。它依赖于用XML和Web服务实现并以软件的形式存在的更加具体的观念和技术。此外,它还需要安全性、策略管理、可靠消息传递以及会计系统的支持,从而有效地工作。您还可以通过分布式事务处理和分布式软件状态管理来进一步地改善它SOA服务和Web服务之间的区别SOA概念并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解以及如何交互。其中的区别也就是定义如何执行流程的战略与如何执行流程的战术之间的区别。Web服务在需要交互的服务之间如何传递消息有具体的指导原则;从战术上实现SOA模型是通过HTTP传递的SOAP消息中最常见的SOA模型。ESB企业服务总线(EnterpriseServiceBus,ESB),它使用许多可能的消息传递协议来负责适当的控制、流甚至还可能是服务之间所有消息的传输。ESB本身可以是单个引擎,甚至还可以是由许多同级和下级ESB组成的分布式系统,这些ESB一起工作,以保持SOA系统的运行。SOA与其他技术的关系SOA可以与许多其他技术结合在一起使用,然而,组件的封装和聚合在其中扮演着重要的角色。如前所述,SOA可以是一个简单对象、复杂对象、对象的集合、包含许多对象的流程、包含其他流程的流程,甚至还可以是输出单一结果的应用程序的整体集合。在服务之外,它可以看作是单个实体,但是在其自身中,它可以具有任何级别的复杂性(如果必要的话)。出于性能方面的考虑,大多数SOA服务并没有下降到单一对象的粒度,并且更适合于大中型组件。SOA与其他技术的关系SOA和Web服务是独立于编程语言的,但Java是主要的开发语言之一。可以使用定义良好的Java接口以及各种协议丰富的Java实现为正在构建这个模型的开发人员提供了优势。SOA与其他技术的关系SOA与Web的另一个重要的关系是自主计算和网格计算的概念。自主计算的概念应用于管理分布式服务体系结构的范围,具体来说,就是帮助维护策略和服务级协议以及SOA系统的总稳定性。SOA与其他技术的关系另外,网格计算可以以两个级别与SOA系统一起使用。网格是分布式计算的一种形式,它利用分布式特性和服务之间的交互来为SOA应用程序提供计算支持。在这种情况下,网格起到了框架的作用,其中实现了一些或所有单独的服务。因此,SOA应用程序可以是网格服务的消费者。SOA的生命周期SOA的生命周期建模(Model)建模业务流程的程度将依赖于预期实现的深度。另外,这个程度还依赖于您在开发团队中担任的角色。如果您是企业架构师,您将会对实际的业务服务进行建模。如果您是软件开发人员,您将可能对单个服务进行建模。组装(Assemble)在建模中,已经确定了需要何种类型的服务以及它们将访问何种类型的数据。已经存在某种形式的实现这些服务或访问该类数据所需的一些软件。“组装”步骤将要找到已经存在的功能,并为其添加服务支持。部署(Deploy)进行了建模和组装后,要将组成SOA的资产部署到安全的集成环境中。此环境本身提供专门化的服务,用于集成业务中涉及的人员、流程和信息。此外,部署工作还需要满足业务的性能和可用性需求,并提供足够的灵活性,以便吸纳新服务(并使旧服务退役),而不会对整个系统造成大的影响。管理(Manage)部署后,需要从IT和业务两个角度对您的系统进行管理和监视。在“管理”步骤中收集的信息用于帮助实时地了解业务流程,从而能更好地进行业务决策,并将信息反馈回生命周期,以进行持续的流程改进工作。管理(Manage)在管理中,需要监视和优化系统,发现和纠正效率低下的情况和存在的问题。由于SOA是一个迭代过程,因此,在此步骤中,不仅要找出技术体系结构中有待改进之处,而且还要找出业务体系结构中有待改进之处。控制(Governance)控制对所有生命周期阶段起到巩固支撑作用,为整个SOA系统提供指导,并有助于了解系统全貌。它提供指导和控制,帮助服务提供者和使用者避免遇到意外情况。如何实施SOASOA使用户可以构建、部署和整合这些服务,且无需依赖应用程序及其运行计算平台,从而提高业务流程的灵活性。这种业务灵活性可使企业加快发展速度,降低总体拥有成本,改善对及时、准确信息的访问。SOA有助于实现更多的资产重用、更轻松的管理和更快的开发与部署。构建服务集成转换IT转换业务SOA的采用阶段包括构建服务、集成、转换IT和转换业务。构建服务在此阶段,服务构建将更多地关注解决特定的问题,而不是对企业现有系统进行转换。IT部门将构建一些新服务,或许会将一些现有应用程序转换为一组基于Web的服务。它们之间的链接将根据需要提供,而不是源自整个体系结构的要求。集成发现了松散耦合体系结构的优势、方便性和易维护性后,下一步就是利用这种灵活性通过组合服务来创建新的组合应用程序。它们之间的链接是预先计划的且定义良好。转换IT这个阶段涉及到对信息技术基础设施进行转换,以便充分利用SOA的优势。所有系统将转换为基于服务的应用程序,松散耦合是其中的规范做法,而不是例外。系统的所有组件都将根据SOA进行集成和连接,IT系统的所有部分都在SOA内工作。转换业务在SOA成熟的最后一个阶段,业务与SOA完全集成,达到了这样一个程度:所有合适的业务活动都被视为服务,可以最终在技术体系结构中对其进行建模、分析和实例化。SOA的切入点实施SOA可以从两个方面进入,一是以业务为中心,二是以IT为重点。IBM的什么工具和产品可用于SOA?在第一个用于实现独立Web服务(ImplementingIndividualWebservices)的SOA采用层次中,主要用于帮助开发人员创建和操作比较简单的Web服务。实现单独的Web服务――核心组件在第二个层次,面向服务的集成(ServiceOrientedIntegration),工具转向提供发现多个服务并与其交互的方式,以及创建SOA模型的基础。面向服务的集成——核心组件面向服务的集成——附加组件在层次3,企业范围内的IT转换,IBM提供了各种各样的SOA和Web服务现成产品,这样就可以支持所有的IT系统功能,并提供SOA系统的企业范围内的管理。企业范围内的IT转换――核心组件企业范围内的IT转换――附加组件案例:SOA在金融行业的应用SOA的使用是基于重用的功能单元(称为服务),通过运用这些服务之间定义良好的接口和契约联系来支持业务流程,是服务(或业务)的编排和组合增加了灵活性和集成性的重要作用。SOA的关键是使用标准的服务接口和定义用松耦合进行连接。从而掩盖IT环境底层的技术复杂性和繁琐性。SOA是从企业的需求开始,把IT系统和业务流程结合在一起,以服务集成的形式实现新的而且灵活的应用功能。SOA简化了IT,让IT变得更有弹性,从而更好地发展和优化业务流程,促进企业与合作伙伴的业务需要,也使供应商和客户之间的运作流程能够做的端到端的整合,让企业可以快速灵敏地响应客户和市场不断变化的需求,实现随需应变业务。实践SOA需要四方面的工作企业组织及服务监控(Governance)1以服务为定义的业务流程(Process)2IT系统和业务流程的配合(AlignITwithbusiness)3企业建模及系统架构(Architecture)4SOA技术的成熟,为建设灵活,基于标准的IT基础设施提供了明确的答案。企业如何才能有效实现SOA策略?这是很大的挑战和充满了潜在的障碍。企业不需要马上全部采用或大量修改现有的IT基础,使用服务来完全代替它们。而应当优先选择利用服务接口解决最紧迫的集成问题,然后逐步扩展范围,封装出更多面向服务的业务流程,稳定地把公司转型为随需应变企业。流程排演技术一个业务过程是指一套以特定的顺序被调用来实现某个商务目标的商务活动流。业务过程定义了流的顺序、如何处理外部事件、如何与人交互和条件判断。业务过程模型一个业务过程的组成部分过程数据(信息模型)1活动和服务(服务模型)2过程参与者(组装模型)3过程数据(信息模型)消息:服务之间交互的请求/响应信息。业务实体和对象:定义消息成员的类型,包含数据的组成和处理方法活动和服务(服务模型)业务服务:业务过程的每个活动结点都对应一个服务执行步,这些服务可以是企业内部的J2EE服务、Mainframe访问服务或数据库访问服务,也可以是企业的业务伙伴提供的外部应用服务。过程参与者(组装模型)业务伙伴:具有某种业务角色的服务提供者。在这里,我们将业务过程中的所有服务提供者都称为业务伙伴。例如企业内部的帐务系统、CICS系统、零售系统的企业外部供应商系统等。业务过程与服务提供者的交互选用WebSe