用于通过网络通信相关消息的排队会话的制作方法

文档序号:7951873阅读:183来源:国知局
专利名称:用于通过网络通信相关消息的排队会话的制作方法
技术领域
本发明涉及用于通过网络以安全且资源高效的方式从一个应用程序向另一个发送消息的系统、方法和计算机程序产品。
背景技术
由于计算机化系统日益受到欢迎,所以也存在对诸如局域网等小型网络以及诸如因特网等大型或全球网络中的互连计算机系统的需求。一般而言,计算机系统和相关设备为多种原因而被连接至给定的网络,例如,为简化交换个人电子消息或者为销售商品、提供帐户信息、共享文件等。然而可以理解,由于计算机系统对单独使用而言变得日益复杂,也提出与网络上的互连计算机系统相关联的更多挑战。
一般而言,计算系统通过使用应用程序构造消息然后以一种或多种方式打包该消息使得消息可以适当地到达其目的地来向网络上的另一计算系统通信消息。具体地,发送计算机系统处的一个或多个组件或模块可以向消息添加地址或路由信息,而另一组件或模块可以加密该消息,使得不能在传送中读取它。接收计算机系统然后获取该消息,适当地解包数据,并处理数据。这样,在发送和接收计算机处的一个或多个应用程序之间传递数据一般涉及多个不同计算机系统处的多个应用程序、模块、组件、协议和处理资源。
不幸的是,存在与某些现有排队消息通信机制相关联的多个难点。当从另一台计算机处接收相关的消息时,接收计算机一般必须“瞥视”(或查询)每一所接收到的消息,来获取关于如何、是否或使用何种应用程序处理该单条消息的某些上下文。接收计算机也一般必须进行该“瞥视”或“查询”功能来确定,消息是否相关成组,使得应该共同来处理它们。为了以这种方式瞥视或查询消息,接收计算机系统处的模块在了解该消息需要由这个而不是那个应用程序来处理,或者关于应用程序处的另一相关消息而不是无关消息来处理等之前,必须反串行化该消息,然后读取消息中的头部的若干层。在某些情况中,这可能要求接收计算机系统在了解消息需要由完全不同的计算机系统处理之前,读取消息中头部的若干层。
这样,用于接收、转发以及处理消息的常规系统可能提出多个问题,尤其关于要以特殊顺序或分组处理的相关消息。例如,用于处理组中消息的一种常规的方法是,以消息被接收的顺序来处理它们。不幸的是,不能保证消息各自会在以组中的合适顺序到达接收计算机,或甚至处于特殊的分组中。例如,远程消息传送路径的任何数据量的中继或处理机制可能会造成一条消息相对下一条而言延滞了,使得消息以颠倒的顺序到达。这在当无关消息以与相关消息组混合的方式接收时尤其加剧。因此,接收计算机系统可能需要读取大量消息来获取关于该如何处理消息的正确的上下文。
除了从资源处理立场潜在地提出问题之外,要求接收计算机系统在将消息转发至合适的应用程序之前读取(或“瞥视”或“查询”)大量消息可能产生关于安全的其它问题。例如,如果在解包、反串行化、或解密消息之前,不能查明消息的处理上下文,那么消息中的敏感信息可能易于被不适当的应用程序或进程截获。
从而,可以使用允许以相关的方式并且如果合适以预期的处理顺序和分组来通过网络将消息从一个应用程序发送至另一个的系统、方法和计算机程序产品以实现本领域中的优点。而且,可以使用允许通过网络发送消息,而在该消息由适当的应用程序接收之前不被非预期的应用程序或计算机系统对消息的部分进行反串行化或解密的这样的系统和方法以实现本领域中的优点。

