组成消息处理流水线的制作方法

文档序号:6594705阅读:265来源:国知局
专利名称:组成消息处理流水线的制作方法
组成消息处理流水线背景1.背景和相关技术计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息的能力 已转变了人们生活和工作的方式。计算机系统现在通常执行在计算机系统出现以前手动执 行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机系统彼此耦合并耦合到 其他电子设备以形成计算机系统和其他电子设备可以在其上传输电子数据的有线和无线 计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的 计算环境上。在分布式计算环境中,常常期望使连接服务的协议实现与应用程序处理逻辑解 耦。为这种组合建立的模式是为了实现分层协议栈,其中每一层构件在下层协议的特征上。 例如,基层可以提供原始数据连接而较高层添加安全或递送保证。通过使用消息抽象,协议 层还可以具有某种程度的合成独立性。例如,安全协议可用于许多不同的传输协议。分层协议栈常常被抽象为消息处理流水线。随后用协议独立的方式来编写应用程 序逻辑并稍后与流水线中的一个或多个组合。然而,多种技术的消息处理流水线的当前实 现都有多个不同的限制。例如,消息处理流水线中的组件通常按照在时间上且在物理上耦 合的方式构成。协议栈中的时间耦合约束应用程序的行为,例如,使得应用程序在向前移动之前 等待消息处理流水线完成操作。时间耦合的一个示例是当在可以执行下一协议之前协议要 求对消息的确认的情况。第二个示例是当协议将多个消息分批处理成供下一协议传送的单 个消息的情况。这些示例要求协议之间的同步,并且可能要求应用程序参与到该同步中以 实现特定消息交换模式。物理耦合在协议栈对其执行环境具有依赖性的情况下发生。例如,协议可以依赖 于将特定软件库安装在本地机器上。多个协议可以各自具有这些依赖性。可以仅将协议栈 部署到同时满足所有依赖性的执行环境。公司可能需要购买附加软件或硬件来构造这种执 行环境,因为每一个所部署的流水线具有不同的依赖性要求。简要概述本发明涉及用于构成消息处理流水线的方法、系统和计算机程序产品。计算机系 统访问应用程序的当前流水线规范。当前流水线规范指定了如何构造应用程序的消息处理 流水线,包括指定要被包括在应用程序的消息处理流水线中的消息收发组件。计算机系统 访问该应用程序的附加消息处理要求。附加消息处理要求可以明确地被包括在例如配置文 件、用户指令、或第二流水线规范中。附加消息处理要求还可以从与例如配置文件、用户指 令、或第二流水线规范的内容有关的当前规范的内容中推断。计算机系统标识可应用于当前流水线规范来指定满足附加消息处理要求的附加 消息处理功能的变换。基于已经指定的、供包括在消息处理流水线中的消息收发组件以及 基于附加消息处理要求来标识变换。还可以基于什么消息收发组件对计算机系统可用来标 识变换。
计算机系统将所标识的变换应用于当前流水线规范来为应用程序创建经变换的 流水线规范。经变换的流水线规范指定如何为应用程序构造满足附加消息处理要求的消息 处理流水线。经变换的流水线规范指定要被包括在消息处理流水线中来满足附加消息处理 要求的消息收发组件的安排。计算机系统解释经变换的流水线规范来为应用程序实例化消 息处理流水线。经实例化的消息处理流水线被配置来满足应用程序的附加消息处理要求。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确 定所要求保护的主题的范围。在随后的描述中阐述,并且部分地将从本说明书中显而易见,或可以通过本发明 的实施来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来 实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易 见,或可通过对下文中所述的本发明的实践来领会。附图简述为了描述可以获得本发明的上文所列举的及其他优点和特征的方式,将通过参考 附图中所示的本发明的各具体实施例来呈现上文简要描述的本发明的更具体的描述。可以 理解,这些附图只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将 通过使用附图并利用附加特征和细节来描述和解释本发明,在附图中

