首页> 中国专利> 基于优先级的消息发送队列重新排序

基于优先级的消息发送队列重新排序

摘要

用于通信串行化数据的方法和系统提供了一种用于响应优先级、对数据进行排序的机制。在实施例中,发送数据的服务器使用优先级对在消息发送队列中数据进行排序,用于发送数据到请求设备。该服务器可以包括网关和第二设备(与网关通信的无线设备)。该无线设备可以发送与数据请求有关的优先级指示以便于排序。

著录项

  • 公开/公告号CN1691632A

    专利类型发明专利

  • 公开/公告日2005-11-02

    原文格式PDF

  • 申请/专利权人 捷讯研究有限公司;

    申请/专利号CN200510071731.6

  • 发明设计人 大卫·塔普什卡;迈克尔·诺尔斯;

    申请日2005-04-08

  • 分类号H04L12/54;

  • 代理机构中科专利商标代理有限责任公司;

  • 代理人王玮

  • 地址 加拿大安大略省沃特卢市

  • 入库时间 2023-12-17 16:38:09

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-06-23

    授权

    授权

  • 2005-12-28

    实质审查的生效

    实质审查的生效

  • 2005-11-02

    公开

    公开

说明书

技术领域

本发明涉及一种用于根据要发送消息的优先级来重新排序消息发送队列的方法和系统。

背景技术

在无线通信网络中提供语音通信、数据通信或这两者的诸如无线通信设备等移动设备在现代社会日益普遍。这样的设备也可以提供附加的个人数字助理(PDA)功能,例如日历、警报、联系表、计算器等等。这些设备的一个共同特征是万维网浏览器装置,由此,用户可以浏览那些诸如通过内联网或公众因特网可用的网页。

在浏览过程期间,浏览器获得网页数据以在该设备的显示器上再现该网页。该浏览器为了从网页服务器请求数据,使用诸如超文本传输协议(HTTP)等协议来定制(formulate)对数据的请求。在无线设备中,典型地,通过中间服务器,在该无线设备和该网页服务器之间对这些请求和响应进行通信,该中间服务器提供网关服务,用于桥接在无线网络和网页服务器的网络之间的通信。

网关接收来自无线设备的请求,并把它们转发给针对服务的网络服务器。由网关接收来自网络服务器的响应,并进行排队以便将其通信到无线设备。

为了获得单个网页的数据,浏览器经常需要定制超过一个的请求。有时,需要在对先前请求的响应完全地被该无线设备处理之前,接收并处理对第二请求的响应。当在对先前请求的响应的通信可能未完成或正在进行中的同时,对服务器进行这样的第二HTTP请求时,网关直到对第一请求的整个响应完成为止,才发送在其发送队列中所具有的任何数据。结果,该浏览器在接收对第二请求的响应时受到推迟,直到其接收到对先前请求的整个响应为止。

作为一个例子,无线设备的浏览器在加载网页的同时,作为响应,可能会遇到JavaScriptTM源或级联样式表(css)参考(reference)。这样的参考需要即时的动作。需要该浏览器通过第二请求提取用于参考的数据。还需要其暂停对其可能具有的任意响应数据的页面的任何进一步再现,直到完成了新的参考为止。然而,当网关接收到对第二请求的响应时,该网关的发送队列可以包含对第一请求的响应的剩余部分。发送队列按照先进先出(FIFO)规则操作。这样,网关将对第二请求的响应放置在其队列的末尾,以便在其完成对第一响应的发送之后,对其进行发送。尽管在队列串行化响应数据中的这样一种FIFO操作方式经常是所希望的,但是显然,会存在可能会需要对通信进行不同排序的情况。当需要即时动作的第二响应本身包含需要即时动作的参考时,经历的延迟可能进一步成为复合的。结果,可能影响到令用户满意的经历。当在等待附加数据的同时显示不完整的屏幕时,网页装载时间表现为受到延长。

WO03085934A1公开了一种响应由于HTML编码对象中的附加对象的存在而发起的进一步的客户端设备请求,从服务器将附加超文本链接标示语言(HTML)编码对象传送到客户端设备的方法,所述HTML编码对象由服务器响应第一请求提供给客户端设备。该服务器确定在来自客户的进一步请求中的附加HTML编码对象的优先级。该服务器然后依据其各个优先级,延迟或转发各附加对象。在WO0308934A1中所公开的方法在传送控制协议(TCP)级上进行操作,由此,并未排序,即对已经设置在服务器的消息发送队列中的数据重新排序。

