使用UML服务组件表示SOA体系结构模式

作为一位架构师,您常常面临来自客户企业架构师和 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 参考体系结构

                                    图 1. 逻辑 SOA 参考体系结构

  这个 SOA 模式由 ESB 基础结构、服务交互点 (SIP) 或端点组成,如表 1 所示。

 
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) 文件。通过服务存储库存储并管理这些服务元数据文件。交互服务

  这些交互服务节点可以作为用户的 SOA 入口点。这些交互服务为 SOA 提供表示层,其中对相关的接口进行

  了抽象,并聚合了最终用户和 SOA 应用程序之间的各个信息源。
交互服务可以分为三类主要的服务:

  用户接口服务

  由使用仪表板进行决策制定和可视化操作的门户应用程序组成。

  用户交互服务

  由可视化、协作、组合应用程序、警报和表格组成。

  部署服务

  包含移动设备、浏览器和富客户端。

  交互服务使用支持的模板组件以简单地创建组合应用程序。这些组合应用程序:

  • 为外包的或者内部的服务应用程序提供基础。

  • 支持富客户端和移动设备最终用户客户端。

  • 提供高度自定义和动态的数据,这将提供实时的可见性,以便将结果与基础业务流程度量关联起来。

  • 作为仪表板进行使用,为用户提供该项目的关键性能指标 (KPI) 的实时视图。

  交互服务

  图 3. 交互服务

  组合应用程序中的每个部分都可能包含预先构建的、具有特定功能和相关联的工作流的 Portlet。交互服务还可以具有内置的筛选功能、基于浏览器的配置向导、交互的 Web 窗体、搜索、Web 2.0 技术和协作。例如,协作服务组件是一个完全集成的、基于门户的协作环境,该环境包括电子邮件、日历和日程安排、即时消息传递、Web 会议、文档以及 Web 内容管理。
流程服务

  图 4 显示了用于在 SOA 域内执行其功能的流程服务和组件。流程服务使用业务流程和中介模块来实现它的业务流需求。流程服务使用 SCA 编程模型对使用和产生业务数据的业务服务进行建模。

  流程服务

  图 4. 流程服务

  可以使用业务流程执行语言 (BPEL) 来定义业务流程。业务流程是在预定义的序列中调用以实现业务目标的一组业务相关的活动、规则和条件。业务规则是一种通过业务功能的外部化来实现和实施业务策略的手段。外部化支持从应用程序的其他方面独立地管理业务规则。这种独立性支持动态业务规则更新功能,从而提供了更加灵活的业务。

  SCA 组件由接口、引用和实现组成。服务组件可以包含使用 Java 编写的接口或者 WSDL 端口类型。业务流程类型组件由流程实现类型组成,这个流程实现类型可以通过 Java 接口或者 WSDL 端口类型接口实现一个或者多个 SCA 接口。流程运行的时间可能很长,也可能很短;运行时间很短的流程称为微流。运行时间很长的业务流程可以与多个合作伙伴进行交互,并且通过执行标准的、无状态的 Web 服务调用来进行交互。

  可以通过 Web 服务接口与各个合作伙伴发生交互。BPEL 基于 WSDL 和 XML 模式构建。可以按 BPEL 规范定义的那样,使用一个用于语法扩展的 XML 模式,以及应用于语义约束的一组全面的规则,来完成对流程模型的验证。