图1示出了便于构成消息处理流水线的示例计算机体系结构。图2示出了用于构成消息处理流水线的示例方法的流程图。图3示出了示例消息处理流水线。图4示出了包括逻辑流水线及其相对应的物理部署的计算机体系结构。图5示出了带有由耐久队列分隔的消息处理流水线组件的计算机体系结构。详细描述本发明涉及用于构成消息处理流水线的方法、系统和计算机程序产品。计算机系 统访问应用程序的当前流水线规范。当前流水线规范指定了如何构造应用程序的消息处理 流水线,包括指定要被包括在应用程序的消息处理流水线中的消息收发组件。计算机系统 访问该应用程序的附加消息处理要求。附加消息处理要求可以明确地被包括在例如配置文 件、用户指令、或第二流水线规范中。附加消息处理要求还可以从与例如配置文件、用户指 令,或第二流水线规范的内容有关的当前规范的内容中推断。计算机系统标识可应用于当前流水线规范来指定满足附加消息处理要求的附加 消息处理功能的变换。基于已经指定的、供包括在消息处理流水线中的消息收发组件以及 基于附加消息处理要求来标识变换。还可以基于什么消息收发组件对计算机系统可用来标 识变换。计算机系统将所标识的变换应用于当前流水线规范来为应用程序创建经变换的 流水线规范。经变换的流水线规范指定如何为应用程序构造满足附加消息处理要求的消息 处理流水线。经变换的流水线规范指定要被包括在消息处理流水线中来满足附加消息处理 要求的消息收发组件的安排。计算机系统解释经变换的流水线规范来为应用程序实例化消 息处理流水线。经实例化的消息处理流水线被配置来满足应用程序的附加消息处理要求。本发明的各实施例可以包括或利用包含计算机硬件的专用或通用计算机,这将在下文中更详细地讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令 和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或 专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理 存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限 制,本发明的各实施例可包括至少两种完全不同的计算机可读介质物理存储介质和传输 介质。物理存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁 存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通 用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子 数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或硬连线或 无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质 可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置并可由通用或 专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围 内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程 序代码装置可从传输介质自动转移到物理存储介质(或者相反)。例如,通过网络或数据 链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的 RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失性的物理存储介 质。由此,应当理解,物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机 系统组件中。计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某 一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语 言等中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本 主题,但可以理解的是,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上 述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络 计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息 处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型 计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可以在其中通 过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路 的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实践。在分布式系 统环境中,程序模块可以位于本地和远程存储器存储设备中。图1示出了便于构成消息处理流水线的示例计算机体系结构100。参考图1,计算 机体系结构100包括流水线规范细化模块101、流水线规范解释器106、以及应用程序107。 所描绘的计算机系统中的每一个通过诸如例如局域网(“LAN”)、广域网(“WAN”)或甚至 因特网等网络(或作为网络的一部分)彼此连接。因此,所描绘的计算机系统中的每一个 以及任何其他连接的计算机系统及其组件都可以创建消息相关数据并通过网络交换消息 相关数据(例如,网际协议(“IP”数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等)。一般而言,流水线规范细化模块101被配置成鉴于附加消息处理要求将流水线规 范变换为指定满足附加消息处理要求的消息处理流水线的流水线规范。流水线规范细化模 块101包括要求标识模块102、变换标识模块103,和变换应用模块104。要求标识模块102被配置成标识消息处理流水线的附加处理要求。可以将附加要 求明确地包括在提供给流水线规范细化模块101的附加信息中,诸如,例如,在配置文件、 用户指令或第二流水线规范中。例如,配置文件可以指示在协议栈中的不同层之间需要加 密或可靠性。要求标识模块102可以访问附加信息并标识包括在附加信息中的附加处理要 求。要求标识模块102还可以鉴于附加信息的内容基于流水线规范的内容来推断附 加处理要求。因此,要求标识模块102可以鉴于例如配置文件、用户指令,或第二流水线规 范,基于流水线规范的内容来推断附加消息处理要求。例如,情况可能是一个流水线规范指 定第一传输层协议而另一流水线规范指定第二个不同的传输协议。因此,要求标识模块102 可以推断第一和第二传输协议之间的协议桥的使用是附加消息处理要求。变换标识模块103被配置成标识可应用于流水线规范来变换流水线规范以指定 满足附加消息处理要求的消息处理流水线的变换。例如,基于当前的流水线规范和附加要 求,变换标识模块103可以标识变换来将当前的流水线规范变换成经变换的流水线规范。 经变换的流水线规范可以指定,例如,具有满足附加消息处理要求的消息处理组件的流水 线内通信链路。在标识变换时,变换标识模块103还可以考虑可用于包括在消息处理流水线中的 可用流水线组件的功能,诸如例如消息泵、消息变换器、耐久存储、通信介质、库等等。可用 流水线组件可以与流水线规范细化模块101同在一处和/或可以位于相对于流水线规范细 化模块101的远程。因此,可以本地地和/或远程地访问所指定的、供包括在消息处理流水 线中的可用组件。取决于可用流水线组件,变换标识模块103可以标识要应用于规范的不同变换。 然而,因为流水线组件的不同组合能够实现相同的结果,所以对流水线规范的不同变换可 能仍然定义满足附加消息处理要求的消息处理流水线。即,取决于可用流水线组件的功能, 可以指定流水线组件的不同组合来满足附加消息处理要求。变换应用模块104被配置成将所标识的变换应用于流水线规范来将规范变换为 满足附加消息处理要求的经变换的规范。例如,变换应用模块104可以接收流水线规范和 变换并将该变换应用于流水线规范来创建经变换的流水线规范。所得经变换的规范可以符 合流水线规范解释器的句法和语义约束。例如,如果流水线规范被配置为输入到流水线规 范解释器,则基于流水线规范的经变换的流水线规范也可以被配置为输入到相同的流水线 规范解释器。然而,使变换更改流水线规范的配置来输入到不同的流水线规范解释器也是 可能的。变换流水线规范可以包括更改流水线规范的内容,诸如,例如,作出文本编辑或其 他变更,来指定消息处理流水线功能和/或组件。流水线规范解释器106被配置为解释流水线规范并从流水线规范中实例化消息 处理流水线。例如,流水线规范解释器106可以接收经适当配置的流水线规范。响应于接 收到流水线规范,流水线规范解释器106可以标识用于实例化流水线规范中指定的消息处理流水线的消息处理组件。流水线规范解释器106随后可以实例化消息处理流水线,例如, 包括带有按提供所需消息处理功能,包括满足任何附加要求来安排的所标识的消息处理组 件的流水线内通信链路。消息处理流水线的不同部分可以在不同机器处实例化或在同一机器的不同进程 中实例化。可以使用流水线内通信链路来将一个机器(或进程)处的消息处理流水线的部 分连接到另一机器(或进程)处的消息处理流水线的部分。通过消息处理流水线的消息流 还可以诸如例如基于消息属性、协议属性、机器属性等等在不同的流水线组件之间分支。流 水线内通信链路可以抽象耐久存储,诸如例如,耐久消息队列产品来提供耐久通信链路。耐 久通信链路允许流水线组件在它们原本需要等待来自其他流水线组件的响应以继续时继 续处理消息。消息处理流水线还可以包括便于协议桥接和流水线组件之间的其他变换服务 的流水线组件。如计算机体系结构100所描绘的,应用程序107与消息处理流水线108分隔。然 而,本发明的各实施例还包括将应用程序作为消息处理流水线内的流水线组件来包括的消 息处理流水线。图2示出了用于构成消息处理流水线的示例方法200的流程图。方法200将参考 计算机体系结构100的组件和数据来描述。方法200包括访问应用程序的当前流水线规范的动作,当前流水线规范指定如何 为应用程序构造消息处理流水线,包括指定要被包括在应用程序的消息处理流水线中的消 息收发组件(动作201)。例如,流水线规范细化模块可以访问流水线规范121。流水线规 范121可以指定如何为应用程序107构造消息处理流水线。流水线规范121可以从可用流 水线组件142中指定要被包括在应用程序107的消息处理流水线中的流水线组件。可用流水线组件142可以包括位于流水线规范模块101本地和/或远程(例如, 在可经由网络通信访问的其他机器处)的流水线组件。可用流水线组件142可被配置成实 现各种不同的功能,诸如,例如,消息泵(例如143)、消息变换器(例如144)、耐久存储的抽 象(例如146)来提供耐久通信链路、通信介质(例如147)和库(例如148)。可用流水线 组件142中的流水线组件可以一起被缝合在消息处理流水线中,例如,在流水线内通信链 路中,以提供流水线规范中指定的消息处理功能(例如,加密、签名、可靠性、协议桥接、消 息转换、流水线分支等等)。要求标识模块102可以标识流水线规范121的附加要求。例如,要求标识模块102 可以基于附加信息122和/或流水线规范121的内容来标识附加要求131。在某些实施例 中,附加信息122的内容明确地指示附加要求。例如,附加信息122可以表示明确地指示附 加要求131的另一流水线规范(例如,与应用程序107进行通信的应用程序的)、配置文件、 用户命令等的内容。要求标识模块102可以从附加信息122标识明确地指示的附加要求。另选地或与标识明确地指示的附加要求组合地,要求标识模块102还可以推断附 加要求。例如,要求标识模块102可以访问附加信息122和流水线规范121。从附加信息 122和流水线规范121的内容中,要求标识模块102可以推断附加要求131。要求标识模块102可以将附加信息122的内容与流水线规范121的内容进行比 较,并基于该比较作出推断。例如,附加信息122可以指示另一应用程序在通信时使用所指 定的消息收发功能(例如,加密、可靠消息收发等等)(而无需明确地指示包括所指定的消息功能是要求)。另一方面,流水线规范121可以不指定供包括在消息收发流水线应用程序 107中的所指定的消息功能。从附加信息122和流水线规范121之间的比较中,要求标识模块102可以确定其 他应用程序使用所指定的消息收发功能,但该流水线规范121未指定该所指定的消息收发 功能。因此,要求标识模块102可以推断应用程序107的消息处理流水线要包括所指定的 消息收发功能来与其他应用程序通信。因此,要求标识模块102可以标识流水线规范121 指定所指定的消息收发功能的附加要求。要求标识模块102可以将附加要求131发送给变换标识模块103。因此,方法200 包括访问应用程序的附加消息处理要求的动作(动作202)。例如,变化标识模块103可以 接收附加要求131。方法200包括标识可应用于当前流水线规范来指定满足附加消息处理要求的附 加消息处理功能的变换的动作,基于已经指定的、供包括在消息处理流水线中的消息收发 组件以及基于附加消息处理要求来标识该变换(动作203)。例如,变换标识模块103可以 标识变换132。可将变换132应用于流水线规范121来指定满足附加要求131的附加消息 处理功能,诸如,例如,流水线内通信链路。可以基于已经在流水线规范121和附加要求131 中指定的流水线组件来标识变换132。变换132还可以基于可用流水线组件142中包括的组件。例如,列表151可以标识 包括在可用流水线组件142中的组件及它们的功能。从列表151中,变换标识模块103可 以标识要应用于规范121的变换132。可以使用所标识的变换132来变换流水线规范121 的部分,以(从可用流水线组件142中)指定用于实现满足附加要求131的消息处理功能 的组件。取决于规范121中已经指定了什么流水线组件,可以标识不同的变换来指定用于 满足附加要求131的消息处理功能。变换标识模块103可以将变换132发送给变换应用模 块104。变换应用模块104可以从变换标识模块103接收变换132。方法200包括将所标识的变换应用于当前流水线规范来为应用程序创建经变换 的流水线规范的动作,经变换的流水线规范指定如何为应用程序构造满足附加消息处理要 求的消息处理流水线,包括指定要被包括在消息处理流水线中以满足附加消息处理要求的 消息收发组件的安排(动作204)。例如,变换应用模块104可以将变换132应用于流水线 规范121来创建经变换的流水线规范121T。经变换的流水线规范121T指定如何构造满足 附加要求131的消息处理流水线。经变换的流水线规范121T可以(例如,从可用流水线组 件142中)指定要被包括在消息处理流水线中以满足附加要求131的流水线组件的安排, 诸如,例如,要被包括在通信链路113中的流水线组件的安排。方法200包括解释经变换的流水线规范以实例化应用程序的消息处理流水线 的动作,经实例化的消息处理流水线被配置为满足应用程序的附加消息处理要求(动作 205)。例如,流水线规范解释器106可以解释经变换的流水线规范121T来实例化消息处理 流水线108。流水线规范解释器106可以访问组件152来实例化消息处理流水线108。流 水线规范解释器106可以按经变换的流水线规范121T中所指定的来安排组件152。因此, 规范解释器106可以按照使得通信链路113满足附加要求131的方式来实例化消息处理流 水线108。
10
消息处理流水线108包括通信介质111、流水线组件112、带有通信链路逻辑114 的通信链路113以及流水线组件116A和116B。如图1所描绘的,在逻辑上表示消息处理流 水线108。消息处理流水线中的不同组件可以在物理上位于不同机器处。例如,流水线组 件112、流水线组件116A、流水线组件116B以及应用程序107全都可能在物理上位于不同 机器处。流水线组件116A和116B表示消息处理流水线108中的消息处理可以基于消息属 性、协议属性、机器属性等来分支。通信链路113可以从流水线组件112接收消息。通信链路逻辑114可以按照满足 附加要求131的方式来确定从流水线组件112接收的消息的布置。通信链路113可以将消 息发送给流水线组件116A和/或116B。—般而言,流水线内通信链路可以使用任何底层通信介质。通信介质的使用可以 基于该流水线内通信链路之前和之后的流水线组件的位置。例如,如果流水线组件被部署 在同一机器上的不同进程中,则可以将系统总线用作通信介质。另一方面,如果流水线组件 被部署在不同机器处,则可以将网络介质(有线和/或无线)用作通信介质。因此,更具体地,流水线内通信链路可以包括将流水线组件连接到之前的流水线 组件的传入通信介质。流水线内通信链路还可以包括用于处理来自传入通信介质的消息的 接收消息处理流水线。流水线内通信链路还可以包括处理消息并确定它们的布置的通信链 路应用程序。流水线内通信链路还可以包括将流水线组件连接到之后的流水线组件的一个 或多个传出通信介质。流水线内通信链路还可以包括用于将消息发送给相应的传出通信介 质的一个或多个发送消息处理流水线。图3示出包括流水线内通信链路321的示例消息处理流水线300。消息处理流水 线300包括通信介质301、流水线组件302、流水线内通信链路逻辑321、流水线组件309A和 309B,以及应用程序311。如所描绘的,流水线内通信链路321将流水线组件302连接到流 水线组件309A和309B。流水线内通信链路321包括传入通信介质303、接收消息处理流水线304、通信链 路逻辑306、发送消息处理流水线307A和307B,以及传出通信介质308A和308B。传入通信 介质303将流水线内通信链路321连接到流水线组件302。接收消息处理流水线304经由 传入通信介质303从流水线组件302接收消息。通信链路逻辑306处理消息来确定如何布置这些消息。例如,基于消息的内容或 与相关联的协议,通信链路逻辑306可以确定是要将消息发送给消息处理流水线307A还是 发送给消息处理流水线307B。传出通信介质308A和308B分别将流水线内通信链路321连接到流水线组件309A 和309B。发送消息处理流水线307A和307B将消息分别发送给传出通信介质308A和308B。因此,消息处理流水线中的通信链路的使用允许执行流在多个流水线组件之中分 支。由此,可以存在各自可以处理不同类型的消息的流水线组件的多个不同的实例。通信 链路可以取决于所接收的消息的类型分支到流水线组件的特定实例。随后在消息到达应用 程序之前可以再结合流水线从而使得应用程序不知道发生过分支。另外地,应用程序逻辑 可以根据消息的类型来类似地拆分,并因此可能期望所分支的流水线一路向上继续到应用 程序。例如,流水线组件309A和流水线组件309B两者都发送消息给应用程序311。然而,流水线内通信链路300的分支不必合并到同一个应用程序。例如,流水线组件309A可 以将消息发送给应用程序311而流水线组件309B可以将消息发送给某一不同的应用程序。本发明的各实施例包括在不同的机器上部署流水线组件,可能取决于该特定机器 上可用的资源。可以使用流水线内通信链路来桥接机器之间的连接,从而使得可以部署每 一流水线组件来分隔经适当配置的机器。如先前所描述的,当流水线组件被部署在不同机器处时,流水线内通信链路可以 使用网络介质来在流水线组件之间通信。转向图4,图4示出包括逻辑流水线420及其相对 应的物理部署440的计算机体系结构400。如所描绘的,逻辑流水线420包括通信介质426、 流水线组件424、流水线组件423、流水线组件422,以及应用程序421。通信介质似6和流 水线组件似4被部署在机器446上。通信介质似6和流水线组件似4中的一个或多个可以 利用(并且甚至可以要求)库453。将流水线组件423部署在机器443上。流水线组件423可以利用(并且甚至可以 要求)库452。将流水线组件422和应用程序421部署在机器441上。流水线组件422和 应用程序421可以利用(并且甚至可以要求)库451。可以使用流水线内通信链路来将部署在一个机器处的流水线组件连接到部署在 另一机器处的流水线组件。例如,通信链路444将流水线组件4 连接到流水线组件423, 反之亦然。类似地,通信链路442将流水线组件423连接到流水线组件422,反之亦然。然而,使用机器隔离边界的流水线组件的分隔不是唯一可能的间隔。还可以使用 其他种类的隔离边界,诸如例如部署到同一机器中的分隔进程中。在其他实施例中,流水线组件的物理部署可以由耐久消息队列分隔。将耐久存储 放置在流水线组件之间允许它们按照时间上独立的方式来执行。图5示出了带有由耐久队 列分隔的消息处理流水线组件的计算机体系结构500。如图5所描绘的,请求消息,诸如,例如,请求消息531在进程502处输入。同样, 回复消息,诸如,例如,重放消息532在进程502处离开。机器501包括进程502和503。进 程502包括组件503而进程506包括组件507和508。耐久队列504经由机器501处的本 地通信介质将组件503与组件507和508分隔。机器521包括进程522和526。进程522 包括组件523而进程5 包括应用程序527 (例如,另一流水线组件)。耐久队列5 经由 机器521处的本地通信介质将组件523与应用程序527分隔。耐久队列511经由机器501 和502之间的网络通信介质将组件507和508与组件523分开。在计算机体系结构500内,如果组件507或508要使用带外机制(例如,带外消息 确认)来对请求消息531的始发者作出响应,则它们可以独立于组件503发送的传送确认 并独立于稍后的流水线执行和应用而自由地进行。流水线组件503还可以在一将请求消息 531放置在耐久队列504中便将响应发送给请求消息531。流水线组件507可能遭受由于 不能发送确认而导致的临时失败,但这不阻止流水线组件503继续处理更多的请求。类似 地,耐久队列511允许稍后的流水线组件和应用程序527继续处理已经被确认的请求。因此,通信链路的规范可以被认为是流水线的总体规范的一部分。每一通信链路 可以在单个流水线规范中内联地指定,或者使用对其他规范的引用被链接在一起。在某些 情况下,可能自动地推断通信链路的规范。例如,如果两个相邻的流水线组件按照使得第一 流水线组件使用第一消息格式来发射消息而第二流水线组件使用第二消息格式来消费消息的方式来配置,则系统可以推断在第一和第二消息格式之间转换的通信链路的存在而不 需要明确的规范。因此,本发明的各实施例便于组成的消息处理流水线。各实施例利用流水线内通 信链路来解耦各流水线阶段。流水线内通信链路的使用允许在不必更改流水线组件或应用 程序的情况下组成消息处理流水线。每一通信链路本身是带有跨时间和/或空间桥接信息 的传入和传出消息处理流水线的应用程序,例如,取决于被链接的流水线组件是否具有应 用程序开发者想要消除的时间或物理耦合。例如,应用程序开发者可以通过使通信链路将消息发送给下一流水线组件位于的 不同的机器来消除物理耦合。应用程序开发者可以通过使通信链路读和写耐久存储的消息 从而使得下一流水线组件可以在稍后执行来消除时间耦合。因此,可以在不需要应用程序 开发者单独地对通信链路编程的情况下,从流水线规范中构造通信链路应用程序、通信链 路流水线,以及用于将通信链路插入到消息处理流水线中的相应的链接。本发明可具体化为其他具体形式而不背离其精神或本质特征。所描述的实施例在 所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而 非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书 的范围所涵盖。
权利要求
1.一种在包括一个或多个处理器和系统存储器的计算机系统处的用于组成应用程序 (107)的消息处理流水线的方法,所述方法包括访问所述应用程序的当前流水线规范(121)的动作,所述当前流水线规范(121)指定 如何为所述应用程序(107)构造消息处理流水线(108),包括指定要被包括在所述应用程 序(107)的消息处理流水线(108)中的消息收发组件(116A、116B、112);访问所述应用程序(107)的附加消息处理要求(131)的动作;标识能够被应用于所述当前流水线规范(122)来指定满足所述附加消息处理要求 (131)的附加消息处理功能的变换(132)的动作,所述变换(132)基于已经指定的、供包括 在所述消息处理流水线中的消息收发组件以及基于所述附加消息处理要求(131)来标识;将所标识的变换(132)应用于所述当前流水线规范(121)来为所述应用程序(107)创 建经变换的流水线规范(121T)的动作,所述经变换的流水线规范(107T)指定如何为所述 应用程序(107)构造满足所述附加消息处理要求(131)的消息处理流水线(108),包括指定 要被包括在消息处理流水线中以满足所述附加消息处理要求(131)的消息收发组件的安 排;以及解释所述经变换的流水线规范(121T)来为所述应用程序(107)实例化消息处理流水 线(108)的动作,经实例化的消息处理流水线(108)被配置为满足所述应用程序的所述附 加消息处理要求(131)。
2.如权利要求1所述的方法,其特征在于,还包括标识所述计算机系统可用的、供包括在所述消息处理流水线中的组件的动作;以及其中标识能够被应用于所述当前流水线规范的动作,包括基于所标识的可用组件来标 识能够被应用于所述当前流水线的动作。
3.如权利要求2所述的方法,其特征在于,所述解释经变换的流水线规范来为所述应 用程序实例化消息处理流水线的动作,包括将所标识的可用组件中的一个或多个插入到所 述消息处理流水线来满足所述附加消息处理要求的动作。
4.如权利要求1所述的方法,其特征在于,所述访问所述应用程序的附加消息处理要 求的动作包括访问第二流水线规范的动作。
5.如权利要求5所述的方法,其特征在于,访问所述应用程序的附加消息处理要求的 动作,包括从所述当前流水线规范与所述第二流水线规范的比较结果中推断所述附加处理 要求的动作。
6 .如权利要求1所述的方法,其特征在于,标识能够被应用于所述当前流水线规范来 指定满足所述附加消息处理要求的附加消息处理功能的变换的动作,包括标识能够被应用 于指定能够满足所述附加消息处理要求的流水线内通信链路的变换的动作。
7.如权利要求6所述的方法,其特征在于,标识能够被应用于指定可以满足所述附加 消息处理要求的流水线内通信链路的变换的动作,包括标识能够被应用于指定桥接所述消 息处理流水线中的其他流水线组件之间的协议的流水线内通信链路的变换的动作。
8.如权利要求6所述的方法,其特征在于,标识能够被应用于指定可以满足所述附加 消息处理要求的流水线内通信链路的变换的动作,包括标识能够被应用于指定将所述消息 从一个格式变换为另一格式的流水线内通信链路的变换的动作。
9.如权利要求6所述的方法,其特征在于,标识能够被应用于指定可以满足所述附加消息处理要求的流水线内通信链路的变换的动作,包括标识能够被应用于指定在物理上解 耦其他流水线组件的流水线内通信链路的变换的动作。
10.如权利要求6所述的方法,其特征在于,标识能够被应用于指定可以满足所述附加 消息处理要求的流水线内通信链路的变换的动作包括标识能够被应用于指定在时间上解 耦其他流水线组件的流水线内通信链路的变换的动作。
11.如权利要求6所述的方法,其特征在于,标识能够被应用于指定可以满足所述附加 消息处理要求的流水线内通信链路的变换的动作包括标识能够被应用于指定在其他流水 线组件之间分支的流水线内通信链路的变换的动作。
12.—种计算机系统,所述计算机系统包括一个或多个处理器;系统存储器;其上存储有表示流水线变换模块和可用消息收发流水线组件的集合的计算机可执行 指令的一个或多个计算机存储介质,所述可用消息收发流水线组件中的每一个提供不同的 消息流水线处理功能,其中所述流水线变换模块被配置为接收消息处理流水线(300)要满足的一组应用程序要求(131);标识能够交互来满足所述一组要求(131)的所述可用消息收发流水线组件(309A、 309B)的安排;以及变换消息处理流水线规范(121),所述变换指定要被包括在流水线内通信链路(321) 内的可用消息收发流水线组件(309A、309B)的所述安排与被包括在从所述消息处理流水 线规范中实例化的消息处理流水线(300)中的其他流水线组件(302、311)之间的交互。
13.如权利要求12所述的系统,其特征在于,所述流水线变换模块被配置为变换消息 处理流水线规范,包括所述流水线变换模块被配置为指定在物理上解耦被包括在所述消息 处理流水线中的其他流水线组件的流水线内通信链路。
14.如权利要求12所述的系统,其特征在于,所述流水线变换模块被配置为变换消息 处理流水线规范,包括所述流水线变换模块被配置为指定在时间上解耦被包括在所述消息 处理流水线中的其他流水线组件的流水线内通信链路。
15.一种在包括一个或多个处理器和系统存储器的计算机系统处的用于组成应用程序 的消息处理流水线的方法,所述方法包括访问所述应用程序的第一流水线规范(121)的动作,所述第一流水线规范指定第一流 水线组件要被包括在所述应用程序的消息处理流水线中,所述第一流水线组件依赖于第一 代码库;访问所述应用程序的第二流水线规范(122)的动作,所述第二流水线规范指定第二流 水线组件要在所述第一流水线组件之后被包括在所述应用程序的消息处理流水线中,所述 第二流水线组件依赖于第二代码库;确定所述第一库(451)在第一计算机系统处可用的动作;确定所述第二库(45 在第二不同的计算机系统处可用的动作;将所述第一规范变换为包括流水线内通信链路(321)的动作,所述流水线内通信链 路用于将所述第一流水线组件连接到所述第二流水线组件的,所述流水线内通信链路包括 从所述第一流水线组件接收消息的传入通信介质(303)、将消息发送给所述第二流水线组件的传出通信介质(308a)、将消息从所述传入通信介质(30 抽取到所述传出通信介质 (308a)的消息泵(143);为所述应用程序实例化消息处理流水线的动作,所述消息处理流水线在所述第一计算 机系统处部署所述第一流水线组件、在所述第二计算机系统处部署所述第二流水线组件, 并利用流水线内通信链路(321)将消息从所述第一流水线组件传送至所述第二流水线组 件。
全文摘要
本发明涉及用于构成消息处理流水线的方法、系统和计算机程序产品。各实施例利用流水线内通信链路来在物理上和/或在时间上解耦各流水线阶段、配置分支消息流,以及桥接协议。流水线内通信链路的使用允许在不必更改流水线组件或应用程序的情况下组成消息处理流水线。每一通信链路本身是带有跨时间和/或空间桥接消息的传入和传出消息处理流水线以及用于满足消息处理要求的应用程序逻辑的应用程序。
文档编号G06F9/46GK102144215SQ200980134846
公开日2011年8月3日 申请日期2009年8月11日 优先权日2008年9月3日
发明者J·A·泰勒, N·A·艾伦 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1