因此,需要对一个或多个这样的缺陷的解决方案。

发明内容

因此,需要一种方法和系统,通过其,第一设备(例如无线手持设备或无线站)可以发送请求到第二设备(例如无线网关服务器或其它设备),以使响应数据比仍然正在从第二设备传送到第一设备的先前请求的响应数据具有更高优先级。此外,需要一种第二设备(例如服务器)来相应地处理已设置优先级化的请求,将更高优先级响应数据插入到第二设备正在传输给第一设备的内容流中,预占(pre-empt)已经排队的任意先前较低优先级的响应数据。

因此,在一个主要方案中,本发明提出了一种在服务器中对消息发送队列排序的方法,该服务器响应多个来自无线通信设备的请求,发送相应的响应数据到无线通信设备,该方法包括以下步骤:将包含对第一请求响应的数据设置在发送队列中,并将所述发送队列中的该数据串行传送到无线设备;接收包含对第二请求响应的数据,所述第二请求被确定为具有比第一请求的优先级高的相应相对优先级;并且将在发送队列中包括对第二请求的响应的一些数据设置在也在此队列中包括对第一请求的响应的至少一些数据之前,并且将所述发送队列中的数据串行地传送到无线设备。

优选地,为适应多个优先级的需要,需要一个多级优先级机制,通过其,在一个响应队列中,较高优先级响应预占任何较低优先级响应。

按照本发明的实施例,一个发送请求的HTTP报头适合于包括一个请求的相对优先级(例如x-rim-priority-request“优先级号”)的优先级指示。该优先级指示指导网关对针对所述请求的响应数据进行排序,从而针对请求的响应数据在可能在网关的发送队列中的较低优先级响应数据之前到达请求设备。

包括一个或多个方法方案和计算机程序产品的这些和其他方案对本领域的技术人员而言是显而易见的。

附图说明

为了更好地理解本发明,通过附图中的示例来说明本发明的具体

实施方式,其中:

图1是按照本发明的实施例的系统结构的示意图;

图2是按照本发明的实施例的图1的优选无线通信设备的详细框图;

图3A和图3B是按照本发明的实施例的移动设备的操作流程图,说明了数据请求优先级的方法;以及

图4是按照本发明的实施例的无线网关服务器的示例图。

具体实施方式

图1是按照本发明实施例的系统100的结构的示意图。系统100包括无线通信设备102,与由基站表示的无线网络104进行无线通信连接。无线网络104可以遵循能够支持包括蜂窝、广域网、GSM、GPRS、CDMA、iDENTM、MobitexTM等在内的数据通信的任意无线网络技术和协议。

无线通信设备102适合于网络浏览,并且能够发送对网页数据的HTTP请求,而且按照由网络104所实现的一种或多种协议,通过无线网络104来接收包括响应数据的针对其的响应。此外,无线网络104与提供数据通信服务给无线设备102的无线网关服务器108进行通信连接。在本实施例中,无线网关服务器108配置在本领域内公知的防火墙106之后。尽管没有示出,但是中间的无线网关服务器108和无线网络104可以是公用中继网或公用网络,例如因特网。无线网关服务器108可以包括但不局限于一个BlackBerryTM企业服务器或无线接入协议(WAP)网关。

通过无线网关服务器108,无线设备102可以通过诸如因特网110或内联网112等网络与诸如网络服务器(web server)114和116等内容服务器进行通信连接。

在本发明的示意性实施例中,无线设备102通过防火墙106,向无线网关服务器108发送网络服务器114或116对服务的HTTP请求(即,GET)。该无线传输网关被配置为提供对内联网116和公众因特网114的访问(即,HTTP连接),优选为安全的。该无线网关服务器108执行必要的地址和协议转换,以便在无线和IP网络之间对数据进行路由。可选地且优选地,对于诸如设备102等手持无线设备,无线网关可以转换并处理在诸如网络服务器114、116等内容服务器和无线设备102上驻留的应用程序之间所传递的数据。网关可以执行客户端过滤和其它数据操作,以高效且适当的格式将内容传递到手机。

