技术开发 频道

SOA-面向服务的体系结构概述

    面向服务的体系结构中的角色包括:

    服务使用者:服务使用者是一个应用程序、一个软件模块或需要一个服务的另一个服务。它发起对注册中心中的服务的查询,通过传输绑定服务,并且执行服务功能。服务使用者根据接口契约来执行服务。

    服务提供者:服务提供者是一个可通过网络寻址的实体,它接受和执行来自使用者的请求。它将自己的服务和接口契约发布到服务注册中心,以便服务使用者可以发现和访问该服务。

    服务注册中心:服务注册中心是服务发现的支持者。它包含一个可用服务的存储库,并允许感兴趣的服务使用者查找服务提供者接口。

    面向服务的体系结构中的每个实体都扮演着服务提供者、使用者和注册中心这三种角色中的某一种(或多种)。面向服务的体系结构中的操作包括:

    发布:为了使服务可访问,需要发布服务描述以使服务使用者可以发现和调用它。

    发现:服务请求者定位服务,方法是查询服务注册中心来找到满足其标准的服务。

    绑定和调用:在检索完服务描述之后,服务使用者继续根据服务描述中的信息来调用服务。

    面向服务的体系结构中的构件包括:

    服务:可以通过已发布接口使用服务,并且允许服务使用者调用服务。

    服务描述:服务描述指定服务使用者与服务提供者交互的方式。它指定来自服务的请求和响应的格式。服务描述可以指定一组前提条件、后置条件和/或服务质量 (QoS) 级别。

    除了动态服务发现和服务接口契约的定义之外,面向服务的体系结构还具有以下特征:

    服务是自包含和模块化的。
    服务支持互操作性。
    服务是松散耦合的。
    服务是位置透明的。
    服务是由组件组成的组合模块。

    这些特征也是满足电子商务按需操作环境的要求的主要特征,如第 301 页“e-business on demand and Service-oriented architecture”所定义的。

    最后,我们需要说明的是,面向服务的体系结构并不是一个新的概念。如图 2-8 所示,面向服务的体系结构所涉及的技术至少包括 CORBA、DCOM 和 J2EE。面向服务的体系结构的早期采用者还曾成功地基于消息传递系统(如 IBM WebSphere MQ)创建过他们自己的面向服务企业体系结构。最近,SOA 的活动舞台已经扩展到包括 World Wide Web (WWW) 和 Web 服务。


    图8: 面向服务的体系结构的不同实现

    二.SOA 范围中的服务

    在面向服务的体系结构中,映射到业务功能的服务是在业务流程分析的过程中确定的。服务可以是细粒度的,也可以是粗粒度的,这取决于业务流程。每个服务都有定义良好的接口,通过该接口就可以发现、发布和调用服务。 企业可以选择将自己的服务向外发布到业务合作伙伴,也可以选择在组织内部发布服务。服务还可以由其他服务组合而成。

    三.服务与组件

    服务是粗粒度的处理单元,它使用和产生由值传送的对象集。它与编程语言术语中的对象不同。相反,它可能更接近于业务事务(如 CICS 或 IMS 事务)的概念而不是远程 CORBA 对象的概念。

    服务是由一些组件组成的,这些组件一起工作,共同提供服务所请求的业务功能。因此,相比之下,组件比服务的粒度更细。另外,虽然服务映射到业务功能,但是组件通常映射到业务实体和操作它们的业务规则。作为一个示例,让我们看一看 WS-I 供应链管理(WS-I Supply Chain Management)样本的定购单(PurchaseOrder)组件模型,如图 9 所示。


    图 9: 定购单组件模型

    在基于组件的设计中,可以创建组件来严格匹配业务实体(如顾客(Customer)、定购单(Purchase Order)、定购项(Order Item)),并且封装匹配这些实体所期望的行为的行为。

    例如,定购单(Purchase Order)组件提供获取关于已定购的产品列表和定购的总额的信息的功能;定购项(Order Item)组件提供获取关于已定购的产品的数量和价格的信息的功能。每个组件的实现都封装在接口的后面。因此,定购单(Purchase Order)组件的用户不知道定购单(Purchase Order)表的模式、计算税金的算法、以及定单总额中的回扣和/或折扣。

    在面向服务的设计中,不能基于业务实体设计服务。相反,每个服务都是管理一组业务实体中的操作的完整单元。例如,顾客服务将响应来自任何其他系统或需要访问顾客信息的服务的请求。顾客服务可以处理更新顾客信息的请求;添加、更新、删除投资组合;以及查询顾客的定单历史。顾客服务拥有所有与它管理的顾客有关的数据,并且能够代表调用方进行其他服务查询,以提供统一的顾客服务视图。这意味着服务是一个管理器对象,它创建和管理它的一组组件。

    第四部分:面向服务的体系结构所带来的好处

    如前所述,企业正在处理两个问题:迅速地改变的能力和降低成本的要求。为了保持竞争力,企业必须快速地适应内部因素(如兼并和重组)或外部因素(如竞争能力和顾客要求)。需要经济而灵活的 IT 基础设施来支持企业。

    我们可以认识到,采用面向服务的体系结构将给我们带来几方面的好处,有助于我们在今天这个动荡的商业环境中取得成功
 
    一.利用现有的资产。

    SOA 提供了一个抽象层,通过这个抽象层,企业可以继续利用它在 IT 方面的投资,方法是将这些现有的资产包装成提供企业功能的服务。组织可以继续从现有的资源中获取价值,而不必重新从头开始构建。 

    二.更易于集成和管理复杂性。

    在面向服务的体系结构中,集成点是规范而不是实现。这提供了实现透明性,并将基础设施和实现发生的改变所带来的影响降到最低限度。通过提供针对基于完全不同的系统构建的现有资源和资产的服务规范,集成变得更加易于管理,因为复杂性是隔离的。当更多的企业一起协作提供价值链时,这会变得更加重要。

    三.更快的响应和上市速度。

    从现有的服务中组合新的服务的能力为需要灵活地响应苛刻的商业要求的组织提供了独特的优势。通过利用现有的组件和服务,可以减少完成软件开发生命周期(包括收集需求、进行设计、开发和测试)所需的时间。这使得可以快速地开发新的业务服务,并允许组织迅速地对改变做出响应和减少上市准备时间。

    四.减少成本和增加重用。

    通过以松散耦合的方式公开的业务服务,企业可以根据业务要求更轻松地使用和组合服务。这意味资源副本的减少、以及重用和降低成本的可能性的增加。

    五.说到做到

    通过 SOA,企业可以未雨绸缪,为未来做好充分的准备。SOA 业务流程是由一系列业务服务组成的,可以更轻松地创建、修改和管理它来满足不同时期的需要。

    SOA 提供了灵活性和响应能力,这对于企业的生存和发展来说是至关重要的。但是面向服务的体系结构决不是灵丹妙药,而迁移到 SOA 也并非一件可以轻而易举就完成的事情。请别指望一个晚上就将整个企业系统迁移到面向服务的体系结构,我们推荐的方法是,在业务要求出现或露出苗头时迁移企业功能的适当部分。

0
相关文章