使用插入消息更改向代码自适应地分派接收消息 【技术领域】
本发明涉及计算技术,尤其涉及在分派之前使用插入的消息更改以动态方式向代码分派接收到的消息的机制。
背景技术
计算技术已经改变了我们工作和娱乐的方式。如今计算系统的形式千差万别,包括台式计算机、膝上型计算机、输入板PC、个人数字助理(PDA)、家用装置等等。在其最基本形式中,计算系统包括系统存储器和一个或多个处理器。系统存储器中的软件可由处理器执行,以指示计算系统的其它硬件执行期望功能。
软件可以是相当复杂的,常常由数千行甚至数百万行的源代码编译或翻译而来。为了将软件开发过程进行一定的组织,整个任务可能会分成执行更为具体的动作的可管理子例程或方法。然后这些方法被相互关连以执行软件更为复杂的完整功能性。在消息处理系统中,接收消息由分派机制分派,用来由依赖于分派机制可访问的周围相关事实的一种或多种这些方法进行处理。
为了执行最适当的分派,对分派组件而言能访问尽可能多的相关信息将是有利的。然而,并不是系统中的所有组件对信息可进行同等地访问。例如,分派机制可能没有与接收该消息的连接、用于传递消息的协议、消息交换的历史、当前负载平衡状态、消息接收时间、消息发送者的重要性等等有关的直接信息。此外,相关信息可能并未在消息本身中出现,或至少不易从消息中访问。
因此,有这样的机制将是有利的,即允许分派机制在执行对消息的分派时更容易把先前未知或难以访问的信息考虑在内,以便更为灵活地对消息做适当处理。
【发明内容】
在网络环境中实现的本发明的原理克服了本领域现有技术的前述问题,该网络环境包括能够从网络环境中的其它计算系统接收消息的接收计算系统。接收计算系统包括把已接收的消息分派给一种或多种方法以作进一步处理的分派组件。本发明的原理涉及分派组件分派接收消息的机制,这种机制即使分派机制对分派相关的一些消息不能直接访问、由接收计算系统接收时信息未显示或不易从消息中获取。
在接收到消息之后,消息在传送给分派组件之前通过位于消息接收路径上的一个或多个接收路径组件。一个或多个接收路径组件可更改消息以包括对分派组件有帮助的信息,以便执行分派。这种信息可包括,例如,接收消息的连接、用于接收消息的协议类型、接收消息的时间、消息的处理优先级、消息发送者的状态、计算系统的负载、或任何对分派有帮助的其它信息。分派组件接收已更改消息,并使用来自已更改消息的信息(可能包括更改本身)来执行分派。
由于消息被更改为包括对分派组件有帮助的附加信息,分派组件可更灵活地标识应当与消息一起发生的处理。因此,可启用理想地适于该消息的专门和灵活处理。例如,如果发送者是高容量客户,消息可由与如果发送者是低容量客户时不同的代码进行特别处理。在此情形中,接收路径上可访问客户数据库的组件可把适当客户状态加到消息中,使得消息可由分派组件进行适当的分派。
本发明的其它特征和优点将在以下描述中陈述,且阅读以下描述可以部分地清楚这些特征和优点,或通过发明的实践来获知。本发明的特征和优点可通过在所附权利要求中特别指出的仪器和组合来实现和获取。阅读以下描述和所附权利要求书,本发明的这些和其它特征将变得更明显,或由此后陈述的发明实践中获知。
【附图说明】
为了描述能获取本发明的上述和其它优点及特征的方式,以上简述的本发明的更详细描述将参照附图所示的特定实施例来呈现。要理解,这些附图仅描绘了本发明的典型实施例,且因此不能被视为对其范围的限制,通过使用以下附图,本发明用其它特性和细节加以描述和解释:
图1示出了可实现本发明特征的合适的计算系统;
图2示出了根据本发明诸原理可协作交互以执行已接收消息的灵活分派的各种组件;
图3示出了根据本发明诸原理计算系统用来执行已接收消息的灵活分派的方法的流程图;以及
图4示出了使用已更改消息来分派的方法的流程图。
【具体实施方式】
本发明的原理涉及一种在接收到消息之后,消息在传送给分派组件之前通过位于消息的接收路径上的一个或多个接收路径组件的机制。一个或多个接收路径组件可更改消息以包括对分派组件有帮助的信息,以便执行分派。分派组件接收已更改消息,并使用来自已更改消息的信息(可能包括更改本身)来执行分派。由于消息被更改为包括对分派组件有帮助的附加信息,分派组件可以更灵活地标识应当与信息一起出现的处理。因此,可启用理想地适合该消息的专门和灵活处理。
参看附图,其中,相同的标号指向相同元素,本发明可被示为在适当计算环境中实现。以下说明基于本发明的所示出的实施例,且不应当被视为对于未在此明确描述的可选实施例而限制本发明。
在以下描述中,除非特别注明,本发明参照由一台或多台计算机执行的动作和操作的符号表示进行描述。由此,可以理解,这种常被称为计算机可执行的动作和操作包括由计算机处理单元对以结构化形式表示数据的电子信号的操纵。该操纵转换了数据或将在计算机存储系统的位置中维护它,从而以本领域技术人员都理解的方式重新配置或者变换了计算机的操作。在其中维护数据的数据结构是带有由数据格式定义的特定属性的存储器的物理位置。然而,尽管本发明在前述上下文中进行描述,这并不意味着受到限制,因为本发明技术人员将理解此后描述的一些动作和操作也能以硬件实现。图1示出了对这些装置有用的示例计算机体系结构的示意图。
为了进行描述,所描绘的体系结构仅是适当环境的一个示例,且并非旨在暗示对本发明使用范围或功能的任何限制。计算系统也不应当被解释为对图1中所示任何组件或其组合有任何依赖或需求。
本发明可用许多其它通用或专用计算或通信环境或配置来操作。众所周知的适用于本发明的计算系统、环境和配置包括,但不限于,移动电话、袖珍式计算机、个人计算机、服务器、多处理器系统、基于微处理器的系统、小型机、大型计算机、以及包括任意上述系统或装置的分布式计算环境。
在其最基本配置中,计算系统100通常包括至少一个处理单元102和存储器104。存储器104可以是易失的(诸如RAM)、非易失的(诸如ROM、闪存等)、或者是两者的某一组合。该最基本配置在图1中由虚线106示出。
存储介质装置可有附加特征和功能。例如,它们可包括附加存储器(可移动的和不可移动的),其包括但不限于PCMCIA卡、磁盘和光盘、以及磁带。这种附加存储器在图1中由可移动存储108和不可移动存储110示出。计算机存储介质包括以用来存储诸如计算机可读指令、数据结构、程序模块、或其它数据的信息的任何方法或技术实现的易失的和非易失的、可移动的和不可移动的介质。存储器104、可移动存储108和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存、其它存储技术、CD-ROM、数字多功能盘、其它光学存储、磁盒、磁带、磁盘存储、其它磁性存储装置、以及用来存储所需信息并可由计算系统访问的任何其它介质。
如此处所使用的,术语“模块”或“组件”指的是在计算系统上执行的软件对象或例程。在此描述的不同组件、模块、引擎和服务可被实现为在计算系统上执行的对象或进程(例如单独的线程)。尽管在此描述的系统和方法优选地以软件实现,然而软件和硬件实现或硬件实现也是可能的和可构想的。
计算系统100还可包含允许主机经网络120与其它系统和装置通信的信道112。信道112是通信介质的示例。通信介质通常包含诸如载波或其它传输介质等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包括任何信息传递介质。作为示例,而非限制,通信介质包括诸如有线网络和直接有线连接的有线介质,以及诸如声学、无线电、红外和其它无线介质的无线介质。在此使用的术语“计算机可读介质”包括存储介质和通信介质。
计算系统100还可具有输入组件114,诸如键盘、鼠标、笔、语音输入组件、触摸输入装置等等。输出组件116包括屏幕显示、扬声器、打印机等等,以及用于驱动它们的呈现模块(常称作“适配器”)。计算系统100有电源118。所有这些组件在本领域内是众所周知的,无需在此赘述。
图2示出了根据本发明原理可协作交互以执行已接收信息的灵活分派的各种组件200。当在图1的计算系统100的环境中实现时,各种组件可在存储器104中例示和/或持久保存在诸如可移动存储108和/或不可移动存储110的持久存储器中。例如,持久存储器可以是磁盘。
消息201在包括一个或多个接收路径组件的消息接收路径202上接收。例如,消息接收路径202被示为包括接收路径组件202A,以及由水平椭圆202B表示的可能的其它路径组件。接收路径组件可以是,例如,连接层、解密层、访问控制层、环境分析层、连接管理器、应用程序、或在向分派组件205提供消息之前能够访问消息201的任何其它组件。各种接收路径组件可在例如图1计算系统100的存储器中实现。
配置至少一个接收路径组件,以用至少一个改动来更改消息。已更改消息在图2中被示为已更改消息201’,其带有由添加的信息204表示的更改所表示的附加信息。更改可包括,例如,一个或多个数据字段的添加、一个或多个数据字段的删除和/或一个或多个数据字段的更改。例如,如果消息201是简单对象访问协议(SOAP)封装,则添加的信息204可被添加、删除或更改SOAP标题(header),尽管如此,对消息201正文中数据字段的更改并不被本发明原理排除在外。该信息代表可由更改学习或获知的任何新信息。例如,分派代码可仅对是否作更改感兴趣,而不对更改是什么感兴趣。
分派组件205接收已更改消息201’,并使用分派规则206和来自已更改消息201’的信息(可能包括添加的信息204)来标识要把信息发送给一种或多种方法的哪一组。添加的信息204可以是对分派组件有帮助的信息的描述。在所示的示例中,已更改消息201’可发送给例如方法207用来作进一步处理。接收路径组件可访问分派组件205不能轻易访问甚至完全不能访问的信息。例如,接收路径组件202A可访问的信息203A可能不能被已更改消息201’访问。因此,通过允许接收路径组件向消息201添加信息,分派组件205可使用它通常不能轻易访问(或根本不能访问)的信息来对向哪里分派消息201’作出更智能的判定。
图3示出了分派机制用于分派接收到消息的方法300的流程图,即使该分派机制可能不能直接访问某些分派相关信息,并且即使该信息在由接收计算系统接收的消息中不存在或无法从中容易地获取,该方法也能分派接收的消息。首先,接收消息(动作301)。然后,消息在传送给分派组件之前通过位于消息接收路径上的一个或多个接收路径组件(动作302)。当此发生时,至少一个接收路径组件用至少一个改动来更改消息(动作303)。该更改可由一个或一个以上接收路径组件执行,诸如连接层、解密层、访问控制层、环境分析层、连接管理器、应用程序、或在由分派组件接收之前消息路径上的任何其它组件。分派组件接收消息的更改(动作304)连同消息中的其它可能信息,用来评估分派规则列表以确定向哪里分派已更改消息(动作305)。
图4示出了使用已更改消息来分派的方法400的流程图。首先,分派组件访问涉及消息更改中存在的信息的分派规则(动作401)。然后,分派组件根据分派规则分派消息。在一实施例中,消息可以是分级结构化的文档。在该情形中,尽管不是必需,分派规则可使用XPATH语句来表达。
例如,添加的信息204可以是标识接收消息的连接的连接标识。这将使分派机制能够把消息分派给对应于该实例的适当的代码实例。
可选地,添加的信息可以是,例如用于接收消息的协议类型。这将帮助分派适于该协议的代码。例如,某些代码可适用于确认宣称为符合特定协议的消息。
添加的信息可包括收到消息的时间。如果消息在非工作时间收到,与在工作时间收到相比,可能会在其上执行某些处理。在此情形中,分派机制可在给出接收时间时分派适当代码。
添加的信息可包括处理优先级。例如,表示大量货物订单的消息和来自新客户的消息可被确定有高优先级。接收路径组件之一可访问允许标识处理优先级的客户数据库。因此,在给出处理优先级时,即使在接收的消息本身中并未指定处理优先级,分派组件也可向适当代码分派消息。
添加的信息还可包括与发送者状态相关的信息。例如,常见客户可具有某一状态标识符,新客户可有另一状态标识符,而低容量客户则具有又一标识符。该信息可被添加到消息中,以在给出消息发送者状态时允许适当分派。
添加的信息还可包括计算系统的当前工作负载。把消息发送给负载较少的代码是适当的。
这些表示了在分派消息时有用的添加的信息类型的示例。它们并非旨在成为穷尽列表。本领域技术人员将认识到(读完本说明书后),本发明原理允许消息在接收路径上时被添加任何各种各样的信息。因此,可使用各种各样的信息来更灵活和更适当地分派消息。
本发明可以其它特定形式实施而不会背离其精神或本质特征。所描述的实施例在所有方面都被视为仅仅是说明性的,而不是限制性的。因此本发明的范围由所附权利要求书而不是前面的说明书来指示。落入权利要求的等效技术方案的含义和范围之内的所有改变都被包括在其范围里。