在web服务环境可靠消息通信中验证和维持连接活跃性的制作方法

文档序号:7628089阅读:94来源:国知局
专利名称:在web服务环境可靠消息通信中验证和维持连接活跃性的制作方法
技术领域
本发明一般涉及用于web服务的可靠消息通信协议。更具体而言,本发明提供了一种充分利用用于web服务的可靠消息通信协议(RM-WS)的特征来验证和维持序列会话中的连接活跃性的机制。
背景技术
计算机网络通过允许一台计算机或设备使用电子消息通过网络与另一台计算系统通信,增强了人们通信和访问信息的能力。当在计算机系统之间传输电子消息时,电子消息通常将通过一协议栈,该协议栈对电子消息内的数据执行操作(例如,语法分析、路由、流量控制等)。开放系统互连(OSI)模型是用于实现协议栈的一种网络框架。
OSI模型将用于传输电子消息的操作分解成七个不同的层,每一层被设计成在数据传输过程中执行特定的操作。尽管协议栈可以潜在地实现每一层,然而许多协议栈仅实现在网络上传输数据时所使用的选择性的层。当数据从计算系统发送时,它起源于应用层,并被向下传递到较低的中间层,然后被传递到网络。当从网络接收数据时,它进入物理层,并被向上传递到较高的中间层,然后最终到达应用层。应用层,即最高层负责支持应用程序和最终用户处理。此外,在应用层内,可以驻留若干其它层(例如,简单开放访问协议(SOAP)层)。被大多数协议栈结合的另一层是传输层。传输层的一个示例是传输控制协议(TCP)。
web服务(WS)在计算系统之间的高级通信中是驱动力,并且调整了人们从里到外构建和使用软件的方式。web服务使应用程序共享数据,并且更强大地调用来自其它应用程序的能力,而无需关注这些应用程序是如何构建的;它们在什么操作系统或平台上运行;以及使用什么设备来访问它们。web服务在因特网上通过包括SOAP、XML(可扩展标记语言)、UDDI(统一描述、发现和集成)、WADL(web服务描述语言)等行业标准协议来调用。尽管web服务保持彼此独立,然而它们可将自身松散地链接到一执行特定任务的协作组。
当前的WS技术提供了发起者(例如,客户机)和接受者(例如,服务)之间的直接SOAP消息通信。在常见的双向消息通信情况下,SOAP请求消息是从发起者发送到接受者的,且SOAP回复消息是作为对其响应而发送的。端点之间的另一种通信是单向消息交换,其中发起者向接受者发送消息而没有响应。
形成WS体系结构的一个关键的益处是递送集成的、可共同操作的解决方案的能力。然而,由于web服务通过诸如因特网等不可靠通信信道提供了来自不同企业、组织和其它服务供应商的各种服务,因此WS的可靠性成为一个越来越重要的因素。WS的可靠性受若干因素影响,包括但不限于,web服务端点的可靠性;通过其访问web服务的通信信道的特征;性能和容错特征;以及web服务能够处理并发的客户机访问的范围。
已通过选择通过其在端点之间交换消息(例如,SOAP消息)的可靠传输协议做出了实现web服务的可靠消息通信的尝试。例如,诸如消息队列等可靠消息通信传输可用于在发起者和接受者之间可靠地传递消息。消息队列通信技术使得不同系统上的应用程序能够通过向队列发送消息并从队列读取消息来彼此通信,队列是为了可靠性而跨越错误持久保存的。
尽管排队系统提供了可用于可靠地携带SOAP消息的传输,然而这类系统仍有若干缺陷。例如,这些系统为其中单独地传输和处理请求(以及可能其响应)的异步操作提供了解决方案。因此,这些系统通常在资源方面是重量级的;涉及具有持久的事务消息存储且在开发、编程模型和管理中具有显著地更多复杂性的多个中介。所有这些对于可靠的直接通信是不必要的,且有损于最小化等待延时的目标。此外,该程序模型不直接支持请求-响应样式的编程或会话。因此,排队的通信模型与当前“交互式”web服务模型不同,且未解决关键的“连接”情形和“交互”应用。例如,它并不很好地适用于以定时的方式期望响应的情况,也不适用于需要在发起者和接受者之间共享分布式事务环境的情况。
也做出了通过诸如可靠HTTP或HTTPR等基础上不可靠的传输协议来定义可靠传输层的尝试。然而,使该解决方案以及排队解决方案受害的一个常见的问题是仅当对发起者和接受者之间的通信使用特定的可靠传输协议时才可实现可靠消息通信。web服务的基本特性要求与特定销售商平台、实现语言和特定传输协议的独立性。在一般的情况下,发起者可能无法使用特定的协议直接向接受者发送消息(例如,接受者不支持该协议),或者消息可能需要在离开发送者节点之后在到达目的地节点之前经过多次跳跃。取决于涉及一次特定跳跃的两个节点之间的连接的特性,可能不得不选择不提供可靠消息通信特征的合适的传输协议。
也可在协议栈的不同层上存在中介;并且因此不提供完全的端对端可靠性。例如,传输协议可跨多个较低层中介(例如,IP层中介-例如,IP路由器)提供可靠性。然而,传输协议可能终止在SOAP中介或应用层上。因此,该传输协议可能无法在该中介上提供可靠性,即,在应用层上没有端对端可靠性。
最近,各种用于web服务的可靠消息通信协议(后文称为“RM-WS”协议),例如WS-可靠消息通信(WS-ReliableMessaging)为以上识别的当前可靠消息通信系统的缺陷提供了解决方案。这些协议是允许消息在存在软件组件、系统或网络故障的情况下在端点应用程序之间可靠地传送消息的传输不可知连接协议。因此,RM-WS协议为发起者和接受者之间的可靠的、端对端的、面向会话的通信提供了解决方案。
这些RM-WS协议类似于TCP,因为TCP提供了通过网际协议(IP)路由器和多个网络从TCP发送者到TCP接收者的可靠的、仅一次、按序的字节流传送。用于WS的可靠消息协议为多个中介(包括SOAP层中介)、传输和连接上的消息提供了同样且更多的传送(注意,传输的单位是消息,而不是如TCP情况中那样是字节或字节结合,在TCP中,字节的大小是由IP分组中的可用有效载荷空间来确定的)。尽管TCP和RM-WS协议都是“可靠”协议,因为RM-WS驻留在OSI模型的应用或SOAP层中,然而RM-WS协议提供了可靠的消息通信,而不管用于传输数据的传输协议是什么。因此,RM-WS协议不被绑定到用于在端点之间传输消息的特定传输或其它协议。
尽管在一段时间内几种RM-WS协议是活跃的,然而这些协议规范仍具有若干缺点和不足。例如,这些RM-WS协议不提供验证已建立的序列会话的连通性的方式。此外,这些规范未提供维持连接的活跃性和/或在一段不活动超时时间段过去之后缺少消息交换的情况下扩展序列会话的方式。因此,需要验证和维持使用RM-WS协议的系统的连接活跃性。

