技术开发 频道

ESB如何帮助您满足SOA解决方案的需求

    ESB 核心原则

    图 3 显示了服务请求者、服务提供者和 ESB 之间的逻辑关系。服务请求者和提供者通过交换消息进行交互。充当交互中的逻辑中间层的 ESB 提供了功能的请求者和功能的提供者之间松散耦合的互连。ESB 作为逻辑中间层的角色允许截获消息,并在消息在服务请求者和服务提供者之间流动时对消息进行处理。该处理称为中介。

    图 3. 服务虚拟化
     
    务必要了解 ESB 体系结构模式可以通过不同的方式物理地实现。在图 1 中,ESB 作为集中的集线器出现,并且该体系结构模式在许多解决方案中的物理实现事实上都是一个物理集线器。图 3 试图说明该体系结构模式可以具有不同的物理实现;例如,可以分散 ESB,以便能够在服务请求者环境、服务提供者环境、集中的集线器环境(或者是那些实现的任何组合)中物理地通过中介进行传递。(在本系列的后续各期中,您将了解有关各种 ESB 拓扑的更多详细信息。)

    对各种类型的中介的支持使 ESB 可以满足支持关注事项分离的两个核心原则:服务虚拟化和面向方面的连接。第一个原则(服务虚拟化)指的是 ESB 在服务交互期间虚拟化以下内容的能力:

    协议和模式。 交互参与者不需要使用相同的通信协议或交互模式。例如,某个请求者可能需要通过某种固有的同步协议进行交互,而服务提供者可能需要使用某种固有的单向协议进行交互,并使用两个相互关联的交互。ESB 提供所需的转换以屏蔽协议和模式切换。
    接口。服务请求者和提供者不需要就用于交互的接口达成一致。例如,请求者可以使用一种形式的消息来检索客户信息,提供者可以使用另一种形式的消息。ESB 提供所需的转换以协调差异。
    身份。交互中的参与者不需要知道交互中的其他参与者的身份(例如,地址)。例如,某个请求可能由不同物理位置的多个潜在提供者中的任何一个来满足,而服务请求者不需要意识到这一点。实际提供者仅对 ESB 可知,并且事实上可以更改而不影响请求者。ESB 提供所需的路由以隐藏身份。

    第二个核心原则是面向方面的连接。面向服务的解决方案包括多个横切方面 (cross-cutting aspect),例如安全性、管理、日志记录和审核。ESB 可以代表服务请求者和提供者实现或执行横切方面,从而从请求者和提供者的关注事项中消除此类方面。面向方面的连接和更熟悉的面向方面的编程概念之间的相似性是非常明白的,并且在不同的上下文中提供了同样的价值。

    通过中介应用这些核心原则使得 ESB 可以影响交互中的服务质量。可以通过抽象让参与者不必了解交互的某些方面。例如,可以考虑审核:如果某个解决方案需要审核,ESB 可以向交互中添加审核而不影响参与者。类似地,ESB 可以通过使用自己的虚拟化功能来重试失败的交互,从而添加或增强服务级别协议,或者在更复杂的情况下,ESB 可以将请求者的要求与提供者的功能进行匹配。不过存在相关的限制,因为交互的某些方面是无法抽象的。例如,如果 ESB 无法可靠地与参与者之一进行交互,则 ESB 就无法提供可靠的端到端交互。

    逻辑模型的以 ESB 为中心的视图

    本文前面一个部分已将 ESB 在整个 SOA Foundation 范围中进行了定位(请参见图 1 和图 2),并且主要以从外到内的角度研究 ESB。下面将以从内到外的角度研究 ESB。图 4 描绘了 ESB 与该参考体系结构逻辑模型的其他部分之间的许多重要关系。

    图 4. 逻辑模型的以 ESB 为中心的视图
     

    应用程序逻辑与集成逻辑的比较

    请注意,有几个 SOA Foundation 部分通过 ESB 互连,即交互、流程、信息、合作伙伴、业务应用程序和访问服务。这些部分已分组到单个标签为应用程序服务 的类别中,该类别定位在 ESB 外面。分组为应用程序服务的 Foundation 部分用于实现不同形式的服务请求者和服务提供者。这是解决方案中的应用程序或业务逻辑,旨在实现特定于领域的业务目标。ESB 实现解决方案中的连接或集成逻辑。此逻辑执行服务虚拟化和面向方面的连接,旨在实现应用程序服务之间随需应变的互连。

    在理想的面向服务的解决方案中,应用程序和业务逻辑与连接和集成逻辑之间的分离是“彻底的”,意味着服务请求者和服务提供者(应用程序服务)不包含连接或集成逻辑,并且 ESB 不包含应用程序或业务逻辑。只有通过架构这种彻底的分离,企业才能实现从 SOA 中寻求的灵活性、敏捷性和重用。

    有时很难在应用程序和业务逻辑与连接和集成逻辑之间进行区分。不存在严格的指导原则,事实上,具体的选择可能取决于企业的性质甚至是企业中的特定情况。一个通常有效的指导原则是利用语义和语法之间的区别。应用程序和业务逻辑创建、读取、更新或删除与实现业务目标相关联的语义。相反,连接和集成逻辑仅修改与实现必要的互连相关联的语法。一个相关的指导原则是利用交互特征。应用程序和业务逻辑是主动的,因为此逻辑创建或使用服务交互中使用的消息(请求和响应);连接和集成逻辑是被动的,因此此逻辑只是对业务逻辑生成的消息做出反应,并且只是将消息从一个参与者移动到另一个参与者。

0
相关文章