作为一位架构师,您常常面临来自客户企业架构师和 IT 利益相关者的询问,他们要求您用非专有的、与产品无关的方式,清楚地说明面向服务的体系结构 (SOA) 模式和服务组件。
在本文中,使用统一建模语言(Unified Modeling Language,UML)模型来描述 SOA 体系结构模式及其相关的服务组件。您还将在行业标准的 UML 格式上下文中,了解有关 SOA 模式服务组件的内容,以帮助利益相关者更好地了解组成 SOA 的服务组件。
引言
如果您需要以一种逻辑格式来表示面向服务的体系结构 (SOA),以便利益相关者可以更好地使用各种构件,在他们的体系结构和设计工作中利用 SOA 统一建模语言 (UML) 组件,那么本文可以为您提供相应的帮助。了解如何利用 SOA 体系结构模式的服务组件(采用 UML 节点的形式)以创建 SOA 场景。以一种与产品无关*的方式了解 SOA 模式及其相关联的服务,其中使用 UML 表示 SOA 的组件、连接以及与 SOA 体系结构模式的交互。
逻辑 SOA 参考体系结构
在图 1 中,采用一种与 UML 产品无关的方式表示 SOA 模式。在它最简单的形式中,SOA 模式由分离的企业服务总线(Enterprise Service Bus,ESB)组成,该总线可以连接请求者和提供者,并在它们之间提供交互的服务。
图 1. 逻辑 SOA 参考体系结构
这个 SOA 模式由 ESB 基础结构、服务交互点 (SIP) 或端点组成,如表 1 所示。
表 1. 服务交互点
服务 所提供的功能
交互服务 使用门户,或者其他相关的 Web 技术,向使用者或者用户提供内容和数据的能力和功能。
流程服务 根据业务流程和业务流,管理消息流和多个服务之间的交互的控制功能。
信息服务 联合、复制和转换不同数据源的功能。
合作伙伴服务 将合作伙伴电子数据交换 (EDI) 和遗留系统集成到共同的企业体系结构中的功能。
业务应用程序服务 业务应用程序服务调用服务使用者的功能。
应用程序和数据访问服务 将核心应用程序与外部数据存储库以及打包的应用程序进行集成的功能。
ESB 用作 SOA 模型的连接入口点,并且提供了下列服务:
?请求和响应服务
?转换
?基于内容的路由
?自定义的日志记录
?优化
?监视
ESB 还提供了各种服务的通用连接和虚拟化。为了满足最新业务应用程序的需求,ESB 充分利用了服务组件体系结构 (SCA) 编程模型。
在图 2 中,您可以看到,ESB 支持最新的 SCA 编程模型,并提供了一个缺省的消息传递引擎,该引擎构建于 Java? Message Service (JMS) 规范的基础之上。这个 ESB 使用了一个中介组件(模块),该组件基于 SCA 模块,以便为服务请求者和服务提供者之间的消息提供中介。从而可以定制 ESB 中的中介服务,以形成复杂的中介模式,这种中介模式采用与具体位置和标识无关的方式来实现虚拟化。它们还可以提高服务质量 (QoS) 需求,如性能、消息的加密/解密,以及可靠且安全的内容交付及事务。
图 2. 企业服务总线
这个中介组件由以下三个组件组成:
消息模型
以正在考虑的消息的元模型为基础(ESB 应该能够支持服务提供者和服务请求者之间的、不同类型的消息模型流,从而创建一个与消息-模型无关的交换。)
中介流
包含一些接口,用以调用中介流,以便在服务请求者和服务提供者之间执行中介,并提供对外部服务的引用(中介流支持以下几种中介模式:监视器、修改器、验证器、缓存、路由器、发现克隆等等。)
通信协议
提供对不同通信协议的支持,如 MQ、Java Message Service (JMS)、HTTP 和远程方法调用 (RMI),以连接服务提供者和服务使用者(这些通信协议支持多种交互模式,如请求/响应、发布/订阅、同步/异步。)
ESB 使用服务注册中心和存储库组件作为动态查找机制,以提供关于服务端点的信息。因此,注册中心和存储库服务可以优化对服务元数据的访问,以及服务交互和策略的管理。它还支持其他标准的注册中心和存储库的集成和联合。在其最基础的状态下,它是由服务元数据构件文档组成的,如 XML模式定义语言 (XSD) 或者 Web 服务描述语言 (WSDL) 文件。通过服务存储库存储并管理这些服务元数据文件。