技术开发 频道

探索企业服务总线:了解 ESB 如何帮助您满足 SOA 解决方案的需求

    通信协议

    为了支持服务请求者和提供者之间的交互(即接收和发送消息),ESB 必须使用通信协议连接到请求者和提供者。ESB 可以利用不同的通信协议,以支持请求者和提供者之间的不同服务质量;例如,支持“尽最大努力”或“有保证”的交付。ESB 利用的协议范围越广,ESB 能够与之互连的请求者和提供者的范围就越广。

    ESB 本身并不实际提供通信协议,而是利用其操作环境(SOA Foundation 参考逻辑模型中的基础设施服务)提供的一个或多个基础通信结构。可以说 ESB 本身提供了接入点 (on-ramp) 和接出点 (off-ramp) 或绑定,以支持使用各种协议进行交互。

    由于基础通信结构的特征,通信协议本来就支持一种或多种交互模式。一些常见的交互模式包括同步请求/应答、单向(有时称为事件)和发布/订阅(有时称为事件传播)。

    消息模型

    为了与服务请求者和提供者交互,ESB 必须支持相关的消息模型,这些模型定义了交互中使用的消息内容。为此,ESB 必须是与消息模型无关的,并提供配置灵活性以支持服务请求者和提供者定义的消息模型。

    消息模型本身基于元模型,元模型是一种表示消息内容的方法。消息元模型的一个示例为 XML 模式定义语言;事实上,这是 ESB 产品中最常用的消息元模型。消息模型是元模型的特定应用;内容模型的一个示例是某个特定的 XML 模式。ESB 必须显式支持至少一种消息元模型,并且能够支持多种消息元模型。

    虽然该体系结构模式与消息模型无关,但是特定的 ESB 产品可以提供对一组跨行业或特定于行业的标准消息模型的支持,例如卫生保健业的 HL7。这种情况下的支持意味着关联工具中的内置模型识别功能,甚至是优化的运行时转换功能。

    中介流

    为了支持服务请求者和提供者之间的交互所必需的服务虚拟化和面向方面的连接,ESB 提供了中介流。中介流(通常简称为中介)包括通过某个接出点接收来自请求者的入站请求消息,处理请求消息,然后使用某个接入点向提供者发送出站消息。如果适用的话,中介还可以包括接收相关的入站响应消息,处理相关的响应消息,以及向请求者发送出站响应消息。

    解决方案中的中介流可根据复杂性的不同(从非常简单到非常复杂)而变化各异。中介流还可以具有不同的可重用性,从特定于单个交互,到适用于某个解决方案中甚至跨解决方案的所有交互。中介流中执行的某些类型的消息处理往往是高度可重用的。这些经常出现、高度可重用、定义良好的消息处理类型称为中介模式。ESB 产品可以提供一个或多个预先构建的中介模式。提供多个预构建中介模式的 ESB 产品提供了一个中介框架,此框架支持通过组合中介模式来创建中介流。

    中介流如何实现服务虚拟化?协议和模式的虚拟化意味着不同通信协议和交互模式之间的转换。如果某个 ESB 同时拥有用于两种协议的接入点和接出点或绑定,则该 ESB 只能在这两种协议中的一种协议与另一种协议之间转换。交互模式之间的转换可能本来就具有对入站或出站协议的支持,或者可能需要附加的处理。例如,从使用 SOAP/HTTP 的入站单向请求到使用基于队列的协议的出站单向请求的转换(其中消息模型相同)是固有的,因为基于队列的协议本来就是单向的。相反,使用 SOAP/HTTP 的入站同步请求/应答,到使用基于队列的单向请求和单向应答的出站异步请求/应答之间的转换,将要求中介流支持基于队列的请求和应答之间的相关性。与转换相关的中介模式包括接入点和接出点以及相关性模式,不过由于相关性是中介流的核心,在许多情况下,中介框架都隐含地包括了相关性模式。

    接口的虚拟化要求 ESB 支持服务请求者和提供者定义的消息模型之间的句法转换。使用一种消息模型的服务请求者发送的入站消息,可能必须转换为服务提供者所需的特定消息模型,并且任何响应消息也都必须进行转换。与转换相关的中介模式包括支持单个元模型的模式(例如 XSLT)、支持多个元模型更通用的“任意到任意”转换模式,以及其他形式的消息处理,例如消息充实和消息筛选(更改语法而不是语义)。

    身份的虚拟化要求 ESB 支持各种形式的路由。路由使 ESB 可以基于请求时的条件,将来自服务请求者的消息发送到静态(例如,在部署时)或动态选择的服务提供者。路由中介流涵盖从非常简单到非常复杂的情况。例如,简单的路由中介流可能除了提供一个不同的提供者地址外,其他什么也不做;该地址可能来自某个在部署时设置的属性。较复杂的路由中介流可能执行以下任务:

    *访问某个注册中心,以了解请求者的需求和潜在提供者的供给。
    *使用复杂的匹配算法来确定“正确”的提供者。
    *执行上面讨论的各种转换和变换。
 
    与路由相关的中介模式允许进行简单地址操作、各种形式的注册中心访问和各种形式的决策。更大粒度的路由模式可以帮助实现不同的服务质量;例如,提供请求重试和故障转移,甚至基于从服务注册中心提取的策略来对请求者和提供者进行动态匹配。ESB 可以支持更复杂和更成熟的路由模式,例如请求的分发和响应的相关性聚合,甚至是复杂的事件处理。

    中介流如何实现面向方面的连接?中介流可以简单地记录某个请求已从请求者传递到了提供者,阻止来自未知或未经授权的请求者的请求,或者基于提供者可用性来阻止请求。相关中介模式包括适合于解决方案的审核和日志记录。其他中介模式提供了对安全和管理策略定义点的直接或间接访问,以便中介流能够执行适当的控制。

    通过此讨论,可以清楚看到许多中介流可能由支持各种形式的服务虚拟化和面向服务的连接的中介模式组成。各个中介模式被适当地放在中介流中以实现预期的交互目标,以及执行管理和安全策略。

0
相关文章