中国地质大学(武汉)信息工程学院2010-9-301第3章-面向服务的软件体系结构SOAz3.1SOA的背景z3.2什么是SOAz3.3WebServicez3.4EnterpriseServiceBus(ESB)z3.5如何构建SOA系统面向服务架构风格ServiceOrientedArchitechture中国地质大学(武汉)信息工程学院2010-9-3023.1SOA背景中国地质大学(武汉)信息工程学院2010-9-303从企业的发展谈起中国地质大学(武汉)信息工程学院新方法的商业驱动力z企业压力之下的两个基本的主题–异构–变化cuttingcosts&maximizingtheutilizationofexistingtechnologyBetterMorecompetitiveMoreresponsiveConflictHeterogeneityChange中国地质大学(武汉)信息工程学院软件体系结构的发展中国地质大学(武汉)信息工程学院2010-9-306软件构架的发展历程回顾中国地质大学(武汉)信息工程学院2010-9-307PCArchitectureDOSSpreadsheetsWordProcessorsPC80年代中Internet90年代中Applications80年代末到90年代中WebApps00年代中-...TodaySpeech/WritingXML/SOAPHTTP/HTMLSMTPEmailClientsWebBrowsersWi-Fi/BroadbandDevicesWebServicesRightsManagementTrustedComputingHardwareMouseGUILANs革新的浪潮中国地质大学(武汉)信息工程学院2010-9-308没有企业是孤岛客户供应商员工合作伙伴供应商供应商员工客户合作伙伴合作伙伴是业务流程和人将参与者和能力(Capabilities)编织在一起中国地质大学(武汉)信息工程学院2010-9-309互联的软件z松耦合的设备、应用程序、数据等的组成部分zWebservices和XMLz自适应的z面向流程的中国地质大学(武汉)信息工程学院2010-9-3010中国地质大学(武汉)信息工程学院z为了减少异构性、互操作性和不断改变的要求的问题,这样的体系结构应该提供平台来构建具有下列特征的应用程序服务–松散耦合–位置透明–协议独立中国地质大学(武汉)信息工程学院候选解决方案z面向对象的分析和设计–通过封装对象的某些方面,以简化复杂业务场景的分析–为了降低复杂性,可以抽象对象的某些特征,这样就可以只捕获重要或本质的方面。z基于构件的开发–通过内聚一些更细粒度的对象来提供定义良好的功能–一旦组织在更高层次上实现了基于完全独立的功能构件的体系结构,就可以将支持企业的应用程序划分成一组粒度越来越大的构件。可以将构件看作是打包、管理和公开服务的机制中国地质大学(武汉)信息工程学院候选解决方案z面向服务的设计–服务通常实现为粗粒度的可发现软件实体,它作为单个实例存在,并且通过松散耦合的基于消息通信模型来与应用程序和其他服务交互中国地质大学(武汉)信息工程学院候选解决方案z分层应用系统体系结构中国地质大学(武汉)信息工程学院对新型体系结构的要求z不同系统和不同编程语言的互操作性?———一种适合各种系统和编程语言的通信协议被要求。z一种与平台无关的、清晰明确的描述语言–为了使用其他提供者提供的服务,不仅需要对提供者的系统进行访问,而且那些服务的接口必须用一种语法清晰,平台无关的语言描述。z服务的查找和获得–为了能够在系统设计时特别是运行时方便地进行集成,我们需要一种机制用来查找和获得有效的服务,这些服务应该基于他们的功能或者调用方式被很好地分类了。中国地质大学(武汉)信息工程学院2010-9-30163.2什么是SOA中国地质大学(武汉)信息工程学院定义z面向服务的体系结构(service-orientedarchitecture,SOA)是一个构件模型,它将应用程序的不同功能单元(称为服务)通过定义良好的接口和契约联系起来–接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。z服务(service)是封装成用于业务流程的可复用构件的应用程序函数。它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变–用于实现特定服务的流程并不重要,只要它响应命令并为请求提供高质量的服务就可以了中国地质大学(武汉)信息工程学院2010-9-3018向面向服务的体系结构的转变z面向功能的z一成不变的z拖得很长的开发周期z面向流程的z灵活的z递增的开发和部署z孤立的应用系统z紧耦合z面向对象的z实现细节公开z互连的解决方案z松耦合z面向消息的z抽象的接口中国地质大学(武汉)信息工程学院2010-9-3019SOA服务的特征z可在网际间请求调用z具有良好的兼容性z粗粒度的操作z松散耦合的关联z基于接口的设计z具有透明的搜索和查询中国地质大学(武汉)信息工程学院ElementsofSOA中国地质大学(武汉)信息工程学院功能性元素z传输是一种机制,用于将来自服务使用者的服务请求传送给服务提供者,并且将来自服务提供者的响应传送给服务使用者。z服务通信协议是一种经过协商的机制,通过这种机制,服务提供者和服务使用者可以就将要请求的内容和将要返回的内容进行沟通。z服务描述是一种经过协商的模式,用于描述服务是什么、应该如何调用服务以及成功地调用服务需要什么数据。z服务描述实际可供使用的服务。z业务流程是一个服务的集合,可以按照特定的顺序并使用一组特定的规则进行调用,以满足业务要求。注意,可以将业务流程本身看作是服务,这样就产生了业务流程可以由不同粒度的服务组成的观念。z服务注册中心是一个服务和数据描述的存储库,服务提供者可以通过服务注册中心发布它们的服务,而服务使用者可以通过服务注册中心发现或查找可用的服务。服务注册中心可以给需要集中式存储库的服务提供其他的功能。中国地质大学(武汉)信息工程学院服务质量元素z策略是一组条件和规则,在这些条件和规则之下,服务提供者可以使服务可用于使用者。策略既有功能性方面,也有与服务质量有关的方面;因此,我们在功能和服务质量两个区中都有策略功能。z安全性是规则集,可以应用于调用服务的服务使用者的身份验证、授权和访问控制。z传输是属性集,可以应用于一组服务,以提供一致的结果。例如,如果要使用一组服务来完成一项业务功能,则所有的服务必须都完成,或者没有一个完成。z管理是属性集,可以应用于管理提供的服务或使用的服务。中国地质大学(武汉)信息工程学院2010-9-3023服务的概念SOA中的服务代表的是一个由服务提供者向服务的请求者发布的一些处理过程,这个过程在被请求之后,导致服务请求者所需要的一个结果。在获得服务的过程中服务请求者可以向任何能够提供此项服务的服务提供者来请求服务,服务实现的过程对于服务请求来说是透明的。中国地质大学(武汉)信息工程学院2010-9-3024服务的概念---应用系统的多层逻辑结构(Multi-LayerLogicalModel)中国地质大学(武汉)信息工程学院2010-9-3025SOA应用系统架构中国地质大学(武汉)信息工程学院2010-9-3026SOA应用系统架构z●展现层(presentation):前图中的5区,通过portal等技术建立展现平台,方便用户在这个界面上提出服务请求。z●业务处理建模(businessprocessmodeling):前图中的4区,SOA元模型从MDA中继承了平台无关模型来对业务处理过程建模。这一部分独立于服务设计和部署层。模型驱动架构MDA(ModelDrivenArchitecture)的主要缺陷是在模型设计阶段就对需求有完整的描述,而且没有需求变更的反馈机制。SOA通过添加敏捷方法AM来应对需求变更的情况。z●服务层(Services):前图中的3区,整个SOA的核心层,它承上启下,对上响应业务模型,对下调用相关组件群完成业务需求,形成“业务驱动服务、服务驱动技术”的SOA事务处理格局。服务可以根据粒度分层。虽然细粒度提供了更多的灵活性,但同时也意味着交互的模式可能更为复杂。粗粒度降低了交互复杂性,但敏捷性却下降。z●企业组件层(enterprisecomponents):前图中的2区,这里是相关组件发挥作用的场所。这些组件是平台相关的。因为到了这一层,许多底层软硬件平台的特性已经不再透明了。z●系统软件层(OperationalSystem):前图中的1区,这一层包括操作系统、数据库管理系统、CRM、ERP、商业智能(BI)等异构系统,是一个集成的平台。z除此之外,诸如QoS、安全性等(前图中7区)也是SOA架构的组成部分。中国地质大学(武汉)信息工程学院2010-9-3027服务的概念---内部服务(InternalService)中国地质大学(武汉)信息工程学院2010-9-3028服务的概念---内部服务(InternalService)中国地质大学(武汉)信息工程学院2010-9-3029服务的概念---外部服务(ExternalService)中国地质大学(武汉)信息工程学院2010-9-3030服务的概念---WebService中国地质大学(武汉)信息工程学院2010-9-3031SOA结构模型流程总线描述服务描述服务描述服务描述服务描述服务描述中国地质大学(武汉)信息工程学院2010-9-3032SOA工作角色z消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。响应消息请求消息服务请求者服务提供者服务请求者和提供者中国地质大学(武汉)信息工程学院2010-9-3033SOA工作角色服务请求者服务提供者和请求者服务提供者服务提供者聚合的服务请求者中国地质大学(武汉)信息工程学院2010-9-3034SOA工作角色作为中介的服务代理查找发布绑定服务请求者服务代理服务提供者中国地质大学(武汉)信息工程学院2010-9-3035SOA工作角色中国地质大学(武汉)信息工程学院2010-9-3036XML简介zXML(ExtensibleMarkupLanguage)是由W3C制定的一种网络上的通用语言。z同HTML一样,XML也是SGML(StandardGeneralMarkupLanguage)的一个子集。z不同于HTML的是,XML不是一种预定义标记语言,而是一种元语言,可以用来描述其它的语言,它允许用户定义自己的标签。zXML的目标是“允许普通的SGML在Web上以目前HTML的方式被服务、接收和处理,要求易于实现,并且可以在SGML和HTML之间互相操作”。zXML摒弃了SGML过于复杂和难于处理的缺点,迅速在Web世界中得到了广泛推广和应用。中国地质大学(武汉)信息工程学院2010-9-3037一个XML文档的DOM结构中国地质大学(武汉)信息工程学院更多XML参考z://en.wikipedia.org/wiki/Xml中国地质大学(武汉)信息工程学院SOA带来的好处z利用现有的资产–SOA提供了一个抽象层,通过这个抽象层,企业可以继续利用它在IT方面的投资,方法是将这些现有的资产包装成提供企业功能的服务。组织可以继续从现有的资源中获取价值,而不必重新从头开始构建。z更易于集成和管理复杂性–在面向服务的体系结构中,集成点是规范而不是实现。这提供了实现透明性,并将基础设施和实现发生的改变所带来的影响降到昀低限度。通过提供针对基于完全不同的系统构建的现有资源和资产的服务规范,集成变得更加易于管理,因为复杂性是隔离的。当更多的企业一起协作提供价值链时,这会变得更加重要。中国地质大学(武汉)信息工程学院z更快的响应和上市速度–从现