













面向服务的体系结构提供了一种方法,通过这种方法,可以构建分布式系统来将应用程序功能作为服务提供给终端用户应用程序或其他服务。其组成元素可以分成功能元素和服务质量元素。第 25 页的图 2-6 展示了体系结构堆栈以及在一个面向服务的体系结构可能观察到的元素。
注意:面向服务的体系结构堆栈可能是一个容易引起争议的问题,因为各方面的支持者已经提出了几种不同的堆栈。我们的堆栈不是作为服务堆栈提出的。我们之所以在此提出它,是因为我们想要搭建一个有用的框架,在本书的剩余章节中,我们将通过这个框架来组织对 SOA 的讨论。
体系结构堆栈分成两半,左边的一半集中于体系结构的功能性方面,而右边的一半集中于体系结构的服务质量方面。这些元素详细描述如下:
功能性方面包括:
服务质量方面包括:
图 2-7 展示了面向服务的体系结构中的协作。这些协作遵循“查找、绑定和调用”范例,其中,服务使用者执行动态服务定位,方法是查询服务注册中心来查找与其标准匹配的服务。如果服务存在,注册中心就给使用者提供接口契约和服务的端点地址。下图展示了面向服务的体系结构中协作支持“查找、绑定和调用”范例的实体。
面向服务的体系结构中的角色包括:
面向服务的体系结构中的每个实体都扮演着服务提供者、使用者和注册中心这三种角色中的某一种(或多种)。面向服务的体系结构中的操作包括:
面向服务的体系结构中的构件包括:
除了动态服务发现和服务接口契约的定义之外,面向服务的体系结构还具有以下特征:
这些特征也是满足电子商务按需操作环境的要求的主要特征,如第 301 页“e-business on demand and Service-oriented architecture”所定义的。
最后,我们需要说明的是,面向服务的体系结构并不是一个新的概念。如图 2-8 所示,面向服务的体系结构所涉及的技术至少包括 CORBA、DCOM 和 J2EE。面向服务的体系结构的早期采用者还曾成功地基于消息传递系统(如 IBM WebSphere MQ)创建过他们自己的面向服务企业体系结构。最近,SOA 的活动舞台已经扩展到包括 World Wide Web (WWW) 和 Web 服务。
在面向服务的体系结构中,映射到业务功能的服务是在业务流程分析的过程中确定的。服务可以是细粒度的,也可以是粗粒度的,这取决于业务流程。每个服务都有定义良好的接口,通过该接口就可以发现、发布和调用服务。 企业可以选择将自己的服务向外发布到业务合作伙伴,也可以选择在组织内部发布服务。服务还可以由其他服务组合而成。
服务是粗粒度的处理单元,它使用和产生由值传送的对象集。它与编程语言术语中的对象不同。相反,它可能更接近于业务事务(如 CICS 或 IMS 事务)的概念而不是远程 CORBA 对象的概念。
服务是由一些组件组成的,这些组件一起工作,共同提供服务所请求的业务功能。因此,相比之下,组件比服务的粒度更细。另外,虽然服务映射到业务功能,但是组件通常映射到业务实体和操作它们的业务规则。作为一个示例,让我们看一看 WS-I 供应链管理(WS-I Supply Chain Management)样本的定购单(PurchaseOrder)组件模型,如图 2-9 所示。
在基于组件的设计中,可以创建组件来严格匹配业务实体(如顾客(Customer)、定购单(Purchase Order)、定购项(Order Item)),并且封装匹配这些实体所期望的行为的行为。
例如,定购单(Purchase Order)组件提供获取关于已定购的产品列表和定购的总额的信息的功能;定购项(Order Item)组件提供获取关于已定购的产品的数量和价格的信息的功能。每个组件的实现都封装在接口的后面。因此,定购单(Purchase Order)组件的用户不知道定购单(Purchase Order)表的模式、计算税金的算法、以及定单总额中的回扣和/或折扣。
在面向服务的设计中,不能基于业务实体设计服务。相反,每个服务都是管理一组业务实体中的操作的完整单元。例如,顾客服务将响应来自任何其他系统或需要访问顾客信息的服务的请求。顾客服务可以处理更新顾客信息的请求;添加、更新、删除投资组合;以及查询顾客的定单历史。顾客服务拥有所有与它管理的顾客有关的数据,并且能够代表调用方进行其他服务查询,以提供统一的顾客服务视图。这意味着服务是一个管理器对象,它创建和管理它的一组组件。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。