发明内容
本发明使用允许消息通过离散的通信会话和面向会话的信道以由排队相关消息预期的相关方式通信的系统、方法和计算机程序产品解决了本领域中的前述问题中的一个或多个。具体地,根据本发明的系统和方法允许消息在离散的通信会话中从一个应用程序发送至另一个应用程序,使得接收计算机系统可以适当地处理不同消息组。
例如,在本发明的至少一种实现中,从发送计算机观点的方法包括创建将在接收计算机系统处处理的相关消息组的动作,其中组中的一条消息是第一消息,而组中的另一条消息是最后消息。该方法也包括为消息组创建面向会话的信道和将该消息组发送至接收计算机系统处的可寻址队列的动作。从发送计算机系统观点的方法还包括为不同消息组创建不同的、面向会话的信道的动作。从而,本发明的实现允许发送计算机系统通过离散的通信会话在离散的分组中发送相关消息。
从接收计算机系统观点的本发明的方法包括在队列处接收一条或多条消息的动作,其中消息中的至少一条可被标识为相关消息组中的第一消息。该方法还包括为相关消息组创建面向会话的信道,并最终接收组中剩余消息的一条或多条,诸如组的最后消息的动作。在接收组的最后消息之后,并且接收计算机系统意识到已经接收会话中的所有消息,和/或当处理了组中所有已接收相关消息之后,该会话信道被关闭。当接收到不同相关消息组的第一消息之后,接收计算机创建不同的面向会话的信道。从而,本发明的实现允许接收计算机系统使用离散的面向会话的信道来关联消息组。
另外,无需为上下文深入读取组中足够相关的消息,且在接收计算机系统处也不会将它们与无关消息组混淆。另外,给定通信会话中的消息可以按照发送计算机系统所指示的以指定的顺序或分组被处理。同样,如果合适,也可以当接收或发送消息时,由指定的应用程序部分地处理相关消息组。而且,发送或接收侧的应用程序可以通过使用标识部分处理的组的会话标识符创建会话信道来重新连接至该部分处理的组。而且,可以以容许由于传输中的延迟、消息大小或由于传输失败而造成接收顺序变化的方式发送消息。而且,本发明的实现允许间歇路由器“选取”或“粘住”作为同一会话的一部分的多条消息至同一接收处理节点的路由。
将在随后的描述中描述本发明的其它特征和优点,一部分通过阅读该描述是显然的,或者可以通过实现这样的示例性实现而领会。这样的实现的特征和优点可以通过所附权利要求书中特别指出的设备及其组合来实现并获取。通过阅读以下描述和所附权利要求书,这些和其它特征将是更完全明显的,或者也可以通过实现如之后所述这样的示例性实现来领会。