信息服务

  在图 5 中,您可以看到 ESB 的信息服务栈。

  信息服务

  图 5. 信息服务

  它包含下面这些组件:

  元数据管理

  提供关于数据的信息(元数据是关于数据结构和含义的信息。元数据管理组件可以管理元数据、元模型和元-元模型。)

  元模型(也称为元-元数据)定义了元数据的结构和语义。标准化的元模型示例包括 UML 和公共仓库元模型(Common Warehouse Metamodel,CWM)。元-元模型层由结构的描述和元-元数据的语义组成。它试图提供一种公共语言,以描述信息的所有其他模型。MetaObject Facility (MOF) 是一种用于元-元模型的标准。(有关更多信息,请参阅参考资料部分。)

  提取、转换和加载 (ETL)

  从一个或者多个数据源提取、转换和加载数据到一个或者多个目标(ETL 支持数据整合、迁移和传播,并且它与数据仓库和业务智能功能紧密结合。)

  联合

  使用数据和内容类以联合异类内容源的数据(这些分散的方法可以减少数据和内容的冗余、带宽、存储、所需进行的同步,以及与使用集中方法相关的附加管理成本。对分布式信息源的实时访问也为业务智能带来了新的功能。)

  联合减少了为各种数据源开发和维护自定义应用程序编程接口 (API) 的需要。通过缓存频繁使用的数据,以及使用物化查询表 (MQT) 和分布式查询优化与执行,联合还可以改善性能。为了提高性能,联合的服务器还可以缓存并创建 MQT 表以提高性能,这些表可以是来自目标的联合数据源的行的子集。
数据布置(复制和缓存)

  从一个位置复制数据到另一个位置(目标位置可以是一个中央位置,如数据仓库,也可以是网络上的另一个分布式位置。在网格环境中,复制和缓存服务用于创建布置管理服务以满足 QoS 的目标。根据访问模式和消费应用程序位置的不同,布置管理服务通过创建缓存或副本来改善响应时间以及信息的可用性。分阶段数据治理使得组织能够更好地控制信息流的生命周期。)

  数据建模

  提供了逻辑、物理和元数据模型的聚合,用于存储企业各自的模型(这些数据模型采用数据结构和数据使用的形式,对业务和业务应用程序有着直接的影响)。

  对数据模型进行仔细地设计同样可以提高整体事务性能。在事务类型方面存在以下依赖关系:联机事务处理 (OLTP) 事务使用 E/R 模型;数据仓库事务使用多维建模技术。

  搜索

  主要使用它自己的搜索机制(最通用的搜索功能是通过一种查询语言,如 SQL 和 XQuery。数据库搜索对于检索结构化的和精确匹配的数据来说是非常合适的,但是需要熟悉数据模型结构以构造相应的查询。)

  数据库搜索在范围上具有一定的局限;它不适合相关性排序、模糊搜索,或者多个关键字搜索。为了使搜索引擎实现更高的性能、灵活性或者相关性排序,引擎有时直接连接到数据库,以便从数据库提取数据并生成索引。

  分析方法

  帮助更好地进行决策制定、数据挖掘,以及跨部门的报告(传统的分析方法包括报告、数据挖掘、仪表板、记分卡、业务性能管理。各个组织都希望能够实时地访问异类数据源,以确保对相关规定的遵从、更好地对客户进行响应、预测市场趋势、提高操作效率。)

  分析组件与交互服务的组合应用程序的功能和特性紧密地结合在一起,并为业务应用程序提供实时的 KPI 视图。将来,分析将构建增强的智能,以访问和关联来自异类信息源的信息,以便为更好地制定业务决策提供新的见解。

  合作伙伴服务

  合作伙伴服务用作 SOA 的重用入口点,如图 6 所示。这意味着,遗留系统和电子数据交换 (EDI) 系统在自定义适配器的帮助下,可以连接到 SOA 企业体系结构,并与 ESB 联系在一起,从而提高操作效率和 QoS。适配器提供了 EIS 和集成代理之间的通信。每个后端系统或者业务应用程序都需要一个特定的适配器。

  业务集成适配器由一组软件 API 组成,提供了与后端企业信息系统 (EIS) 的本地通信,以及配置业务对象和适配器的工具。