无线网关服务器108在适当网络上,将通信从无线设备102(例如GET)路由到适当网络服务器。一旦将包括响应数据(诸如网页的一部分,例如,部分超文本链接标示语言(HTML)文件)的响应返回到网关108,则该网关针对无线网络104的适当无线协议,准备响应数据。典型地,该网关108按照无线网络协议的分组形式,将响应数据设置在发送队列中,以便通过防火墙和网络104,将其通信到无线设备102。

按照本发明的实施例,无线设备102适合于将用于指示由网关进行的优先级处理的优先级指示包括在HTTP请求中,至少针对一些请求。此外,网关适合于按照网关接收到的请求的优先级,对响应数据的返回进行优先级化。

图2是详细示出了包括本申请的设备和方法的优选实施例的移动电子设备200的无线通信设备104的实施例的框图。优选地,移动电子设备200是至少具有语音和数据通信能力的双向无线电子通信设备。优选地,移动电子设备200具有在因特网上与其它计算机系统通信的能力。依靠所提供的特定功能,该无线设备可能涉及数据消息设备、双向寻呼机、无线电子邮件设备、拥有数据消息传送能力的蜂窝电话、无线因特网设备或数据通信设备等。

在移动电子设备200能够进行双向通信的情况下,所述设备200包括通信天线子系统211(包括接收机212和发送机214)、以及相关组件,例如,优选地,一个或多个嵌入式或内部天线元件216和218、本地振荡(LOs)213和诸如数字信号处理器(DSP)220等处理模块。如通信领域的技术人员显而易见的,通信子系统211的具体设计取决于设备200想要在其上运行的无线通信网络的协议。

优选地,移动电子设备200包括微处理器238,用于控制设备的整个操作。通信功能,包括至少数据和优选的话音通信,通过通信子系统211得以进行。微处理器238也与诸如显示器222、闪存224、随机存储器(RAM)226、辅助输入/输出(I/O)子系统228、串行接口230、键盘232、扬声器234、麦克风236、短距离通信子系统240和任何其它通常如242指定的任意其他设备子系统等另外的设备子系统进行交互。

闪存224可以提供一个或多个应用程序的指令和数据的本地存储,用于适配和配置微处理器以提供诸如PDA功能、网络浏览器、游戏等各种特征。可以加载到移动站202上的优选应用程序可以是具有组织和管理与用户有关的数据项目能力的个人信息管理器(PIM)应用程序,例如但不局限于:即时消息(IM)、电子邮件、日历事件、语音邮件、约会和任务项目。因此,本实施例的闪存224存储了程序250(例如网页浏览器,PIM)、设备状态信息252、地址簿254、其它PIM数据256、和其它数据和/或指令258。

图3A和3B是按照本发明的实施例的移动设备(例如设备102)的操作流程图,说明了将优先级和数据请求包括在一起的方法。操作300和310表示用于加载网页的浏览器应用程序的实施例的典型步骤。本领域普通技术人员将会意识到,可以按照类似的方式来适配其他应用程序请求数据。

在加载页面开始时,启动操作300。在步骤302,设置初始优先级。该级别可以与数据请求一起发送,例如作为HTTP报头的一部分,正如本领域技术人员能够理解的。按照本发明的实施例,将优先级包含在对于其响应需要网关进行优先级处理的请求中,但是否则,则从其他请求中忽略该优先级。当优先级被忽略时,由网关对相应的响应给予一般的处理(即,相应的低优先级处理),并且将其设置在FIFO发送队列的尾端而不是首端。

在步骤304,将对网页数据的第一请求发布到网关以请求响应,然后在步骤306,处理对请求的响应的过程与当前的优先级一起开始。然后,操作300在308结束。

操作310表示处理对请求的响应的方法,所述方法可以按照各种已知的技术来实施,例如,面向对象编程和用于对处理器进行编程以处理响应数据的可重新编码技术。在步骤312,处理开始以便对响应数据进行操作,例如,在设备的显示器上再现该响应。本领域的普通技术人员可以理解,典型地,接收该响应数据,作为一个或多个分组的数据流,并且典型地,对该响应部分地进行串行处理。因此,一旦接收到该数据,则对其进行处理,并确定(步骤312)整个响应的处理是否完成。如果没有完成,则通过“否”分支到步骤314,针对需要来自诸如网络服务器等内容源的数据的进一步请求的参考,对该响应进行评估。如果未找到该参考(reference),则可以对部分响应进行处理,例如,在循环到步骤312之前,在设备的显示器上再现部分数据(步骤315)。