为了描述可以获取本发明的上述和其它优点和特征的方式,将通过引用在附图中示出的具体实施例来呈现上述简要描述的本发明的更具体的描述。理解这些附图仅描述了本发明的典型实施例,从而不应被认为是对本发明的范围的限制,将通过使用附图就另外的特性和细节描述和说明本发明,附图中图1示出了根据本发明用于发送和接收至接收计算机系统的相关消息的概观示意图;图2示出了根据本发明从发送和接收计算机系统观点包含通信相关消息的动作的方法;以及图3示出了用于实践本发明的一个或多个实现的合适计算环境的示意图。
具体实施例方式
本发明提供允许消息通过离散的通信会话和面向会话的信道以由排队相关消息预期的相关方式通信的系统、方法和计算机程序产品。具体地,根据本发明的系统和方法允许消息在离散的通信会话中从一个应用程序发送至另一个应用程序,使得接收计算机系统可以适当地处理不同消息组。
例如,如通过阅读本发明说明书和权利要求书可以理解,本发明的一个方面涉及将排队协议的各方面与通信会话的一般方面结合。本发明的另一方面涉及准备和接收将被发送至特定队列然后由单个处理节点或应用程序以相关的方式处理的相关消息。本发明的又一方面涉及适当地以特殊的顺序或作为组的一部分标识和处理会话中的消息。
例如,图1示出了用于实现本发明的一个或多个实现的概观示意图。具体地,图1示出了发送计算机系统100处的应用程序103创建一条或多条相关消息110、113和115,它们将以诸如顺序地,或者以任何顺序作为组的一部分的相关的方式由特定处理节点处理。例如,用户可能请求要求使用在线银行的某一应用程序的一个事务,然后当该事务完成后,请求在线银行的另一事务,它使用同一应用程序,但必定向用户请求相关数据的不同集。
一般而言,如果发送计算机系统100被配置成这样,那么发送计算机系统100启动离散的通信会话,以及相应的面向会话的信道120。发送计算机系统100不必理解如此处所述的会话通信,只要发送计算机系统100是使用以某种方式关联消息组的机制配置的。例如,不实现通信会话的发送计算机系统可以只要通过指示组中的一条消息是第一消息而该组中的另一条消息是最后消息来关联消息的组。
一般而言,信道仅是通信栈,诸如含有定义网络通信状态的一层或多层的网络栈。另一方面,会话可以被理解为相关消息组的离散的标识符,使得一组相关消息与一通信会话相关联,而不同的相关消息的另一组与不同的通信会话相关联。而面向会话的信道是被用于对消息的离散会话通信的信道。在本发明的某些实现中,发送和接收计算机系统将为任何给定通信会话创建一条面向会话的信道。然而在其它实现中可能在一个会话中拥有多条信道,且具有结合一条面向会话的信道使用的多个通信会话。
在任何情况下,图1示出了以相关方式处理的消息110、113和115中的每一个,将最初通过面向会话的信道120被发送至接收计算机系统150。从而,编写器105可以包括指示每一消息都是相关组的一部分的每一消息110、113、115中的会话信息,使得消息110、113和115中的每一个都具有公共的会话标识符。编写器105可以包括关于消息排序的头部信息,诸如会话是否是排序的会话,或者会话中的消息是否可以以任何顺序被处理。如果会话是排序的会话,那么编写器105可以包括顺序标识符,它指示,例如消息110是组中三条消息中的第一条。
然而,不是所有情况中都需要顺序标识符。例如,如果发送计算机系统100没有被配置成实现会话,但是可以标识消息组是相关的,那么本发明的实现允许接收计算机系统150将消息组与会话相关联,然后在单个处理节点处以任何任意的顺序处理消息组。具体地,接收计算系统150可以处理消息110、113和115,而无论它们是如何接收的,按顺序还是不按顺序,消息是否与排序的还是无序的会话相关联。从而,本发明的实现可以应用于其中排序必须还是不必与相关消息的给定组相关联的实例。
另外,应用程序编写器105可以通过包含指示队列管理器140处的特定面向会话队列的队列地址123信息来准备消息。应用程序编写器105也可以包括由本地队列管理器130维护的信道120的状态信息。具体地,信道的状态信息可以包括,关联消息110、113和115中的每一个作为特定会话的一部分的信息,以及其它。这样,队列管理器130包括发送计算机系统100处的与应用程序103通过接口连接的一个或多个组件或模块,以及面向会话信道的一层或多层。而且,队列管理器130(和/或队列管理器140)能够为信道通信栈中的每一层维护状态信息,和标识消息110、113、115等的分组与通信会话117相关联的状态信息。队列管理器130、140可以被本地化至发送和/或接收计算机系统,也可以是远程的,从而存在于路由选择通路上的中间系统中。
如图1中所示,队列管理器130可以执行任何数量的合适的功能,诸如在将消息的相关组(即,会话)发送至接收队列管理器140之前在队列中存储该消息。队列管理器130也可以包括与消息110、113、115的一个或多个相应的头部,以及对每一消息打包以用于传送。具体地,队列管理器130可以在适当处包括,给定消息头部中的状态值。队列管理器130也可以通过将敏感数据结构插入至其它数据结构内来封装每一消息110、113、115的部分,使得消息可以管道传送至带有地址的队列123。
另外,队列管理器130可以添加头部信息,诸如在简单对象访问协议(“SOAP”)消息情况中的“Via”信息,它有助于确保特定通信会话的消息被适当地转发。诸如此类的SOAP头部信息对于“SOAP-理解”的中间路由器特别有用。如果连接路径中的中间路由器是SOAP-理解的,那么头部信息(例如,“Via”)可以帮助中间路由器确保在特定通信会话中接收和传递的所有消息被转发至合适的节点用于处理。
如果还没有被应用程序编写器105插入,那么队列管理器130也可以在消息110、113、115中插入会话标识符,它为该相关消息的指定组唯一标识了通信会话。因为,为要与另一相关消息组不同地处理的每一相关消息组创建新的、不同的会话,相关消息的每一分组将含有唯一的会话标识符(“ID”)。因此,如图1中所示,消息110包含该消息是会话117的一部分的信息。如果消息113、115被提供带有会话117的标识符,那么接收计算机系统150将容易地识别消息110、113和115中的每一个为相关组的一部分用于处理。
图1示出了发送计算机系统100可以将消息110、113、115直接定址到已定地址的队列123。在一种实现中,中继消息涉及沿着发送和/或接收计算机系统之间的一个或多个存储或转发中介(未示出)传递消息。可以理解,当传送消息(110、113和/或115等)时,连接可能在一个或多个点上失败。尽管如此,至少部分由于每一消息包含对每一消息组而言是唯一的会话标识符,且该信息在SOAP消息头部中对SOAP-理解路由器可用,所以可以容许连接暂停和失败。
具体地,失败、暂停或重启的通信会话中的消息仍旧可以被路由至合适的处理节点,并最终以较佳的顺序或分组处理。例如,发送计算机系统100可以接收会话中的消息中的一条(例如,113)没有被正确发送的指示。发送计算机系统100可以仅将失败的消息与合适的会话(例如,117)标识符信息重新相关联,并再次发送该消息。
而且,发送计算机系统100处的应用程序103(以及接收计算机系统150处的应用程序160)在应用程序103崩溃的情况中可以重新连接至通信会话。例如,当应用程序103在创建一条或多条消息时,应用程序103可以为相关的消息组在合适的位置存储当前会话。例如,如果应用程序103崩溃,那么应用程序103可以创建新的面向会话的信道,并且也决定是否使用新的会话标识符,还是从存储中恢复会话标识符。如果该组没有被完全发送,那么应用程序103可以仅将新的面向会话的信道与恢复的会话标识符相关联。通过关于接收计算机系统150的讨论可以理解,当应用程序160在崩溃之后,它使恢复的会话标识符与新的面向会话的信道相关联时可以出现类似的进程。
这样,发送计算机系统100(以及接收计算机系统150)可以确保,消息110、113和115中的每一条被适当地作为合适会话的一部分通信,而无论它们对于合适的队列管理器而言以何种顺序发送或接收,从而可以适当地发送或处理它们。而且,因为发送计算机系统100不必向队列管理器130重新发送之前发送的消息,且接收计算机系统150不必使所有之前接收到的消息都从队列管理器140重新发送,所以节省了处理资源。
当接收计算机系统150接收组中的消息的一条或多条时,特定应用程序160的监听器模块145标识,正在发送需要由诸如应用程序160等一个应用程序处理的相关消息组。作为响应,监听器145启动用于将所接收的相关消息直接中继至合适的应用程序的面向会话的信道121。例如,接收计算机系统150通过标识自输入消息110、113等的头部信息中找到的一个或多个会话标识符(例如,117)来标识正在接收相关消息组。在另一实现中,当消息含有诸如“第一消息”或“最后消息”指示符等某些其它关联信息时,接收计算机系统150标识正在接收或已经接收了一组相关消息。
一般而言,通信会话中的每一消息在已定地址的队列123处接收,而无需被解包或以任何深度读取。当接收消息110、113和115时,队列管理器140可以瞬间存储消息,队列123可以按照在消息各自顺序标识符中所指示的,对所接收的消息排序。当然,如果会话中消息的会话信息指明,该会话是无序的,那么队列123在处理之前不必排序消息。这样,将在其中会话被指示为排序的会话的情形中实现顺序标识符。
例如,图1示出了消息110是排序的会话中将由应用程序160处理的三条消息中的一条。所接收的消息中的另一标识符可以指示出,消息110将与其它消息113和115同时处理,或者以任何顺序由单个处理节点消费,而不是顺序地。这样,在一种实现中,队列123缓冲在队列管理器140处每一所接收到的消息,直到接收到将被适当排序或处理的足够数量的消息。由于多个原因,这是有益的。
例如,由于连接路径中的转发中介的某些延迟,消息115可能在消息113之前到达。或者,对队列123的传输可能暂时失败。尽管可以就同一组重新开始传输,仍可能存在关于消息是如何被发送至队列123,或在队列123处如何接收消息的某些错误的排序。尽管如此,因为排序的会话中的每一消息可以与特定顺序标识符相关,可以相对容易地容许各种消息延迟。而且,因为当接收消息时,可以在缓冲器中存储消息,所以应用程序103和队列管理器130可以仅在其中没有正确中中继消息的该点上使用合适的会话标识符来重新创建消息,而不必重新处理和重新传输之前正确传输的消息。
在任何情况中,图1示出了,监听器模块145然后以合适的顺序采用所接收的消息110、113和115,并且通过面向会话的信道121将其传递至应用程序160用于处理。图1也示出了,对于另一应用程序的170的另一监听器147标识了定址到不同队列125的其它消息。从而,监听器147创建了不同的面向会话的信道127,它被用来将在队列地址125处接收到的相关消息传递至应用程序170。这样,图1中不同的监听器145和147可以通过不同的面向会话的信道121、127来区分不相关的相关消息组。而且,单个监听器145、147等可以适当地创建从队列管理器140处的队列至同一应用程序160或170的多个但是各个不同的面向会话的信道。
在任何情况中,当将所接收到的消息中的每一条传递至应用程序160之后,监听器模块145标识最后一条消息,并关闭面向会话的信道121,或者为消息的新的组重新开启新的或不同的会话。例如,在一种实现中,最后一条消息近被简单地推断为最终消息的顺序标识符。即,监听器模块145标识,消息115表示三条消息中的第三条,且消息110、113的每一个已经被接收。当然,最后一条消息的指示符也可以是在发送最后一条消息(例如115)之后由发送计算机系统发送的单独的消息,或者消息本身可以包含指示它仅是由发送计算机系统100发送的最后一条消息的指示符。同样,监听器模块145可以为相关消息的新会话开始新的、不同的面向会话的信道,且可以为相关消息的不同组同时(或顺序地)创建这样的会话。因此,可以实现在发送和接收计算机系统上的各种过程来确保相关消息的无关组的分离。
图2示出了以资源高效的方式通信多条相关消息的方法中的一连串动作,使得该多条消息可以按照预期由指定的应用程序处理。以下将关于图1讨论图2的动作,且图2的动作包括来自发送和接收计算机系统双方观点的动作。例如,图2示出,从发送计算机100观点,根据本发明的实现的方法包括创建相关消息组的动作200。动作200包括创建将在接收计算机系统处处理的相关消息的组,其中组中一条消息是第一消息,而组中的另一条消息是最后消息。例如,如果发送计算机系统100是为离散的通信会话而配置的,那么发送计算机系统100可以创建每一包含唯一会话ID的相关消息的组。或者,如果发送计算机系统100不是为会话配置的,那么发送计算机系统100可以由其它机制相关该消息,使得至少一条消息可被标识为组中的第一消息,而另一条消息可标识为组中的最后消息。
从发送计算机100的观点的方法也包括创建会话的动作210。动作210包括,为消息组创建面向会话的信道。例如,发送计算机系统100启动含有由队列管理器130维护的一个或多个状态层的面向会话的信道。队列管理器130将初始信道120的会话信息传递至应用程序103,而应用程序编写器105将会话ID插入组中每一相关消息。应用程序编写器105也可以插入指示该会话是排序的会话或排序对处理而言是不重要的,或消息组将由单个处理节点以任何顺序处理的头部信息。在排序会话的某些实例中,编写器接口105也可以在每一消息中插入指示消息该被排序和处理的特定顺序的顺序指示符(例如,“三条之一”)。这些和类似的插入功能也可以由应用程序103和/或队列管理器130二者中任一或者以共享的方式来执行。
从发送计算机100观点的方法也包括发送组的动作220。动作220包括向接收计算机系统处的可寻址队列发送消息组。例如,当准备好多个消息中的至少一条之后,发送计算机系统100将该组的相关消息110、113和115发送至队列管理器140处的已定地址的队列123。当消息被中继至接收计算机系统140处的其最终终点时,消息也可以通过一个或多个存储和转发点中继,在那里消息为一个或多个目的而被缓冲。如前所述,如果发送计算机系统100接收到相关消息中的一条失败或者没有被正确发送的指示,那么发送计算机系统100可以仅需将该消息与适当的会话ID重新相关联,并再次发送消息。最终,多个消息中的每一消息被中继至接收计算机系统140处的指定面向会话的队列123。
另外,图2示出从发送计算机100的观点的方法还包括创建不同会话的动作230。动作230包括为不同相关消息组创建不同的面向会话的信道。例如,与创建或者正确发送消息集同时,或者当创建或者正确发送消息组的最后消息115之后,应用程序103为相关的一条或多条消息(未示出)的新的、不同的组启动新的通信会话(未示出)。当然,如果没有还要发送的消息,那么不必创建新的会话。尽管如此,该应用程序确保,将以相关方式处理的每一相关消息集仅与一个离散的会话标识符相关联,使得不同的组各自含有一个不同的会话标识符。
如图所示,图2也示出从接收计算机150观点的以资源高效的方式处理相关消息组的方法,使得多条消息可以按预期被处理。具体地,图2示出从接收方观点的该方法包括接收一条或多条消息的动作240。动作240包括在队列处接收一条或多条消息,其中消息中的至少一条可标识为相关消息组的第一消息。例如,如果接收计算机系统150从配置为理解通信会话的发送计算机系统处接收消息组,那么接收计算机系统可以通过标识包含在消息头部中的会话消息来容易地标识相关组。或者,如果发送计算机系统100没有被配置成实现通信会话,而是被配置成与消息分组合作,那么接收计算机系统150使用其它标记标识相关分组,诸如通过在所接收消息组中标识第一消息和最后消息指示符。
图2的从接收计算机150观点的方法也包括创建会话的动作250。动作250包括为消息组创建面向会话的信道。接收计算机系统150处的监听器模块145启动被用于将消息从队列123传递至应用程序160的面向会话的信道121。当在排序会话的情况中在队列管理器140处适当地排序消息时,面向会话的信道121被用于传递所接收的消息110、113、115至应用程序160。如果合适,可以在接收消息时这样做,使得应用程序170可以部分地处理相关消息组。或者,诸如在无序会话的情况中,一旦接收到所有消息和/或一旦为与消息组无关的新的相关消息组启动新的面向会话的信道后,就可以通过面向会话的信道将消息传递至应用程序160。
从而,从接收计算机150观点的图2的方法也包括接收组中最后消息的动作260。动作260包括接收消息组的最后消息。例如,消息110可以包括指示该消息将被作为三条消息序列中第一消息处理的顺序标识符。或者,在另一种实现中,多条消息中的每一消息内包含的分离的消息(未示出)用作为消息会话的索引,并描述会话中的消息的数量和每一消息的顺序,以及它们该被如何处理。在任何情况中,最后消息向接收计算机系统150指示,通过该面向会话的信道将不再发送消息,假定已经接收到与该会话相关联的所有其它消息。
从接收计算机观点的图2的方法还包括创建不同会话的动作270。动作270包括,当接收不同相关消息组的第一消息之后,创建不同的、后继面向会话的信道。例如,在一种实现中,监听器模块145保持该面向会话的信道可用,直到标识最后消息,或者在标识会话中的所有消息都已经被接收并通过该面向会话的信道121传递至应用程序160之后。即,监听器模块保持该面向会话的信道开启,直到例如,接收到每一消息110、113、115,或例如,接收到“三条中的一条”、“三条中的两条”和“三条中的三条”等。
在接收到与消息组无关的新消息之后,监听器145可以为消息的新分组启动不同的通信会话。这允许接收计算机系统将相关消息组安排或组织成分离的会话。这还允许接收计算机系统150和发送计算机系统100来确保如果合适,消息是被作为组和/或以指定的顺序被处理的。同样,不会在无意中将作为另一会话或分组的一部分发送的不同的相关消息组(未示出)同另一相关消息组一起处理。
从而,本发明的实现提供可以以指定的方式发送和处理消息组的多种方式,而无需分组中的每一消息以任何显著的方式被解包或读取。而且,本发明的实现允许特定通信会话(有序或无序)中的消息以排队的方式发送,使得相关消息可以以由发送计算机系统指定的任何顺序(或缺省)在单个处理节点处被处理。而且,因为会话中的消息可以与会话标识符相关联,所以本发明的实现为传输甚至是应用程序失败作了准备。例如,本发明的实现允许发送和接收队列管理器在传输中在各个序列处停止或开始传输,和/或重新启动与恢复得到的会话标识符的关联,而无需发送或接收计算机系统去发送或接收重复的之前的数据。
另外,因为消息可以被分组成定址到特定队列和面向会话的信道的特定通信会话,本发明的实现允许适当地分组消息,而不与其它相关消息组混合。在一个实例中,这提供了资源效率,因为在接收计算机系统处不需排序消息和从分组中清除消息。而且,尤其关于诸如SOAP消息等消息,因为每一会话可以被定址到消息头部中的特定队列,所以通过离散的通信会话信道发送的消息在到达该定址的队列或应用程序之前,不需因诸如寻址的目的而被反串行化或解码。
图3和以下讨论旨在提供可在其中实现本发明的合适的计算环境的简要、概括描述。尽管不是必需的,但本发明将在诸如由网络环境中的计算机执行的程序模块等计算机可执行指令的通用语境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。与数据结构相关联的计算机可执行指令,以及程序模块表示用于执行此处所揭示的方法的步骤的程序代码装置的实例。这样的可执行指令或相关联的数据结构的特定序列表示了用于以这样的步骤实现功能的相应动作的示例。
本领域的技术人员可以理解,本发明可以在使用多种类型的计算机系统配置的网络计算环境中实现,包括个人计算机、手持式设备、多处理器系统、基于微处理器或可编程消费者电子产品、网络PC、小型机、大型机等。本发明也可以在分布式计算环境中实现,其中本地和远程处理设备执行任务并通过通信网络(或者由硬连线、无线电线路或者由硬连线或无线电线路的组合)。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中。
参考图3,用于实现本发明的示例性系统包括常规计算机320形式的通用计算设备,包括处理单元321、系统存储器322和将包括系统存储器322在内的各种系统组件耦合至处理单元321的系统总线323。系统总线323可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。系统存储器包括只读存储器(ROM)324和随机存取存储器(RAM)325。基本输入/输出系统(BIOS)326包含有助于诸如启动时在计算机320中元件之间传递信息的基本例程,它通常存储在ROM 324中。
计算机320还可以包括从磁性硬盘339中读取或向其写入的磁性硬盘驱动器327,从可移动磁盘329中读取或向其写入的磁盘驱动器328,以及从诸如CD ROM或其它光学介质等可移动光盘331中读取或向其写入的光盘驱动器330。磁性硬盘驱动器327、磁盘驱动器328和光盘驱动器330分别由硬盘驱动器接口332、磁盘驱动器接口333和光盘驱动器接口334连接至系统总线323。驱动器及其相关联的计算机可读介质为计算机320提供了对计算机执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管此处所示的示例性环境使用磁性硬盘339、可移动磁盘329和可移动光盘331,也可以使用其它类型的计算机可读介质,它们用于存储可使用的数据,包括盒式磁带、闪存卡、数字多功能盘、贝努利盒式磁盘、RAM、ROM等。
可以在硬盘339、磁盘329、光盘331、ROM 324或RAM 325上存储包含包括操作系统335、一个或多个应用程序模块336、其它程序模块337和程序数据338的一个或多个程序模块的程序代码装置。用户可以通过诸如键盘340和定点设备342或诸如麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等其它输入设备(未示出)向计算机320输入命令和信息。这些和其它输入设备通常由耦合至系统总线323的串行端口接口346连接至处理单元321。或者,输入设备可以由诸如并行端口、游戏端口或通用串行总线(USB)等其它接口连接。监视器347或另一显示设备也经由诸如视频适配器348等接口连接至系统总线323。除监视器之外,个人计算机一般包括其它外围输出设备(未示出),诸如扬声器和打印机。
计算机320可使用至一台或多台远程计算机,诸如远程计算机349a和349b的逻辑连接在网络化环境中操作。远程计算机349a和349b各自可以是另一台个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机320描述的许多或所有元件,尽管在图3中只示出存储器存储设备350a和350b以及其相关联的应用程序336a和336b。图3中所示逻辑连接包括此处作为示例而非限制示出的局域网(LAN)351和广域网(WAN)352。这样的网络环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN网络环境中使用时,计算机320通过网络接口或适配器353连接至局域网351。当在WAN网络环境中使用时,计算机320通常包括调制解调器354、无线电线路或用于通过诸如因特网等广域网352建立通信的其它装置。调制解调器354可以是内置或外置的,它通过串行端口接口346连接至系统总线323。在网络化环境中,相对于计算机320所描述的程序模块或其部分可以存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使用通过广域网352建立通信链路的其它手段。
本发明可以被具体化为其它具体形式,而不背离其精神或基本特征。所述的实施例在所有方面都被认为仅是说明性的而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述来指示。落在本发明权利要求书等效实现方式的意义和范围内的所有变化在权利要求书的范围内包括。
权利要求
1.在发送系统处的应用程序发送将在接收计算机系统处处理的相关消息组的计算机化环境中的发送计算机系统处,一种以资源高效的方式传递多条消息,使得所述相关消息可按照预期的方式被处理的方法,所述方法包括以下动作创建将在接收计算机系统处处理的相关消息组,其中所述组中的一条消息是第一消息,而所述组中的另一条消息是最后消息;为所述消息组创建面向会话的信道;将所述消息组发送至接收计算机系统处的可寻址队列;以及为不同的相关消息组创建不同的面向会话的信道。
2.如权利要求1所述的方法,其特征在于,还包括通过所述面向会话的信道发送所述消息组,并通过所述不同的面向会话的信道发送所述不同的相关消息组。
3.如权利要求2所述的方法,其特征在于,队列管理器维护所述相关消息组与所述会话相关联的所述面向会话的信道的状态。
4.如权利要求1所述的方法,其特征在于,还包括接收所述组中的至少一条消息还没有被正确发送至所述接收计算机系统的指示;使用所述相应的会话标识符重新发送所述消息来指示所述消息是所述相关消息组的一部分。
5.如权利要求1所述的方法,其特征在于,所述消息组中每一条消息都与一会话标识符相关联,且其中,所述不同消息组中的每一条消息与一不同的会话标识符相关联。
6.如权利要求5所述的方法,其特征在于,所述发送计算机系统处的应用程序失败,所述方法还包括在重新启动所述应用程序之后启动新的面向会话的信道;以及恢复与所述面向会话的信道相关联的会话标识符,使得所述新的面向会话的信道与在所述应用程序失败之前所使用的会话标识符相关联,并使得所述应用程序重新连接至之前的会话。
7.如权利要求1所述的方法,其特征在于,还包括封装所述消息组或不同消息组的任何一个,使得封装的消息组或不同消息组通过隧道协议中继。
8.如权利要求1所述的方法,其特征在于,路由器中继所述相关消息组中的至少一条消息、所述相关消息组中的至少第二条消息、以及不是所述相关消息组的一部分的另一条消息,其中,所述路由器标识所述至少一条消息和所述至少第二条消息与公共通信会话相关联,而所述另一条消息不与所述公共通信会话相关联。
9.如权利要求1所述的方法,其特征在于,至少所述相关消息组是使用SOAP消息通信协议被发送至所述接收计算机系统的,所述方法还包括向所述组中的每一条消息的消息头部中插入一个或多个Vias。
10.如权利要求1所述的方法,其特征在于,所述面向会话的信道是为已排序的会话而创建的,所述方法还包括向所述相关消息组中的每一消息中插入顺序标识符。
11.在多条已接收的消息是相关的计算机化环境中的接收计算机系统处,一种以资源高效的方式接收和处理多条相关消息,使得所述多条相关消息可以按照预期的方式被处理的方法,包括以下动作在队列处接收一条或多条消息,其中,所述一条或多条消息中的至少一条可被标识为相关消息组的第一消息;为所述相关消息组创建面向会话的信道;接收所述相关消息组的最后消息;以及在接收不同的相关消息组的第一消息之后,创建不同的面向会话的信道。
12.如权利要求11所述的方法,其特征在于,所述相关消息组的消息包含通信会话标识符,使得所述接收计算机系统基于在所述相关消息组中的任何消息中标识所述通信会话标识符来启动所述面向会话的信道。
13.如权利要求12所述的方法,其特征在于,还包括在所述不同组的第一消息中标识不同的、新的通信会话标识符;以及基于所述新的通信会话标识符启动所述不同的面向会话的信道。
14.如权利要求11所述的方法,其特征在于,还包括将所述相关消息组的至少第一消息通过所述面向会话的信道传递至特定的应用程序;以及在接收所述相关消息组的最后消息之前,在所述特定应用程序处处理所述相关消息组的至少第一消息,使得所述组的相关消息被部分地处理。
15.如权利要求11所述的方法,其特征在于,所述面向会话的信道是为已排序会话创建的,所述方法还包括在所述组的每一消息中标识顺序标识符;以及根据所述顺序标识符在所述特定应用程序处处理所述组的消息。
16.如权利要求11所述的方法,其特征在于,所述接收计算机系统处的应用程序失败,所述方法还包括在重新启动所述应用程序之后,启动新的面向会话的信道;以及恢复与所述面向会话的信道相关联的会话标识符,使得所述新的面向会话的通道与所述应用程序失败之前其所使用的会话标识符相关联,并使得所述应用程序被重新连接至之前的会话。
17.如权利要求11所述的方法,其特征在于,还包括接收所述相关消息组中的一条消息的传输失败的指示;缓冲已被接收的所述相关消息组的其它消息;接收新消息;以及基于所述新消息中的会话标识符标识所述新消息是所述相关消息组的一部分。
18.如权利要求11所述的方法,其特征在于,所述面向会话的信道是由与所述特定应用程序相关联的监听器模块启动的。
19.如权利要求11所述的方法,其特征在于,所述消息组是在所述接收计算机系统的目的地队列处接收和维护的,其中,所述队列是由发送计算机系统特别定址的。
20.一种在其中多条已接收的消息将由特定应用程序处理的接收计算机系统处使用的计算机程序产品,所述计算机程序产品包含其上存储计算机可执行指令的一个或多个计算机可读介质,当由处理器执行所述计算机可执行指令时,引起所述接收计算机系统执行按照预期的方式以资源高效的方式接收和处理多条相关消息的方法,包括以下动作在队列处接收一条或多条消息,其中,所述一条或多条消息中的至少一条可被标识为相关消息组的第一消息;为所述相关消息组创建面向会话的信道;接收所述相关消息组的最后消息;以及在接收不同相关消息组的第一消息之后,创建不同的面向会话的信道。
全文摘要
根据本发明的系统和方法允许通过网络以离散的分组或通信会话从一个应用程序向另一个应用程序传递消息。例如,发送计算机系统向接收计算机系统处的队列发送相关消息组。接收计算机系统标识该组的消息是相关的,并启动面向会话的信道。接收计算机将消息组传递至一合适的应用程序,并为不必与第一消息组相关的新的消息组开启不同的、新的面向会话的信道。在一种实现中,每一所接收的消息中的顺序标识符向接收计算机系统指示,以何种顺序(如果存在)由该特定应用程序处理组中的消息。
文档编号H04L29/06GK1816014SQ200610002579
公开日2006年8月9日 申请日期2006年1月4日 优先权日2005年2月4日
发明者C·A·科利奇勒, K·斯利尼瓦萨恩, R·希尔, R·迪耶文多夫, U·赫奇 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1