技术开发 频道

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

【IT168 技术文档】

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

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

交互服务

    图 3 中显示了具有 ESB 的服务集成点的交互服务。这些交互服务节点可以作为用户的 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 事务的协作可以使得与所需的规范和标准保持一致,并确保所有的事务和交互能够实现跨多个应用程序和跨企业的互连。代理插件组件提供了创建用户插件节点所需的一些类。微代理插件组件提供了所需的、与访问相关的信息,如代理名称、队列名称、数据源等等。

0
相关文章