发明内容
通过本发明的示例性实施例,现有的用于web服务的可靠消息通信协议的上述不足和缺点得以克服。例如,本发明提供了通过使用用于web服务的可靠消息通信协议(RM-WS协议)来验证序列连接的存在并维持端点之间的连接活跃性的机制。
例如,当在发起者端点处维持连接活跃性时,本发明能够依照RM-WS协议在两个端点之间的应用层上建立由唯一序列标识符所标识的序列会话。基于创建序列会话的请求,接收对应于该新创建的序列会话的唯一序列标识符。之后,或在任何其它时刻,标识该序列会话的非活动超时时间段,它表示可在不接收序列会话的消息的情况下经过的时间的上限。依照基于非活动超时时间段的算法,计算一保持活跃过期超时。基于计算的保持活跃过期超时,发送包括该唯一序列标识符的消息。之后,在非活动超时时间段之前接收包括该唯一序列标识符的消息,从而维持了连接活跃性。基于所接收的消息,对非活动超时时间段复位非活动定时器,使得序列会话被保持活跃。
在用于验证连接活跃性的另一示例实施例,依照RM-WS协议在两个端点之间的应用层上建立由唯一序列标识符标识的序列会话。类似于上述内容,标识一非活动超时时间段,它是可以在序列会话的两个端点之间不用交换消息的情况下经过的时间的上限。在非活动超时时间段过期之前,接收用于验证连接的消息,该消息包括对应于序列会话的唯一标识符。基于所接收的消息,复位用于该非活动超时时间段的非活动定时器,从而该序列会话被保持活跃。
本发明的其它特征和优点将在下文的描述中描述,并且部分可从该描述中清楚,或可通过对本发明的实践而学到。本发明的特征和优点可通过所附权利要求书中特别指出的手段和组合来实现和获得。本发明的这些和其它特征将从以下描述和所附权利要求书中变得完全明白,或者可通过如下所述的对本发明的实践而学到。


