关键字:soa
图 2-3 面向服务的术语
基于接口的设计
在组件和服务开发中,都需要进行接口设计,这样软件实体就可以实现和公开其定义的关键部分。因此,在基于组件和面向服务的系统中,“接口”的概念对于成功的设计非常关键。下面是一些与接口有关的重要定义:
接口:定义一组公共方法签名,它按照逻辑分组但是没有提供实现。接口定义服务的请求者和提供者之间的契约。接口的任何实现都必须提供所有的方法。
已发布接口:一种可唯一识别和可访问的接口,客户端可以通过注册中心来发现它。
公共接口:一种可访问的接口,可供客户端使用,但是它没有发布,因而需要关于客户端部分的静态知识。
双接口:通常是成对开发的接口,这样,一个接口就依赖于另一个接口;例如,客户端必须实现一个接口来调用请求者,因为该客户端接口提供了某些回调机制。
第 23 页的图 2-4 定义了客户关系管理 (CRM) 服务的 UML 定义,它表示为一个 UML 组件,实现接口 AccountManagement、ContactManagement 和 SystemsManagement。在这些接口中只有头两个接口是已发布接口,不过,后者是公共接口。注意,SystemsManagement 接口和 ManagementService 接口构成了双接口。CRMservice 可以实现许多这样的接口,但是它以多种方式行为的能力取决于客户端在行为的实现方面是否允许有大的灵活性。甚至有可能给特定类型的客户端提供不同或附加的服务。在一些运行时环境中,这样的功能也用于在单个组件或服务上支持相同接口的不同版本。
图 2-4 已实现的服务
分层应用程序体系结构
如前所述,面向对象的技术和语言是实现组件的极好方式。虽然组件是实现服务的最好方法,但是您必须理解的一点是,好的基于组件的应用程序未必就构成好的面向服务的应用程序。一旦理解了服务在应用程序体系结构中所起的作用,组件开发人员就很有可能会利用现有的组件。进行这种转变的关键是认识到面向服务的方法意味着附加的应用程序体系结构层。第 24 页中的图 2-5 演示了如何将技术层应用于程序体系结构以提供粒度更粗的实现(它更靠近应用程序的使用者)。为称呼系统的这一部分而创造的术语是“应用程序边界”,它反映了服务是公开系统的外部视图的极好方法的事实(通过内部重用并结合使用传统组件设计)。
文章来源于领测软件测试网 https://www.ltesting.net/