(源自:http://www.ibm.com/developerworks/cn/architecture/ar-logsoa/)
使用 UML 服务组件表示 SOA 体系结构模式帮助利益相关者更好地了解组成 SOA 的服务组件 | ![]() |
![]() |
级别: 初级 Prithvi Rao (prao@us.ibm.com), 认证 IT 架构师, IBM 2007 年 9 月 03 日 作为一位架构师,您常常面临来自客户企业架构师和 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)组成,该总线可以连接请求者和提供者,并在它们之间提供交互的服务。 这个 SOA 模式由 ESB 基础结构、服务交互点 (SIP) 或端点组成,如表 1 所示。
ESB ESB 用作 SOA 模型的连接入口点,并且提供了下列服务:
在图 2 中,您可以看到,ESB 支持最新的 SCA 编程模型,并提供了一个缺省的消息传递引擎,该引擎构建于 Java™ Message Service (JMS) 规范的基础之上。这个 ESB 使用了一个中介组件(模块),该组件基于 SCA 模块,以便为服务请求者和服务提供者之间的消息提供中介。从而可以定制 ESB 中的中介服务,以形成复杂的中介模式,这种中介模式采用与具体位置和标识无关的方式来实现虚拟化。它们还可以提高服务质量 (QoS) 需求,如性能、消息的加密/解密,以及可靠且安全的内容交付及事务。 这个中介组件由以下三个组件组成:
ESB 使用服务注册中心和存储库组件作为动态查找机制,以提供关于服务端点的信息。因此,注册中心和存储库服务可以优化对服务元数据的访问,以及服务交互和策略的管理。它还支持其他标准的注册中心和存储库的集成和联合。在其最基础的状态下,它是由服务元数据构件文档组成的,如 XML 模式定义语言 (XSD) 或者 Web 服务描述语言 (WSDL) 文件。通过服务存储库存储并管理这些服务元数据文件。 交互服务 图 3 中显示了具有 ESB 的服务集成点的交互服务。这些交互服务节点可以作为用户的 SOA 入口点。这些交互服务为 SOA 提供表示层,其中对相关的接口进行了抽象,并聚合了最终用户和 SOA 应用程序之间的各个信息源。 交互服务可以分为三类主要的服务:
交互服务使用支持的模板组件以简单地创建组合应用程序。这些组合应用程序:
组合应用程序中的每个部分都可能包含预先构建的、具有特定功能和相关联的工作流的 Portlet。交互服务还可以具有内置的筛选功能、基于浏览器的配置向导、交互的 Web 窗体、搜索、Web 2.0 技术和协作。例如,协作服务组件是一个完全集成的、基于门户的协作环境,该环境包括电子邮件、日历和日程安排、即时消息传递、Web 会议、文档以及 Web 内容管理。 流程服务 图 4 显示了用于在 SOA 域内执行其功能的流程服务和组件。流程服务使用业务流程和中介模块来实现它的业务流需求。流程服务使用 SCA 编程模型对使用和产生业务数据的业务服务进行建模。 可以使用业务流程执行语言 (BPEL) 来定义业务流程。业务流程是在预定义的序列中调用以实现业务目标的一组业务相关的活动、规则和条件。业务规则是一种通过业务功能的外部化来实现和实施业务策略的手段。外部化支持从应用程序的其他方面独立地管理业务规则。这种独立性支持动态业务规则更新功能,从而提供了更加灵活的业务。 SCA 组件由接口、引用和实现组成。服务组件可以包含使用 Java 编写的接口或者 WSDL 端口类型。业务流程类型组件由流程实现类型组成,这个流程实现类型可以通过 Java 接口或者 WSDL 端口类型接口实现一个或者多个 SCA 接口。流程运行的时间可能很长,也可能很短;运行时间很短的流程称为微流。运行时间很长的业务流程可以与多个合作伙伴进行交互,并且通过执行标准的、无状态的 Web 服务调用来进行交互。 可以通过 Web 服务接口与各个合作伙伴发生交互。BPEL 基于 WSDL 和 XML 模式构建。可以按 BPEL 规范定义的那样,使用一个用于语法扩展的 XML 模式,以及应用于语义约束的一组全面的规则,来完成对流程模型的验证。 信息服务 在图 5 中,您可以看到 ESB 的信息服务栈。 它包含下面这些组件:
合作伙伴服务 合作伙伴服务用作 SOA 的重用入口点,如图 6 所示。这意味着,遗留系统和电子数据交换 (EDI) 系统在自定义适配器的帮助下,可以连接到 SOA 企业体系结构,并与 ESB 联系在一起,从而提高操作效率和 QoS。适配器提供了 EIS 和集成代理之间的通信。每个后端系统或者业务应用程序都需要一个特定的适配器。 业务集成适配器由一组软件 API 组成,提供了与后端企业信息系统 (EIS) 的本地通信,以及配置业务对象和适配器的工具。合作伙伴服务根据不同的软件供应商使用自定义适配器,包括 SAP、Siebel 和 IBM® WebSphere®(它提供了 WebSphere Adapter Toolkit,以及数十种适配器,包括 WebSphere Adapter for SAP Software 和 WebSphere Adapter for Siebel Business Applications)。 图 7 显示了业务集成中所使用的一种常见模式,这个模式需要在各种后端业务应用程序系统之间对语义上类似的数据进行同步。该场景显示了两个不同的后端系统,通过使用业务集成适配器,它们都与运行在流程服务器上的业务集成应用程序进行了集成。通过利用相同的 SCA 编程模型和其他集成应用程序所使用的组件,可以实现适配器的集成。 图 7 的中心部分显示了使用业务集成应用程序的流程服务器。这个业务集成应用程序可以由 SCA 模块之外的其他服务通过 JMS 导出来调用。通过使用 JMS 导入,这个业务集成应用程序可以在 SCA 模块之外调用其他服务。适配器使用应用程序特定的数据结构或者业务对象与后端系统进行通信,并且使用连接器配置文件进行配置。 当通过导出将一个业务对象入站传递给流程服务器时,使用数据绑定(该导出中的一部分)将其转换为流程服务器可以理解的格式。在将一个业务对象出站传递给适配器时,使用数据绑定(该导入中的一部分)将其转换为适配器可以理解的格式。这种数据同步模式还可以从应用程序特定的格式到通用格式合并业务对象的映射。 一些供应商提供应用程序适配器组件,包括 Ariba Buyer、Clarify、MatrixOne (eMatrix)、JD Edwards、mySAP.com、Oracle Applications、PeopleSoft Portal Intranet、QAD MFG/PRO、Retek、SAP Exchange Infrastructure、Siebel、WebSphere Process Server 和 WebSphere Enterprise Service Bus (ESB)。 以下是一些技术适配器组件:ACORD XML、Microsoft® COM、CORBA、电子邮件、EJB、Microsoft Exchange、FIX 协议、IBM iSeries®、WebSphere Business Integration iSoft Peer-to-Peer Agent、Java Database Connectivity (JDBC)(SQL 和存储过程访问)、JMS、JText、IBM Lotus® Domino®、Society for Worldwide Interbank Financial Telecommunication (SWIFT)、WebSphere MQ、WebSphere Business Integration Message Broker、WebSphere MQ Workflow、Web 服务 和 XML。 有些技术适配器可以使用数据处理程序,包括用于 EDI、SOAP、XML 和各种文本格式的数据处理程序。 这些适配器使用一种通用的适配器框架进行构建,并且是:
业务集成协作组件与其他一些组件(如客户关系管理 (CRM)、Health Insurance Portability and Accountability Act (HIPAA)、卫生保健、订单管理、采购、无线通讯、人身保险等等)相互协作。使用预先构建的模板对与各个组件相关的信息和数据进行简化和同步,可以实现业务集成协作。 例如,与 HIPAA 事务的协作可以使得与所需的规范和标准保持一致,并确保所有的事务和交互能够实现跨多个应用程序和跨企业的互连。代理插件组件提供了创建用户插件节点所需的一些类。微代理插件组件提供了所需的、与访问相关的信息,如代理名称、队列名称、数据源等等。 业务应用程序服务 业务应用程序服务构成了 SOA 的重用入口点。业务应用程序是松散耦合的,以便通过使用 Web 服务为企业带来业务价值。 Web 服务减少了构建昂贵的业务应用程序的成本,并且支持在企业结构中部署新的业务模型。对于大多数组织,在快速部署到主流的过程中,主要的问题是安全性。业务应用程序服务合并了一些业务安全特性,以确保业务事务执行期间的安全。 图 8 显示了使用业务流程和策略管理组件为企业的业务应用程序提供业务安全服务的业务应用程序服务。 业务流程和策略管理组件使用了下面的安全组件,以实现它对业务应用程序的安全职责。
应用程序和数据访问服务 应用程序和数据访问服务组件用作信息和 SOA 的重用入口点,如图 9 所示。跨异类技术的服务之间的连通性是 SOA 的基础。图 9 显示了一个带有应用程序和数据访问服务组件的企业应用程序场景,它支持各种交互协议和 QoS。当大多数组织决定将应用程序公开为 SOA 环境中的服务时,他们的业务应用程序必须能够处理各种不同的数据表示形式。 处理各种数据表示形式已成为一项挑战;对于一般通用的 API 来说,迫切地需要具有处理各种数据源的能力。SCA 编程模型可以公开与基础数据层进行交互的服务。有一种称为关系数据库数据访问服务 (RDB DAS) 的可靠数据访问实用工具,它在基于 SCA 的应用程序中提供了与服务数据对象 (SDO) 的紧密集成。 总结 架构师和利益相关者常常发现,对于清楚地说明 SOA 的体系结构模式,并确定选择哪一个入口点,这是一项颇具挑战性的工作。因此,他们可能希望选择多个 SOA 入口点,以便解决企业所面临的最紧迫和最具挑战性的问题。在阅读完本文之后,通过在各个入口点所标识的各种节点上进行深入研究,架构师和其他重要的参与者可以帮助他们的组织更好地满足其需求,并开始他们的 SOA 体系结构之旅。 在本文中,您从逻辑的角度了解了 SOA,以及如何创建节点和相关的 UML 组件,它们可以以一种非专有的、与产品无关的方式来表示 SOA 的参考体系结构。 致谢 作者要感谢 Pavlick 博士,他是 IBM DoD 的首席技术官,感谢他为逻辑 SOA 模型提供了 Federal 市场的需求以及一个可重复的过程,该过程可以使用 SOA 节点存储库帮助销售和体系结构团队迅速地对客户做出响应。
参考资料 学习
获得产品和技术
讨论
关于作者
|