在与处理HTML有关的本实施例中,可能会遇到各种类型的参考,这需要或可以借助于对由该参考所识别的事物的即时请求。如前面所述,css和JavaScriptTM都是这种参考的示例。然而,本领域普通技术人员可以理解,可以包括定义了页面内的其他嵌入媒体的参考。当确定是否再现由HTML参考所识别的事物时;以及当该确定改变了处理HTML的其余部分要采用的路径时,这里所公开的实施例是有用的。例如,如果遇到HTML页面内的对象标记,则需要确定该设备是否可以再现该项目。在进行该确定之前,可能需要提取该数据。

对象标记可以参考多种媒体,诸如Shockwave-flash、可缩放矢量图形(SVG)、图像和其它形式的媒体。现在,典型地,再现代理为该对象预先分配显示空间,并再现该页面的附加部分,如果不能够处理所提取的对象,则返回来调整再现的内容。然而,再现代理也可以提取对象并等待其,然后一旦接收到响应,则继续处理。

如果在步骤314找到了参考,则进一步确认是否要立即采取对该参考的行动(步骤316)。如果要立即行动,则中止对突出请求的响应的处理(步骤322)。在步骤324,Get请求以增加了一级的优先级发送。处理该响应的进程开始,并且当前级别加1被传递以启动该进程。然后,当前进程(例如操作310的当前示例)等待针对较高优先级参考的响应数据的处理(步骤326)。一旦由步骤326启动的其它进程响应示例(例如操作310的新示例)完成,则当前进程恢复操作,启动对先前响应的处理(步骤328),如果有的话,循环到步骤312,用于进一步确认当前响应的更多响应数据是否需要处理。

如果在步骤316,确认当前响应的更多参考不需要立即处理,则通过“否”分支到步骤318,发送对新参考所识别的数据的请求,而没有优先级和启动来处理新参考的响应的进程。然后,在步骤312,继续当前响应的处理。

如果在步骤312,没有更多的响应数据需要处理,则操作310在步骤330结束。

参考以下针对MainDocument.htm定义的示例网页的伪代码块来考虑操作300和310:

MainDocument.htm

----------------------

<html>

这是文本

<script                               language=″JavaScript″src-″javascripTest.js″></script>

脚本之后的文本

</html>

操作300开始以加载页面MainDocument.htm。可以设置初始优先级(例如0),并且在步骤304,针对MainDocument.htm,将GET发布到作为该页面的主机的网络服务器。在步骤306,启动用于处理对请求的响应进程(即,操作310)。提供当前优先级以启动这些操作的优先级。

响应包含MainDocument.htm的接收到的数据分组,操作310处理该数据。在步骤314,确定参考JavaScriptTest.js,并且在步骤316,将其评估为对立即动作的参考。中止响应数据的处理,并且发送针对该参考的GET(步骤322到324)。该GET包括在请求的报头部分中以1(诸如1)递增的初始优先级。该优先级可以由诸如“x-rim-request-priority”等参考识别。在步骤326处,当前的处理等待,直到操作310的另一示例完成对JavaScriptTest.js参考的响应的处理为止。提供初始优先级加1以启动其它进程。

下面的工作流程交换表示针对上述网页、在移动设备102和网关108之间的交换:

--->GET MainDocument.htm

<---MainDocument.htm的第一分组

--->Get JavaScriptTest.js(其中,x-rim-request-priority=1)

<---JavaScriptTest.js的第一分组

<---JavaScriptTest.js的最后一个分组

<---MainDocument.htm的最后一个分组

参考下面的针对MainDocument.htm,Script1.js和Script2.js定义的示例网页的的伪代码块来参考操作300和310:

Script1.js

--------------------

document.writeln(″<scriptsrc=\″script2.js\″language=\″JavaScript\″>″);

--------------------

Script2.js

--------------------

document.writeln(″Output of script2″);

 --------------------

MainDocument.htm

<html>

<script                     src=″script1.js″language=″JavaScript″></script>

Scripts之后

</html>