图 6. 合作伙伴服务

  图 7 显示了业务集成中所使用的一种常见模式,这个模式需要在各种后端业务应用程序系统之间对语义上类似的数据进行同步。该场景显示了两个不同的后端系统,通过使用业务集成适配器,它们都与运行在流程服务器上的业务集成应用程序进行了集成。通过利用相同的 SCA 编程模型和其他集成应用程序所使用的组件,可以实现适配器的集成。

  业务集成适配器服务

  图 7. 业务集成适配器服务

  图 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 显示了使用业务流程和策略管理组件为企业的业务应用程序提供业务安全服务的业务应用程序服务。

  业务应用程序服务

  图 8. 业务应用程序服务

  业务流程和策略管理组件使用了下面的安全组件,以实现它对业务应用程序的安全职责。

  安全治理框架

  处理对企业内部的有效治理结构和决策权的需求(这一框架用于建立一系列命令、职责和权力,以确保从安全的角度对企业业务应用程序进行有效控制)。

  信任管理

  在任何两个将要一起执行安全业务事务的企业或者组织之间建立信任(信任建立在这两个实体都同意遵守一组关系和责任管理规则以执行相应业务的基础上)。

  从技术的角度来看,还可以使用各种加密方法来建立信任,包括加密密钥、私钥或公钥、数字签名,或者协议。

  标识和访问管理

  提供了必要的 ID 管理和跨企业的访问权限。这个组件使用了下面的附加组件来实现它的服务:

  • HR 标识供给,以便通知管理人员有关 ID 状态更改的情况,并触发合适的工作流初始化工作。

  • 审批组件,以获得进行标识或信息访问的修改或更新所需的管理批准。

  • 用户自助组件,使得最终用户能够执行某些安全管理任务,而无需管理监督,如周期性地更改密码。

  • 委托组件,以提供将 IT 安全管理功能委派给其他人的能力。

  • 重新验证组件,以提供对需要定期进行审批的系统的访问。
确保系统和网络的安全

  提供安全服务,如防火墙、入侵检测系统、病毒检测、补丁管理以及操作和网络安全(业务应用程序服务组件使用一个联合组件来管理企业中许多不同的服务环境。)

  数据保护

  在业务信息内容传输期间或者在它的目的地,负责业务信息内容的安全(通过管理私有策略、获得关于敏感信息的详细报告、发布用户检查的策略,以及捕获并实施用户首选项,数据保护组件可以建立信任)。

  风险管理

  在企业 IT 系统中确定相关的风险级别,并确定需要采取有效措施来根据成本优势分析评估它对整体安全操作的影响,以及对系统的影响。

  遵从性管理

  确保遵从外部联邦的或者国家/地区的法律法规,并在内部遵从 IT 组织的业务安全策略。

  审核跟踪和记录

  调解和评估如何在日常操作中实际应用 IT 系统中引入的不同 IT 安全策略,以确保对内部和外部策略的遵从性。(这有助于管理和技术团队在背离策略的情况下迅速地采取纠正措施。)

  应用程序和数据访问服务

  应用程序和数据访问服务组件用作信息和 SOA 的重用入口点,如图 9 所示。跨异类技术的服务之间的连通性是 SOA 的基础。图 9 显示了一个带有应用程序和数据访问服务组件的企业应用程序场景,它支持各种交互协议和 QoS。当大多数组织决定将应用程序公开为 SOA 环境中的服务时,他们的业务应用程序必须能够处理各种不同的数据表示形式。

  处理各种数据表示形式已成为一项挑战;对于一般通用的 API 来说,迫切地需要具有处理各种数据源的能力。SCA 编程模型可以公开与基础数据层进行交互的服务。有一种称为关系数据库数据访问服务 (RDB DAS) 的可靠数据访问实用工具,它在基于 SCA 的应用程序中提供了与服务数据对象 (SDO) 的紧密集成。

  应用程序和数据访问服务

  图 9. 应用程序和数据访问服务

  总结

  架构师和利益相关者常常发现,对于清楚地说明 SOA 的体系结构模式,并确定选择哪一个入口点,这是一项颇具挑战性的工作。因此,他们可能希望选择多个 SOA 入口点,以便解决企业所面临的最紧迫和最具挑战性的问题。在阅读完本文之后,通过在各个入口点所标识的各种节点上进行深入研究,架构师和其他重要的参与者可以帮助他们的组织更好地满足其需求,并开始他们的 SOA 体系结构之旅。

  在本文中,您从逻辑的角度了解了 SOA,以及如何创建节点和相关的 UML 组件,它们可以以一种非专有的、与产品无关的方式来表示 SOA 的参考体系结构。

posted @ 2008-07-16 16:18  李占卫  阅读(772)  评论(0编辑  收藏  举报