专利名称:用于异步请求的管理信道的制作方法
技术领域:
本发明涉及网络(web)应用。尤其是,本发明涉及一种用于管理来自网络应用的异步请求的装置、方法、以及计算机程序。。
背景技术:
由网页客户机执行的网络应用通常使用异步请求来访问网络(web)服务器的资源。异步请求被用来使得网络应用能够在不妨碍现有网页(webpage)的情况下访问该背景(background)中的资源。能够由网络应用执行的并行(concurrent)异步请求的数量受到网络浏览器的限 制。在超文本传输协议(HTTP)L I版本的规范中,该限制被设置为两个并行请求。用于实现(implement)异步请求的技术的ー个实例是Ajax (异步Java描述语言(JavaScript)+可扩展标记语言)。来自客户机的Ajax请求可以在来自服务器的背景中异步地检索(retrieve)数据,而不会影响现有的网页。该限制在采用“小配件(widget)” (小配件是能够被置于网页中的任意片段的动态内容)制作的网络应用的语境中会导致重要的性能影响和瓶颈。小配件能够使用浏览器提供的本地(native)接ロ(例如,Java描述语言中的ー种XMLHttpRequest对象)来取来异步请求上的内容。嵌入小配件中的网络应用不直接控制该小配件所执行的逻辑,并且尤其是异步请求是否已经被小配件所触发。由限制所导致的其他性能影响的例子为对浏览器所排队的请求的长响应时间;以及在网页被加载时请求数量溢出。该限制还导致不能设置请求的优先级别。而且,不能进行能够优化,因为由不同小配件(或同一小配件的不同实例)在(大致)相同时间所发送的对同一资源的两个或多个请求在其可能仅仅一次取回该资源时将会以与独立请求一祥的方式被处理。由限制所导致的性能影响的另ー个例子是网络应用难以在网络浏览器队列上进行控制。网络浏览器请求队列是按序的,这意味着对网络浏览器当前处理的请求的长响应时间会使得随后的请求将被网络浏览器列入队列直到对当前处理的请求的响应被收到为止,即使随后的请求潜在地比当前处理的请求能够更快地返回。美国专利申请公开号US2009/0144707A1披露了一种用于高效率实现对动态网络内容的java服务器页面请求的方法、系统和计算机程序产品。异步处理应用(utility)预定了一定数量的定制级别(custom class)以便实现请求的异步处理。因此,本领域需要解决上述问题。
发明内容
鉴于第一方面,本发明提供了一种用于数据处理系统的客户机装置,其中所述数据处理系统包括客户机和服务器,该装置包括接收组件,用于接收来自客户机应用的对对象的第一方法的呼叫,其中该第一方法包括到服务器的第一请求,并且其中该第一请求包括第一多个属性;拦截器组件,响应于接收组件接收到呼叫,用于包装该对象以便将被包装的呼叫提供给该被包装对象的第二方法,其中该第二方法包括到该服务器的第二请求;客户机编码器组件,响应于该拦截器组件包装该对象,用于将被包装的呼叫转换为消息,其中该消息包括所述第一多个属性;客户机信道(channel)管理器组件,响应于该客户机编码器组件转换所述请求,用于建立到所述服务器的信道;以及发送器组件,响应于所述客户机信道管理器建立所述信道,用于在所述信道上发送所述消息。优选的是,本发明提供了一种客户机装置,其中该客户机装置还包括所述接收组件还可操作用于在该信道上接收回复,其中该回复包括第二多个属性;回复解码器组件,响应于所述接收组件接收所述回复,用于解码所述回复,以便提供响应,其中该响应包括第二多个属性;所述拦截器组件响应于所述回复解码器组件解码所述回复还可操作用于调用响 应处理器;以及所述发送器组件响应于所述响应处理器被调用还可操作用于发送所述响应到客户机应用。优选的是,本发明提供了一种客户机装置,其中该客户机装置可在所述客户机应用中操作。优选的是,本发明提供了一种客户机装置,其中所述客户机装置可在网络浏览器中操作。鉴于第二方面,本发明提供了ー种可操作用于数据处理系统的服务器装置,其中该数据处理系统包括客户机和服务器,该装置包括服务器信道管理器组件,用于从客户机接收关于信道的消息,该消息包括第一多个属性;服务器解码器组件,响应于所述服务器信道管理器组件接收所述消息,用于解码该消息以便提供请求,其中所述请求包括第一多个属性;以及响应取出器组件,响应于服务器解码器组件提供用于取出响应的请求,用于发送所述请求到资源。优选的是,本发明提供了一种服务器装置,其中,所述服务器装置还包括所述响应取出器组件还可操作用于接收来自所述资源的响应,其中该响应包括第二多个属性;响应编码器组件,响应于所述响应取出器组件接收所述响应,用于对所述响应进行编码以便提供回复,其中所述回复包括第二多个属性;以及服务器信道管理器组件,响应于编码器组件提供回复,还可操作用于在该信道上发送该回复。鉴于第三方面,本发明提供了ー种可操作用于数据处理系统的客户机方法,其中所述数据处理系统包括客户机和服务器,该方法包括步骤接收来自客户机应用的对第一对象的第一方法的呼叫,其中该第一方法包括到服务器的第一请求,并且其中该第一请求包括第一多个属性;响应于接收到所述呼叫,包装该对象以便将被包装的呼叫提供给该被包装对象的第二方法,其中该第二方法包括到该服务器的第二请求;响应于包装该对象,将被包装的呼叫转换为消息,其中该消息包括所述第一多个属性;响应于转换所述请求,用于建立到所述服务器的信道;以及响应于建立所述信道,用于在所述信道上发送所述消息。优选的是,本发明提供了一种客户机方法,其中该客户机方法还包括步骤在所述信道上接收回复,其中该回复包括第二多个属性;响应于所接收所述回复,解码所述回复,以便提供响应,其中该响应包括第二多个属性;响应于解码所述回复,调用响应处理器;以及响应于所述响应处理器被调用,发送所述响应到客户机应用。优选的是,本发明提供了一种客户机方法,其中该客户机方法可在所述客户机应用中操作。优选的是,本发明提供了一种客户机方法,其中所述客户机方法可在网络浏览器中操作。鉴于第四方面,本发明提供了ー种可操作用于数据处理系统的服务器方法,其中该数据处理系统包括客户机和服务器,该方法包括步骤从客户机接收关于信道的消息,该消息包括第一多个属性;响应于接收所述消息,解码该消息以便提供请求,其中所述请求包括第一多个属性;以及响应于提供用于取出响应的请求,发送所述请求到资源。优选的是,本发明提供了一种服务器方法,其中,所述方法还包括步骤接收来自所述资源的响应,其中该响应包括第二多个属性;响应于接收所述响应,对所述响应进行编码以便提供回复,其中所述回复包括第二多个属性;以及响应于提供回复,在该信道上发送该回复。鉴于另ー个方面,本发明提供了一种存储在计算机可读介质上并可加载到数字计算机的内存的系统程序,包括软件代码部分,当所述程序在计算机上运行时,用于执行本发 明的步骤。有利的是,本发明对由嵌入了诸如小配件的其自身客户端逻辑的第三方扩展/小配件构成的网络应用的性能提供了显著的改进。 有利的是,本发明容许以ー种明晰的(transparent)方式通过客户机和服务器之间的网络应用維持的被管理信道将在页面上的不同的组件/小配件形成的所有异步请求改道发送(re-route)到呼叫者。本发明涵盖了客户机端和服务器端机构,以便创建、維持和管理以及使用客户机和服务器之间的这种信道,以便以明晰的方式路由(route)所述异步请求。所述信道能够经由“彗星(Comet)”连接永久地得以保持,或者经由ー些列顺序控制的Ajax请求而被虚拟地得以保持。还有利的是,这种机制对制作异步请求的组件隐藏使得相同的结果被传送,就像现有技术的本地Java描绘语言对象被用于发送所述Ajax请求一祥。因此,没必要对网络应用代码或任何包含在其中的第三方小配件进行改变。网络应用可以绕过(bypass)网络浏览器队列并通过永久信道立即发送请求到网络服务器。有利的是,该机制可用于任何包含第三方脚本(scripting)代码(例如,JavaScript代码)的客户机,不仅仅用于“图形化”小配件。例如,收集规格(metrics)和发送数据到远程服务器的小配件。本发明可概括地用于各种包含能够经由脚本代码执行逻辑以便触发异步请求的网络组件的应用。
现在将參照如下附图所图释的实施例仅仅通过举例方式来描述本发明图I是描绘根据现有技术的数据处理系统的方框图,并且其中可实现本发明的优先实施例;图2是描绘在现有技术中找到的网络应用的方块图;图3是根据本发明的优选实施例的描绘被执行来用干与服务器端网络应用的服务器装置进行交互的客户机装置的操作方法步骤的高级示例性示意性流程图;以及图4是描绘客户机装置与服务器装置的方块图,其中实现了本发明的优选实施例。
具体实施例方式图I是描绘根据现有技术的数据处理系统100的方块图,并且其中可实现本发明的优选实施例。数据处理系统100的例子是因特网。网络浏览器130可由用户136在数据处理系统100上操作,数据处理系统100包括工作站120、以及服务器150和152。工作站120以及服务器可通过网络114连接。网络114可包括有线网络110。通常,名称(name)服务器152也可连接到网络114。名称服务器152将统ー资源定位符(URL)翻译成英特网协议(IP)地址。用户136通过与可在工作站120操作的网络浏览器130进行交互而访问英特网。客户机端网络应用140也可在与可在服务器150上操作的服务器端应用170通讯的工作站120上操作。用户136可通过网络浏览器130而看见客户机端网络应用140。客户机端网络应用140还与网络浏览器130进行交互。网络浏览器130与可在服务器150上操作的网络服务器160进行通讯。网络服务器160与服务器端网络应用170进行交互。因此,客户机端网络应用140与服务器端网络应用170进行交互。
图2是描绘在现有技术中找到的网络应用的方块图200。客户机端网络应用140、240包括应用代码242、以及第三方小配件代码244。小配件244是图形用户接口元件,其提供用于用户136的交互点。应用代码242以及第三方小配件代码244包括JavaScript (JS)代码。为了与服务器端网络应用170、270进行交互,代码242、244使用具有对XmlHttpRequest (XHR)对象(例如,"sendO"、或"openO"方法)的方法呼叫的文档对象模型(DOM)应用编程接ロ(八卩1)246来发送请求到网络服务器160、260.八call from the code来自代码242、244的呼叫to sendO是发送请求236到网络服务器160、260的命令。如果存在比网络浏览器130,230当前所处理的一定数量的请求236多,该网络浏览器130、230将新请求236放置在排序队列235中。当从网络服务器160、260接收回较早请求236的响应238时,网络浏览器130、230发送请求236。排序队列235的限制产生了瓶颈和性能问题。队列235的顺序基于先来后到的原则(first served basis)。网络应用140、240对队列235没有任何控制,并且也没有接收关于队列235的内容的任何信息。接收到响应238时,其经由原始用于发送请求的XMLHttpRequest对象传回呼叫代码242、244。浏览器130、230和网络服务器160、260之间的业务(transaction)由XHR对象管理。XHR对象是本地对象,由用于以JavaScript发送异步JavaScript和XML(Ajax)请求到服务器的网络浏览器130,260提供。图3是根据本发明的优选实施例的描绘被执行来用干与服务器端网络应用170、470的服务器装置452进行交互的客户机装置450的操作方法步骤的高级示例性示意性流程图300,其应该与图3结合起来看。图4是描绘客户机装置450与服务器装置452的方块图400,其中实现了本发明的优选实施例。图3给出了逻辑流程图。因此,所图示的顺序和标记的步骤指出了本方法的ー个实施例。也可以想到与所图释的方法的一个或多个步骤或部分的功能、逻辑或效果等同的其他步骤和方法。此外,所采用的格式和符号被提供来解释该方法的逻辑步骤并且不能被理解为限制本方法的范围。该方法从步骤301开始。客户机端网络应用140、440包括应用代码442和第三方小配件代码444。在步骤305处,客户机装置450的拦截器组件455接收对XHR对象的呼叫以便发送从代码442、444请求到服务器端网络应用170、470。XHR对象呼叫包括属性(例如URL、报头、以及内容)。在步骤305处,在代码442、444对本地XHR对象的第一呼叫之前,拦截器组件455创建环绕XHR对象的包装(wrapper)。被包装的XHR对象具有与本地XHR对象相同的方法。包装本地XHR对象使得拦截器组件455能够拦截对本地XHR对象的方法的之一的任何呼ロH。All methods of the native本地XHR对象的所有方法都被包装以便记录由呼叫代码442、444所设置的请求属性。呼叫代码442、444呼叫该被包装的XHR对象,就像本地XHR对象正被呼叫一祥。当代买442、444呼叫本地XHR对象的方法之ー时,拦截器组件455拦截该呼叫并替代地呼叫被包装的XHR对象的方法之一。代码442、444不会了解到客户机装置450和服务器装置452用来改道发送所述请求的机制.在步骤310处,客户机装置450的拦截器组件455从代码442、444接收对本地XHR对象的呼叫以便发送请求到服务器端网络应用170、470。XHR对象呼叫包括属性(例如URL、报头、以及内容)。在步骤315处,当代码442、444呼叫本地XHR对象的方法之ー时,拦截器组件455调用客户机请求编码器组件430。术语“请求”指的是对XHR的方法之一的呼叫以便发送HTTP到网络服务器160并直接将网络服务器160响应加载回到所述呼叫应用代码。在步骤320处,客户机请求编码器组件430以ー种具体格式编码所述请求属性,使得请求属性能够在永久信道或半持久信道445上被发送。编码所述请求属性以ー种具体格式创建消息,使得该消息可以在信道445上被发送。该消息包括该请求的所有属性。在步骤325处,客户机信道管理器组件440建立到服务器中的服务器信道管理器组件465的信道445。该信道445可基于诸如Bayeux的现有协议。Bayeux是ー种用于主要在HTTP上以网络服务器之间的低等待时间(latency)传输异步消息的协议。An exampleof a Bayeux协议实施的ー个例子是CometD。信道445是单ー连接,多个请求或响应的信息以ー种具体格式在该单ー连接上被交換。在优选实施例中,该信道在请求被发送的第一时间被创建。对所有随后的请求而言,相同的信道被重复使用。在步骤330处,服务器信道管理器组件465接收所述消息。在步骤335处,服务器请求解码器组件460解码已经通过该信道445发送的消息中的请求属性。在步骤340处,响应取出器(fetcher)组件472基于被解码属性发送真实HTTP请求到服务器端网络应用470的局部(local)资源474或到外部资源480。在步骤345处,响应取出器组件472接收从局部资源474或外部资源480返回的响应。在步骤345处,响应编码器组件462以ー种具体格式将所述响应属性编码到回复中。在步骤355处,该回复通过服务器信道管理器组465在信道445上被发送到客户机信道管理器组件440。“资源”指的是能够使用HTTP请求被取出的任何东西。例如,资源可以是静态资源、或对代表性状态传输(Representational State Transfer (REST)) API的呼叫。在步骤360处,客户机信道管理器组件440通过信道445接收回复,在步骤365处,调用回复解码器组件435。在步骤370处,响应解码器组件435将该回复解码到响应中。在步骤380处,拦截器组件455调用关于呼叫代码442、444的响应处理器。响应处理器位于被包装的XHR对象中。该响应处理器以本地XHR对象具有的相同方式将响应提供到呼叫代码442、444,以便该方法对呼叫代码442、444是透明的。客户机请求编码器组件430为在信道445上发送的消息设置唯一消息标识代码(ID)0服务器装置452跟踪该消息ID并在回复中设置与该消息请求ID匹配的相关的回复ID,使得客户机装置450可以将在信道上发送的哪ー个回复对应哪ー个消息相互关联起来。在方法在步骤399处结束。在优选实施例中,拦截器组件455通过动态地将该对象的特性/方法覆盖(override)在页面负载(load)上来包装本地XHR对象。该方法和装置也适于概括Ajax请求发送的方式的脚本语言(例如JS)库,因为XHR对象总是被用作发送异步请求的基础(foundation)。 Bayeux技术聚焦于浏览器和服务器之间协议所发送的应用具体数据的概念,而本发明的方法和装置设计通常的异步请求。客户机端代码(例如,客户机应用、小配件442、444)明显使用Bayeux协议,而本发明描述了ー种引导(channel)代码442、444的请求的透明方式。不过,Bayeux协议能够用于本发明底层结构的实现。在优选实施例中,客户机装置450在客户机网络应用440中被实施为JavaScript代码。在另ー个实施例中,客户机装置450被实现为网络浏览器130、230的插件程序代码。在另ー个实施例中,客户机装置450被实现为网络浏览器130、230的核心源代码的修改形式。在另ー个实施例中,该方法被应用到其他本地对象的拦截,这触发客户机请求到服务器。来自JavaScript的例子包括加载脚本文件的“script”、加载页面的“iframe”、加载图像的“img”、以及加载来自远程服务器的样式表(stylesheet)的“link”。本来领域普通技术人员将理解到,尽管JavaScript已经被用来阐述本发明的优选实施例,但是该装置和方法也可以使用到其他用于客户机-服务器交互的脚本语言。本来领域普通技术人员将理解到,优选实施例的方法的全部或部分可适当和有用地嵌在包含被布置成用来执行本发明的步骤的逻辑元件的一个逻辑装置或多个逻辑装置中,以及这种逻辑元件可以包括硬件组件、固件组件或其组合。将理解到,上述方法和结构也可以部分或全部适当地在运行在一个或多个处理器(图中未示出)上运行的软件中执行,并且该软件可以以承载在任何适当数据载体(在图中也没有示出)上的一种或多种计算机程序元件的形式提供,所述数据载体诸如磁性或光盘存储器件等。为了避免疑问,说明书和权利要求书通篇在此使用的术语“包括”不应被理解为“仅仅包括”。还是为了避免疑问,如说明书和权利要求书通篇在此使用的,将ー个位置拷贝到另ー个位置将被理解为将ー个位置的数据内容拷贝到另ー个位置。
权利要求
1.一种用于数据处理系统的客户机装置,其中所述数据处理系统包括客户机和服务器,该装置包括 接收组件,用于接收来自客户机应用的对对象的第一方法的呼叫,其中该第一方法包括到服务器的第一请求,并且其中该第一请求包括第一多个属性; 拦截器组件,响应于接收组件接收到呼叫,用于包装该对象以便将被包装的呼叫提供给该被包装对象的第二方法,其中该第二方法包括到该服务器的第二请求; 客户机编码器组件,响应于该拦截器组件包装该对象,用于将被包装的呼叫转换为消息,其中该消息包括所述第一多个属性; 客户机信道管理器组件,响应于该客户机编码器组件转换所述请求,用于建立到所述服务器的信道;以及 发送器组件,响应于所述客户机信道管理器建立所述信道,用于在所述信道上发送所述消息。
2.如权利要求I所述的客户机装置,其中该客户机装置还包括 所述接收组件还可操作用于在该信道上接收回复,其中该回复包括第二多个属性;回复解码器组件,响应于所述接收组件接收所述回复,用于解码所述回复,以便提供响应,其中该响应包括第二多个属性; 所述拦截器组件响应于所述回复解码器组件解码所述回复还可操作用于调用响应处理器;以及 所述发送器组件响应于所述响应处理器被调用还可操作用于发送所述响应到客户机应用。
3.如前述任意一个权利要求所述的客户机装置,其中该客户机装置可在所述客户机应用中操作。
4.如权利要求I或2所述的客户机装置,其中所述客户机装置可在网络浏览器中操作。
5.ー种可操作用于数据处理系统的服务器装置,其中该数据处理系统包括客户机和服务器,该装置包括 服务器信道管理器组件,用于从客户机接收关于信道的消息,该消息包括第一多个属性; 服务器解码器组件,响应于所述服务器信道管理器组件接收所述消息,用于解码该消息以便提供请求,其中所述请求包括第一多个属性;以及 响应取出器组件,响应于服务器解码器组件提供用于取出响应的请求,用于发送所述请求到资源。
6.如权利要求5所述的服务器装置,其中,所述服务器装置还包括 所述响应取出器组件还可操作用于接收来自所述资源的响应,其中该响应包括第二多个属性; 响应编码器组件,响应于所述响应取出器组件接收所述响应,用于对所述响应进行编码以便提供回复,其中所述回复包括第二多个属性;以及 服务器信道管理器组件,响应于编码器组件提供回复,还可操作用于在该信道上发送该回复。
7.ー种可操作用于数据处理系统的客户机方法,其中所述数据处理系统包括客户机和服务器,该方法包括步骤 接收来自客户机应用的对第一对象的第一方法的呼叫,其中该第一方法包括到服务器的第一请求,并且其中该第一请求包括第一多个属性; 响应于接收到所述呼叫,包装该对象以便将被包装的呼叫提供给该被包装对象的第二方法,其中该第二方法包括到该服务器的第二请求; 响应于包装该对象,将被包装的呼叫转换为消息,其中该消息包括所述第一多个属性; 响应于转换所述请求,用于建立到所述服务器的信道;以及 响应于建立所述信道,用于在所述信道上发送所述消息。
8.如权利要求7所述的客户机方法,其中该客户机方法还包括步骤 在所述信道上接收回复,其中该回复包括第二多个属性; 响应于所接收所述回复,解码所述回复,以便提供响应,其中该响应包括第二多个属性; 响应于解码所述回复,调用响应处理器;以及 响应于所述响应处理器被调用,发送所述响应到客户机应用。
9.如权利要求7或8所述的客户机方法,其中该客户机方法可在所述客户机应用中操作。
10.如权利要求7或8所述的客户机方法,其中所述客户机方法可在网络浏览器中操作。
11.ー种可操作用于数据处理系统的服务器方法,其中该数据处理系统包括客户机和服务器,该方法包括步骤 从客户机接收关于信道的消息,该消息包括第一多个属性; 响应于接收所述消息,解码该消息以便提供请求,其中所述请求包括第一多个属性;以及 响应于提供用于取出响应的请求,发送所述请求到资源。
12.如权利要求11所述的服务器方法,其中,所述方法还包括步骤 接收来自所述资源的响应,其中该响应包括第二多个属性; 响应于接收所述响应,对所述响应进行编码以便提供回复,其中所述回复包括第二多个属性;以及 响应于提供回复,在该信道上发送该回复。
13.一种存储在计算机可读介质上并可加载到数字计算机的内存的系统程序,包括软件代码部分,当所述程序在计算机上运行时,用于执行权利要求7-12任意一个所述的方法。
全文摘要
用于数据处理系统的装置和方法,其中所述数据处理系统包括客户机和服务器,该装置包括接收组件,用于接收来自客户机应用的对对象的第一方法的呼叫以及在该信道上接收回复;拦截器组件,用于包装该对象以便将被包装的呼叫提供给该被包装对象的第二方法以及调用响应处理器;客户机编码器组件,用于将被包装的呼叫转换为消息;客户机信道管理器组件,用于建立到所述服务器的信道;发送器组件,在所述信道上发送所述消息;回复解码器组件,用于解码所述回复,以便提供响应;以及所述发送器组件还用于发送所述响应到客户机应用。
文档编号G06F9/46GK102687116SQ201080057173
公开日2012年9月19日 申请日期2010年11月23日 优先权日2009年12月17日
发明者V.伯克哈德 申请人:国际商业机器公司