为以可获得本发明的上述和其它优点及特征的方式来描述,将参考附图中示出的其特定实施例来呈现以上简要描述的本发明的更具体描述。要理解,这些附图仅描述了本发明的典型实施例,因此并不被认为是限制其范围,本发明将通过使用附图用附加的特殊性和细节来描述和解释,附图中图1A示出了依照本发明的示例实施例通过充分利用RM-WS协议的特征来验证和维持连接活跃性的计算系统;图1B示出了依照本发明的示例实施例可用于计算用于发送维持连接活跃性的RM-WS协议基础结构消息的间歇性和周期性的算法的时间线;图2示出了为本发明提供合适的操作环境的示例系统;图3示出了依照本发明的示例实施例维持连接活跃性的方法的流程图;以及图4示出了依照本发明的示例实施例用于验证连接活跃性的方法的流程图。
具体实施例方式
本发明延及用于充分利用用于web服务的可靠消息通信协议(RM-WS)来验证和维持序列会话中的连接活跃性的机制的方法、系统和计算机程序产品。本发明的实施例可由包括各种计算机硬件的专用或通用计算机组成,如下文详细描述的。
本发明针对例如WSReliableMessaging(WS可靠消息通信)(WS-RM)等用于web服务的可靠消息通信协议(下文称为“RM-WS”协议)的扩展,该协议描述了允许消息在存在软件组件、系统或网络故障的情况下在分布式应用程序之间可靠地传送消息的规范。用于web服务的可靠消息通信协议便于将消息从源(后文称为“发起者”)成功地发送到例如服务等目的地(后文称为“接受者”),并且确保出错情况是可检测的。这些协议是传输不可知的,从而允许使用不同的网络传输技术来实现它们。此外,可靠消息通信协议的各种实现对应用程序隐藏了间歇通信故障,并且可在系统故障的情况下提供可恢复性。
本发明监视两个端点之间的已建立序列会话上的活动,该活动被定义为接收该序列的消息的动作。接收到的消息可以是应用或基础结构消息(例如,依照RM-WS协议的确认消息)。此外,本发明定义了一非活动超时(IT)时间段,它是序列会话上可在不接收消息(应用程序或基础结构)的情况下经过的时间的上限。当到达该上限时,另一端点被认为不存在,并且该序列被认为是丢失或放弃的。另一方面,如果在IT过期之前接收到消息,则复位IT定时器,并且验证该连接。在又一相关实施例中,基于所标识的IT,本发明计算用于在端点之间发送RM-WS幂等协议基础结构消息的初始时间和周期性,以试图维持连接活跃性。
图1A示出了可用于实施所描述的示例实施例中的某一些的分布式计算系统100。可以依照RM-WS协议在发起者120和接受者125之间建立序列会话。所建立的序列会话可跨越多个或者不跨越实际的网络连接,取决于所使用的传输。此外,连接可以随时间(例如,现在使用一种连接,稍后使用另一种连接)或拓扑结构(例如,对每一次跳跃有不同的传输类型)而不同。例如,如果消息是要通过将消息复制到软盘上然后在发起者120和接受者125之间传递该软盘来交换的,则在计算机之间没有真实的物理连接,并且仍通过充分利用RM-WS协议的特征,本发明可在通信的各方之间,即发起者120和接受者125之间创建会话。
注意,为说明性目的而给出了软盘的示例,并且这不是典型的使用情况。对“交互式应用”更典型的使用情况是对TCP/IP、HTTP(可能在TCP/IP上分层)、UDP/IP、管道或其它实时传输机制的使用。
在示例实施例中,发起者120将主要负责维持连接活跃性。因此,该实施例支持不可寻址的(即,匿名的)发起者120,这一客户机位于防火墙之后,通过诸如HTTP上的SOAP请求-响应协议与接受者125通信。然而,注意,在发起者120是可寻址的情况下(以及在某些情况下即使是匿名的),任一端点(即,发起者120或接受者125)可如下所述地验证连接活跃性。因此,尽管以下示例通常参考发起者120维持和验证连接活跃性,这一参考用于说明性的目的,并非意味着限制或缩小本发明的范围,除非明确地要求保护。
不论发起者120是否为匿名的,发起者120使用包括定时器110的连接验证模块105来防止已建立的序列会话由于在缺少应用程序135或基础结构130消息的情况时的非活动性而终止。例如,基于标识的非活动超时(IT),连接验证模块105使用一种算法来发起RM-WS基础结构消息交换,以防止连接两侧的非活动超时。例如,充分利用RM-WS确认请求消息Ack Request115(注意,在WS-RM的情况下,可使用确认请求消息AckRequested),并使用特别设计的算法,连接验证模块105确定向另一侧发送初始Ack Request消息115(又称为并可在此互换地引用为“保持活跃”消息115)的时间段。
注意,示例实施例允许IT可基于诸如等待延时问题、网络可靠性和其它考虑事项等因素在应用层上调整。例如,在上述软盘示例中,非活动超时时间段的持续时间需要相对较大,以允许由通信介质所施加的等待延时,而其它系统可能要求相对较短的持续时间,以保持会话开放而不从接受者125接收消息。因此,IT可在每一连接的基础上调整,并可在建立序列会话之前在发起者120和接受者125之间协商,和/或在建立会话之后动态地修改。
不论IT值如何,当接受者125接收到AckRequest消息115时,接受者125复位其非活动定时器(未示出)。注意,不论接受者25是接收到基础结构130(例如,AckRequest 115)还是应用层135消息,都复位非活动定时器。此时,接受者125可验证连接活跃性。
类似地,为在发起者120处验证连接活跃性,发起者需要接收序列会话的消息(应用135或基础结构130)。因此,当接受者125接收Ack Request消息115时,通常它通过发送RM-WS确认响应AckResponse 130来响应(例如,在WS-RM的情况下,接受者125发送Ack消息)。在接收到Ack Response或Ack 130之后,发起者120确认连接活跃性,并复位发起者120侧的非活动定时器110,并且维持了连接活跃性。注意,如上所述,由发起者120在非活动超时过期之间接收到的应用消息135也将复位定时器110。在这一情况下,连接验证模块105被复位,并重新计算用于发送AckRequest 115消息的初始时间段。
还要注意,不论发起者120是否接收到消息(应用程序135或基础结构消息130),序列会话至少在接受者125侧延伸。因此,在发起者120是匿名的情况下(或者在发起者120可寻址的某些情况下),对发起者120可能没有非活动超时。因此,Ack Request消息115的周期性发送可在接受者125处验证连接活跃性,而不论发起者120是否接收到消息。实际上,反过来也是可以的,其中,接受者125不强制实行非活动超时,但是当接收到消息时在发起者120处延伸连接。
同样重要的是注意,基础结构消息不是可靠地传输的,并且可以在交换期间的任何时刻丢失。因此,Ack Request消息115可以在从发起者120传送到接受者125期间丢失。ACK Response 130消息可以在从接受者125到发起者120的传送期间丢失。在这一情况下,示例实施例能够基于用于周期性地向接受者发送AckRequest 115的非活动超时时间段来特别地调整该算法。注意,基础结构消息115、135是幂等的,因此不需要重复检测,并且顺序是无关紧要的。
连接验证模块105利用上述特别设计的算法来为初始和随后的周期性尝试选择次数,以如上所述地启动交换。图1B示出了用于发送保持活跃或Ack Request消息115的一种可能算法的示例时间线表示。如图1B所示,该算法时间线基于至少三个属性中的一个或多个。第一个属性是如上所述的非活动超时(IT)140,它定义了发起者120在使序列会话失败或放弃该会话之前在没有从接受者125接收消息的情况下将等待多久。第二个属性是最大重试计数(MRC)155,它是发起者在放弃之前试图重发消息的次数。这适用于应用程序和基础结构消息(例如,保持活跃消息115)两者。第三个属性是保持活跃过期超时(KAET)150,它被定义为发起者120在开始发送保持活跃消息115之前在没有从接受者125得到消息的情况下将等待的间隔-即,KAET 150是IT 140的某一小部分(N),它定义了发送保持活跃消息115的初始时间。在以下示例中,N被设为默认值0.5。因此,发起者120在IT 140过去了一半之后没有来自接受者125的活动的情况下开始发送保持活跃消息115。
基于这三个属性,可计算保持活跃间隔(KAI)145,即保持活跃消息的连续或周期性发送之间的间隔。例如,保持活跃间隔145可以使用算法KAI=IT*(1-N)/MRC来计算。IT 140、KAET 150、MRC 155和KAI 145的关系在图1B中示出。注意,尽管使用了特定的算法来定义KAET 150和KAI 145,然而用于确定何时发送Ack Request消息或保持活跃消息115的其它算法和方式也可用于本发明。例如,用于发送保持活跃消息115的周期性(即,KAI 145)可被随机地选择。因此,对上述用于确定这些值的算法的使用仅用于说明的目的,并不意味着限制或缩小本发明的范围,除非明确地要求保护。
然而,通常发起者120将按照周期性的定时器间隔来计算IT 140、KAET 150和KAI 145。例如,如果IT 140是2小时,MRC 155为5,周期性定时器间隔是2秒,则使用上述公式和假设(例如,N=0.5),KAET 150将等于1小时,而KAI将等于20分钟。将这些值转换成秒,并除以定时器间隔,得到以下IT/(定时器间隔)=7200/2=3600定时器节拍;KAET(定时器间隔)=3600/2=1800定时器节拍;KAI/(定时器间隔)=720/2=360定时器节拍。因此,在这一情况下,发起者120将在1800个定时器节拍之后开始发送保持活跃消息115。发起者120也将每隔360个定时器信号发送保持活跃消息,直到总共过去了3600个节拍。如果发起者在这一持续时间中(即,在IT间隔中)未从接受者125接收到消息,则发起者120将使该序列会话失败。
在另一示例实施例中,以上实现可使用两个定时器来实现。第一定时器用等于IT 140的定时器间隔来设置。只要从接受者125接收到消息,就复位这第一定时器。如果第一定时器过去而没有来自接受者125的任何活动,则发起者120将终止该序列会话。第二定时器用等于KAET 150的定时器间隔来设置。当该第二定时器过期时,发起者向接受者125发送保持活跃消息115,并用KAI 145的定时器间隔来复位第二定时器。此外,在后续的第二定时器过期时(即,在每次经过了KAI145的间隔之后而没有接收到消息),将用KAI 145的定时器间隔来复位第二定时器。只要从接受者125接收到消息130、135,发起者120将用等于KAET 150的定时器间隔复位第二定时器,且重复该过程。
注意,在等待发送保持活跃消息115时,应用消息可变得可用于发起者120发送。这可能由于发起者120应用程序发送消息或者发起者120重试算法确定是重发缓冲的应用消息的时候而发生。如果发生这一情况,则在示例性实施例中,发起者将重启其KAI 145(或可能KAET 150)间隔。换言之,发起者120自从发送应用消息以来不发送另一保持活跃115消息,直到经过了KAI 145(或KAET 150)的间隔。因此,发起者至少每隔KAI 145的间隔发送某一形式的消息,不论是应用程序还是基础结构。此外,即使所发送的应用消息由于任何原因,例如网络拥塞而被阻断,也通常发送保持活跃消息115。
注意,其它实施例允许向发送的应用消息添加AckRequest 115消息。该实施例可在例如当IT 145将要过期以提示接受者125加快发送Ack Response或Ack 130而非等待确认一批消息时使用。在这一情况下,AckRequest 115消息通常被表示为与应用消息135一起包括的协议元素(例如,由例如WS-RM的RM-WS协议定义的头部或其它指示符)。由此,“AckRequest 115消息”应当被广泛地解释成包括Ack Request 115是如上所述的协议元素的情况。
其它实施例允许在依照RM-WS协议的单个消息(例如,应用程序或基础结构,例如,Ack Request 115消息)中包括多个序列会话的每一个的Ack Request 115。同样,其它实施例允许在依照RM-WS协议的单个消息(例如,应用程序135或基础结构,例如Ack 130消息)中包括多个序列会话的每一个的Ack Response 130。这允许在接收单个消息时验证多个序列的活跃性,由此减少了维持相同的端点120、125之间的多个序列的活跃性所需的消息数。
本发明也可按照包括功能步骤和/或非功能动作的方法来描述。以下是可在实施本发明时执行的动作和步骤的描述。通常,功能步骤按照所实现的结果来描述本发明,而非功能动作描述了用于实现特定结果的更具体的行动。尽管可以按特定的顺序描述或要求保护功能步骤或非功能动作,然而本发明不限于任何特定的顺序或动作和/或步骤的组合。此外,对权利要求书中所述和以下对图3和4的流程图的描述中的步骤和/或动作的使用用于指示对这些术语的期望的特定使用。
图3和4示出了本发明的各种示例性实施例的示例流程图。以下图3和4的描述将偶尔参考来自图1A和1B的对应元素。尽管可对来自这些附图的特定元素做出参考,然而这些元素仅用于说明性的目的,并不意味着限制或缩小本发明的范围,除非明确要求保护。
图3示出了用于通过使用RM-WS协议验证端点应用程序之间的序列会话的连接活跃性的方法300的示例流程图。方法300包括在两个端点之间建立(305)序列会话的动作。例如,可以照RM-WS协议(例如,WSReliableMessaging)在发起者120和接受者125之间建立序列会话。方法300还包括标识(310)非活动超时的动作。例如,连接验证模块105可用于标识非活动超时(IT)140,其中,非活动超时时间段表示对该序列会话在发起者120和接受者125之间没有交换消息的情况下可经过的时间的上限。该IT 140可以是可调整的,以考虑诸如由通信介质施加的等待延时或关于底层网络的可靠性的知识等因素。
在非活动超时时间段过期之前,方法300还包括接收(315)包括唯一序列标识符的消息的动作。例如,发起者120或接受者125的任一个可接收用于验证连接活跃性的消息,其中该消息包括对应于序列会话的唯一序列标识符。所接收的包括唯一序列标识符的消息可以是应用135消息。或者,所接收的消息可以是基础结构消息115、130。例如,如果消息是由发起者120接收的,则所接收的消息可以是响应于由发起者120先前发送的Ack Request 115的Ack 130。如果消息是由接受者125接收的,则消息可以是序列Ack Request 115。不论消息是应用层还是基础结构消息,其它实施例允许单个消息包括多个序列会话的确认请求(例如,AckRequest 115)或确认(例如,Ack 130)。另外,在Ack Request 115包括在应用层消息中的情况下,通常Ack Request 115将被包括在协议元素中,例如消息的头部或其它字段。
基于所接收的消息,方法300还包括复位(320)非活动定时器的动作。例如,如果消息是在发起者120处接收的,则发起者可复位连接验证模块105内的定时器110。然后可重新计算非活动超时时间段,并且重复该过程。如果在复位了非活动定时器之后,在非活动超时时间段140过期之后没有接收到任何应用或基础结构消息,则可放弃该序列会话。
图4示出了用于由发起者通过使用RM-WS协议维持端点之间的序列会话的连接活跃性的方法400的流程图。方法400包括在两个端点之间建立(405)序列会话的动作。例如,可依照RM-WS协议(例如,WSReliableMessaging)在发起者120和接受者125之间建立由唯一序列标识符表示的序列会话。为建立该序列会话,发起者120通常向接受者125发送依照RM-WS协议创建一个或多个序列会话的请求。基于该请求,接受者125可生成唯一序列标识符(例如,全局唯一标识符(GUID)),该标识符用于标识所创建的序列会话。
同样要注意,建立序列会话的其它方法也可用于本发明。例如,发起者120可生成唯一序列标识符,并在创建序列会话的请求中将它们发送到接受者125。实际上,有许多可用于本发明的建立序列会话的其它公知方法。因此,对如何建立序列会话的任何特定参考都仅用于说明性的目的,并不意味着局限或缩小本发明的范围,除非明确地要求保护。
不论序列会话是如何建立的,方法400还包括标识(415)该序列会话的非活动超时时间段的动作。例如,连接验证模块105可标识非活动超时(IT)140,它表示在该序列会话没有接收消息的情况下可经过的时间的上限。该IT 140可以基于诸如传输网络的可靠性或诸如接收确认的最小期望等待延时等其它考虑事项等因素来调整。
方法400还包括计算(417)保持活跃过期超时的动作。例如,连接验证模块105可使用基于非活动超时时间段140的算法来计算保持活跃过期时间(KAET)150,它通常是非活动超时140的一小部分。基于所计算的保持活跃过期超时,方法400还包括发送包括唯一序列标识符的消息的动作。该消息可以是基础结构消息(例如,Ack Request 115)或应用消息135。例如发起者120在KAET 150过期之后可发送Ack Request消息115,它是由RM-WS协议定义的基础结构幂等消息。不论所发送的消息是应用层还是基础结构消息,其它实施例允许消息包括多个序列会话的确认请求(例如,Ack Request 115)。
下一步,方法400包括接收(422)包括唯一序列标识符的消息的动作。即,发起者120可从接受者125接收包括唯一序列标识符的Ack Response 130或应用消息135。如果消息(基础结构或应用消息,例如130、135)是在非活动超时时间段140之前接收的,则维持了序列会话的连接活跃性。此外,基于所接收的消息,方法400还包括复位(425)非活动定时器的动作。即,基于所接收的AckResponse 130或应用消息135,连接验证模块105内的非活动定时器110可对非活动超时140复位,使得序列会话被保持活跃。
还要注意,所接收的消息可以是应用层消息。在这一情况下,Ack Response 130可以被包括在应用层消息中。不论所接收的消息是应用层还是基础结构消息,其它实施例允许消息包括多个序列会话的确认(例如,Ack 130)。
也要注意,Ack Request消息115可对应于已被确认为从接受者125接收的消息。换言之,即使所有消息都被确认为已接收,也可发送Ack Request消息115。此外,要发送到接受者的应用消息可被阻断,但是Ack Request消息115应当在任何情况下都可被发送。
另外要注意,用于计算KAET 150的算法是基于非活动超时140的一小部分(N)的。例如,用于计算KAET 150的非活动超时140的一小部分可以是非活动超时140的一半,使得当非活动定时器110到达IT 140的一半时发送初始AckRequest或保持活跃消息115。此外,示例实施例能够识别最大重试计数(MRC)155,它是发送应用程序和基础结构消息115的最大次数。基于最大重试计数155,可计算保持活跃间隔(KAI)145,它表示发送消息的时间段。因此,一个或多个消息是基于所计算的KAI 145来发送的,其中发送的消息应当包括Ack Request消息115。当然,如上所述,基于KAI 145发送的消息可以是应用消息。此外,注意,非活动超时140可基于所确定的传输网络可靠性或其它考虑事项来调整。
本发明的范围内的实施例也包括用于携带或在其上储存计算机可执行指令或数据结构的计算机可读介质。这类计算机可读介质可以是可由通用或专用计算机访问的任一可用介质。作为示例而非局限,这类计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或其它可用来以计算机可执行指令或数据结构的形式携带或储存所期望的的程序代码装置并可由通用或专用计算机访问的任一介质。当通过网络或另一通信连接(或者硬布线、或者无线、或硬布线和无线的组合)向计算机传输或提供信息时,计算机适当地将该连接视为计算机可读介质。由此,任一这类连接适当地称为计算机可读介质。上述的组合也应当包括在计算机可读介质的范围内。计算机可执行指令包括,如,促使通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。
图2及以下讨论提供了对适于在其中实现本发明的计算环境的简要概括描述。尽管并非所需,但本发明将在诸如由网络环境中的计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。计算机可执行指令、相关的数据结构以及程序模块表示了用于执行这里揭示的方法的步骤的程序代码装置的示例。这一可执行指令或相关数据结构的特定顺序表示了用于实现在这类步骤中所描述的功能的相应动作的示例。
本领域的技术人员可以理解,本发明可以在具有多种类型计算机系统配置的网络计算环境中实践,包括个人计算机、手持式设备、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机等等。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接(或者通过硬布线链路、或者通过无线链路、或通过硬布线或无线链路的组合)的本地和远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
参考图2,用于实现本发明的示例性系统包括常规计算机220形式的通用计算设备,包括处理单元221、系统存储器222以及将包括系统存储器222的各类系统组件耦合至处理单元221的系统总线223。系统总线223可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。系统存储器包括只读存储器(ROM)224和随机存取存储器(RAM)225。基本输入/输出系统(BIOS)226,包含如在启动时协助在计算机220内的元件之间传输信息的基本例程,可储存在ROM 224中。
计算机220也可包括用于对磁硬盘239进行读写的磁硬盘驱动器227、用于对可移动磁盘229进行读写的磁盘驱动器228以及用于对可移动光盘231如CD-ROM或其它光介质进行读写的光盘驱动器230。磁硬盘驱动器227、磁盘驱动器228以及光盘驱动器230分别通过硬盘驱动器接口232、磁盘驱动器接口233和光盘驱动器接口234连接至系统总线223。驱动器及其相关联的计算机可读介质为计算机220提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管这里描述的示例环境采用了磁硬盘239、可移动磁盘229以及可移动光盘231,然而也可以使用用于储存数据的其它类型的计算机可读介质,包括盒式磁带、闪存卡、数字多功能盘、Bernoulli盒式磁盘、RAM、ROM等等。
包括一个或多个程序模块的程序代码装置可储存在硬盘239、磁盘229、光盘231、ROM 224或RAM 225中,包括操作系统235、一个或多个应用程序236、其它程序模块237以及程序数据238。用户可以通过键盘240、定点设备242或其它输入设备(未示出),如麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等向计算机220输入命令和信息。这些和其它输入设备通常通过耦合至系统总线223的串行端口接口246连接到处理单元221。可选地,输入设备也可以通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。监视器247或另一显示设备也通过接口,如视频适配器248连接到系统总线223。除监视器之外,个人计算机通常包括其它外围输出设备(未示出),如扬声器和打印机。
计算机220可以使用到一个或多个远程计算机,如远程计算机249a和249b的逻辑连接在网络化环境中操作。远程计算机249a和249b的每一个可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,并通常包括许多或所有相对于计算机220所描述的元件,尽管在图2中仅示出了存储器存储设备250a和250b及其关联的应用程序236a和236b。图2描述的逻辑连接包括局域网(LAN)251和广域网(WAN)252,这里示出作为示例而非局限。这类网络环境常见于办公室范围或企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机220通过网络接口或适配器253连接至局域网251。当在WAN网络环境中使用时,计算机220可包括调制解调器254或用于通过广域网252,如因特网建立通信的其它装置。调制解调器254可以是内置或外置的,通过串行端口接口246连接至系统总线223。在网络化环境中,相对于计算机220所描述的程序模块或其部分可储存在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用通过广域网252建立通信的其它装置。
本发明可以用其它特定形式来实施而不脱离其精神或本质特征。所描述的实施例在所有方面都被认为是说明性而非限制性的。因此,本发明的范围是由所附权利要求书而非以上的描述来指示的。落入所附权利要求书的等效技术方案的范围之内的所有改变都包括在其范围之内。
权利要求
1.在web服务(WS)环境中的发起者计算机系统处,一种通过使用用于WS的可靠消息通信协议(RM-WS协议)维持端点之间的序列会话的连接活跃性的方法,所述方法包括以下动作依照RM-WS协议在两个端点应用程序之间的应用层上建立由唯一序列标识符标识的序列会话;识别所述序列会话的非活动超时时间段,所述非活动超时时间段表示可在所述序列会话没有接收消息的情况下经过的时间的上限;依照基于所述非活动超时时间段的算法计算保持活跃过期超时;基于所计算的保持活跃过期超时,发送包括所述唯一序列标识符的消息;在所述非活动超时时间段之前接收包括所述唯一序列标识符的消息,这维持了所述连接活跃性;以及基于所接收的消息,复位所述非活动超时时间段的非活动定时器,使得所述序列会话被保持活跃。
2.如权利要求1所述的方法,其特征在于,所接收的包括所述唯一序列标识符的消息是应用层消息。
3.如权利要求2所述的方法,其特征在于,所述应用层消息包括对一个或多个序列会话的确认响应。
4.如权利要求1所述的方法,其特征在于,所发送的包括所述唯一序列标识符的消息是确认请求消息,它是由所述RM-WS协议定义的基础结构幂等消息,并且其中,所接收的消息是响应于所述确认请求消息的基础结构确认消息。
5.如权利要求4所述的方法,其特征在于,所述确认请求消息对应于已被确认为从所述接受者接收的一个或多个消息。
6.如权利要求4所述的方法,其特征在于,所述确认请求消息包括对多个序列会话的确认请求,并且其中,所接收的消息包括对所述多个序列会话的多个确认响应。
7.如权利要求1所述的方法,其特征在于,所述发起者是不可寻址的,并且所述发起者通过HTTP上的SOAP与所述接受者通信。
8.如权利要求1所述的方法,其特征在于,所发送的包括所述唯一序列标识符的消息是确认请求消息,它是由所述RM-WS协议定义的基础结构幂等消息,并且其中,发送到所述接受者的应用消息被阻断,但是所述确认请求消息在任何情况下都可被发送。
9.如权利要求1所述的方法,其特征在于,用于计算所述保持活跃过期超时的算法还基于所述非活动超时时间段的某一小部分。
10.如权利要求9所述的方法,其特征在于,所发送的包括所述唯一序列标识符的消息是确认请求消息,它是由所述RM-WS协议定义的基础结构幂等消息,并且其中,用于计算所述保持活跃过期超时的所述非活动超时时间段一小部分是所述非活动超时时间段的一半,使得当所述非活动定时器到达所述非活动超时时间段的一半时发送所述确认请求消息。
11.如权利要求9所述的方法,其特征在于,还包括以下动作识别最大重试计数,它是发送应用程序和基础结构消息的最大次数;以及基于所述最大重试计数计算保持活跃间隔,所述保持活跃间隔表示用于发送消息的时间段;以及基于所计算的保持活跃间隔发送包括所述唯一序列标识符的一个或多个消息,其中,所发送的一个或多个消息包括应用层消息或确认请求消息中的至少一个。
12.如权利要求11所述的方法,其特征在于,所述非活动超时时间段是可调整的,以考虑由通信介质施加的等待延时。
13.如权利要求11所述的方法,其特征在于,所述RM-WS协议是WSReliableMessaging。
14.如权利要求1所述的方法,其特征在于,所发送的消息是应用层消息。
15.如权利要求14所述的方法,其特征在于,与所述应用层消息一起发送确认请求消息,所述确认请求消息是由所述RM-WS协议定义的基础结构幂等消息,并用于加速来自所述接受者的确认响应。
16.如权利要求1所述的方法,其特征在于,在所述非活动超时时间段过期之后没有接收到任何应用或基础结构消息,并放弃所述序列会话。
17.在web服务(WS)环境中的计算机系统处,一种通过使用用于WS的可靠消息通信协议(RM-WS协议)验证端点应用程序之间的序列会话的连接活跃性的方法,所述方法包括以下动作依照RM-WS协议在两个端点应用程序之间的应用层上建立由唯一序列标识符标识的序列会话;标识非活动超时时间段,所述非活动超时时间段表示在所述序列会话的两个端点之间没有交换消息的情况下可经过的时间的上限;在所述非活动超时时间段过期之前,接收用于验证所述连接活跃性的消息,所述消息包括对应于所述序列会话的唯一序列标识符;以及基于所接收的消息,复位所述非活动超时时间段的非活动定时器,使得所述序列会话被保持活跃。
18.如权利要求17所述的方法,其特征在于,所接收的包括所述唯一序列标识符的消息是应用消息。
19.如权利要求18所述的方法,其特征在于,所述应用消息包括对包括对应于所述唯一序列标识符的序列会话的一个或多个序列会话的确认响应。
20.如权利要求17所述的方法,其特征在于,所接收的消息是由所述序列会话的发起者接收的,并且其中,所接收的消息是响应于由所述发起者先前发送的确认请求消息的基础结构确认消息。
21.如权利要求20所述的方法,其特征在于,所述基础结构确认消息包括对所述发起者和所述接受者之间的多个序列会话的确认。
22.如权利要求20所述的方法,其特征在于,所述发起者是不可寻址的,且所述发起者通过HTTP上的SOAP与所述接受者通信。
23.如权利要求17所述的方法,其特征在于,所接收的消息是由所述序列会话的接受者接收的,并且其中,所接收的消息是序列确认请求。
24.如权利要求17所述的方法,其特征在于,所述非活动超时时间段是可调整的,以考虑由通信介质施加的等待延时。
25.如权利要求17所述的方法,其特征在于,在复位所述非活动定时器之后,在所述非活动超时时间段过期之后没有接收到任何应用或基础结构消息,且所述序列会话被放弃。
26.在web服务(WS)环境中的发起者计算机系统处,一种用于实现通过使用用于WS的可靠消息通信协议(RM-WS协议)来维持端点之间的序列会话的连接活跃性的方法的计算机程序产品,所述计算机程序产品包括其上储存有计算机可执行指令的一个或多个计算机可读介质,当由处理器执行时,所述计算机可执行指令可使所述消息通信系统执行以下动作依照RM-WS协议在两个端点应用程序之间的应用层上建立由唯一序列标识符表示的序列会话;识别所述序列会话的非活动超时时间段,所述非活动超时时间段表示在所述序列会话没有接收任何消息的情况下可以经过的时间的上限;依照基于所述非活动超时时间段的算法计算保持活跃过期超时;基于所计算的保持活跃过期超时,发送包括所述唯一序列标识符的消息;在所述非活动超时时间段之前接收包括所述唯一序列标识符的消息,这维持了所述连接活跃性;以及基于所接收的消息,复位所述非活动超时时间段的非活动定时器,使得所述序列会话被保持活跃。
27.如权利要求26所述的计算机程序产品,其特征在于,所接收的包括所述唯一序列标识符的消息是应用层消息。
28.如权利要求26所述的计算机程序产品,其特征在于,所发送的包括所述唯一序列标识符的消息是确认请求消息,它是由所述RM-WS协议定义的基础结构幂等消息,并且其中,所接收的消息是响应于所述确认请求消息的基础结构确认消息。
29.如权利要求26所述的计算机程序产品,其特征在于,所述确认请求消息对应于已被确认为从所述接受者接收的一个或多个消息。
30.如权利要求26所述的计算机程序产品,其特征在于,所述发起者是不可寻址的,且所述发起者通过HTTP上的SOAP与所述接受者通信。
31.如权利要求26所述的计算机程序产品,其特征在于,所发送的包括所述唯一序列标识符的消息是确认请求消息,它是由所述RM-WS协议定义的基础结构幂等消息,并且其中,发送到所述接受者的应用消息被阻断,但所述确认请求消息可在任何情况下被发送。
32.如权利要求26所述的计算机程序产品,其特征在于,用于计算所述保持活跃过期超时的算法还基于所述非活动超时时间段的某一部分。
33.如权利要求32所述的计算机程序产品,其特征在于,所发送的包括所述唯一序列标识符的消息是确认请求消息,它是由所述RM-WS协议定义的基础结构幂等消息,并且其中,用于计算所述保持活跃过期超时的所述非活动超时时间段的一部分是所述非活动超时时间段的一半,使得当所述非活动定时器到达所述非活动超时时间段的一半时,发送所述确认请求消息。
34.如权利要求32所述的计算机程序产品,其特征在于,还包括使所述消息通信系统执行以下动作的计算机可执行指令识别最大重试计数,它是发送应用程序和基础结构消息的最大次数;以及基于所述最大重试计数计算保持活跃间隔,所述保持活跃间隔表示用于发送消息的时间段;以及基于所计算的保持活跃间隔发送包括所述唯一序列标识符的一个或多个消息,其中,所发送的一个或多个消息包括应用层消息或确认请求消息中的至少一个。
35.如权利要求34所述的计算机程序产品,其特征在于,所述非活动超时时间段是可调整的,以考虑由通信介质施加的等待延时。
36.如权利要求34所述的计算机程序产品,其特征在于,所述RM-WS协议是WSReliableMessaging。
37.如权利要求26所述的计算机程序产品,其特征在于,在所述非活动超时时间段过期之后没有接收到任何应用或基础结构消息,且所述序列会话被放弃。
38.如权利要求26所述的计算机程序产品,其特征在于,所发送的消息是应用层消息。
39.如权利要求38所述的计算机程序产品,其特征在于,与所述应用层消息一起发送确认请求消息,所述确认请求消息是由所述RM-WS协议定义的基础结构幂等消息,并用于加速来自所述接受者的确认响应。
40.在web服务(WS)环境中的计算机系统处,一种用于实现通过使用用于WS的可靠消息通信协议(RM-WS协议)来验证端点应用程序之间的序列会话的连接活跃性的方法的计算机程序产品,所述计算机程序产品包括其上储存计算机可执行指令的一个或多个计算机可读介质,当由处理器执行时,所述计算机可执行指令使所述消息通信系统执行以下动作依照RM-WS协议在两个端点应用程序之间的应用层上建立由唯一序列标识符标识的序列会话;识别非活动超时时间段,所述非活动超时时间段表示在所述序列会话的两个端点之间没有交换消息的情况下可经过的时间的上限;在所述非活动超时时间段过期之前,接收用于验证所述连接活跃性的消息,所述消息包括对应于所述序列会话的唯一序列标识符;以及基于所接收的消息,复位所述非活动超时时间段的非活动定时器,使得所述序列会话被保持活跃。
41.如权利要求40所述的计算机程序产品,其特征在于,所接收的包括所述唯一序列标识符的消息是应用消息。
42.如权利要求40所述的计算机程序产品,其特征在于,所接收的消息是由所述序列会话的发起者接收的,并且其中,所接收的消息是响应于先前由所述发起者发送的确认请求消息的基础结构确认消息。
43.如权利要求42所述的计算机程序产品,其特征在于,所述发起者是不可寻址的,且所述发起者通过HTTP上的SOAP与所述接受者通信。
44.如权利要求40所述的计算机程序产品,其特征在于,所接收的消息是由所述序列会话的接受者接收的,并且其中,所接收的消息是序列确认请求。
45.如权利要求40所述的计算机程序产品,其特征在于,所述非活动超时时间段是可调整的,以考虑由通信介质施加的等待延时k。
46.如权利要求40所述的计算机程序产品,其特征在于,在复位所述非活动定时器之后,在所述非活动超时时间段过期之后没有接收到任何应用或基础结构消息,并且所述序列会话被放弃。
全文摘要
本发明监视依照用于web服务的可靠消息通信协议(RM-WS协议)建立的序列会话上在两个端点之间的消息的接收。所接收的消息可以是应用或基础结构消息(例如,依照RM-WS协议的确认消息)。此外,本发明定义了被称为非活动超时的时间段,它是可在序列会话上没有接收消息(不论是应用程序还是基础结构)的情况下经过的时间的上限。基于该非活动超时时间段,本发明计算用于发送依照RM-WS协议的幂等基础结构消息的时间段,以验证和维持连接活跃性。
文档编号H04L29/06GK1787497SQ20051012500
公开日2006年6月14日 申请日期2005年11月8日 优先权日2004年12月8日
发明者M·J·莫罗尼, R·D·希尔, R·T·林普瑞奇特, S·科恩, S·R·巴特雷斯, M·J·莱 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1