--------------------

在再现MainDocument.htm期间,设备102必须首先提取″Script1.js″(优先级1)并执行其;但是在执行″Script1.js″时。其还必须提取″Script2.js″(优先级1)。因此,针对Script1.js的操作310对拥有优先级2的Script2.js发布GET,并且在该优先级处,启动操作310的另一示例以处理该响应。下面的工作流程交换表示针对上述第二网页的、移动设备102和网关108之间的消息数据流:

--->GET MainDocument.htm

<---MainDocument.htm的第一分组

--->Get Script1.js(其中,x-rim-request-priority=1)

<---Script1.js的第一分组

--->Get Script2.js(其中,x-rim-request-priority=2)

<---Script2.js的第一分组

<---Script2.js的最后一个分组

<---Script1.js的最后一个分组

<---MainDocument.htm的最后一个分组

图4示出了按照本发明的一个实施例的无线传输网关服务器108。网关服务器108包括消息接收队列404和发送队列410,用于与多个诸如设备102等无线设备进行通信。典型地,存在接收机和发送队列示例,用于将每一个连接到与网关108正在通信的无线设备。典型地,各个无线设备通过单个连接与网关进行通信。因此,所有通信都按照现有技术,以FIFO的方式串行化。

网关108还包括队列408和414,用于与其它连接到网关108的其他设备通信,所述其他设备诸如为网络服务器114和116。网关108还包括Get处理器406,用于来自无线设备的GET请求,针对优先级对报头进行评估;以及Get响应处理器412,用于处理响应,响应接收到的各个优先级,对各个队列410中的数据进行重新排序。

尽管没有示出,但是本领域技术人员可以理解,还存在:无线网关服务器108的组件,用于保持无线设备和网关之间的连接;以及转换组件,用于按照各种网络协议进行通信,例如,将以无线协议接收到的数据传递到处于有线协议的服务器中,反之亦然。另外,没有示出的组件还包括:用于路由在针对其网关提供其服务的特定设备之间的通信的组件。

在操作时,网关108接收针对数据的GET请求,并且Get处理器406针对优先级,评估报头部分,通过发送给适当网络服务器,来传递该请求。由Get响应处理器412根据接收到的该请求优先级,对针对该请求接收到的响应进行处理。将对没有优先级的请求的响应的数据分组设置在相应FIFO发送队列的尾端,以便设备发起该请求,从而按照FIFO规则来发送队列中存在的数据。将针对拥有较高优先级的请求的数据分组设置在在相应队列的首端,以便设备发起该请求,较高优先级数据设置在较低优先级数据的前面,从而按照“后进先出”LIFO规则来发送队列中的新数据。

尽管这里参考按照诸如HTTP的请求/响应协议来导航因特网的网络浏览器应用,但是,例如,本发明也可以用于具有网页类接口或除了HTTP之外的其他通信协议的其它应用中。

可以针对各种通信协议来进行对队列进行重新排序的方式。可以添加在报头中包括优先级指示的一个可选方案,或者在流的消息体部分中包括针对优先级的字节,例如在分组中。

当发送队列中存在大量数据并且在队列和接收设备间存在较慢的带宽通信时,按照本发明特征的优点将得到更好地实现。需要克服的典型的搜索FIFO发送队列的缺点在于:该发送队列太大,从而将花费大量时间来清空。因此,在更快的通信网络中,发送队列不可以具有太多延时。

本领域普通技术人员能够意识到,对于每个请求,优先级不一定必须增加1。如果遇到有2个项目并且其接收次序并不重要,则可以发送具有相同优先级的两个相应请求,然后,将网关接收到的第一响应首先设置在队列中。

考虑到要确保来自设备的请求不会超时。尽管没有示出,但是如果在预定的时间内没有收到对请求的响应,则通常是连接已超时。如果请求被搁置太久而没有分组被发送(例如在设备上经过两分钟的等待时间之后),则该连接将超时。因此,需要周期性地预占队列排序,并发送来自己经“过时”的队列(即,以较高优先级响应延迟的)中的响应的信息。

本申请的上述实施例仅是说明性的。本领域内技术人员可以对特定实施例进行改变、修改和更改,而不超出本发明的范围。在所附权利要求中所述的本发明应该覆盖和涵盖技术中的所有适当变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号