选择性地管理计算设备之间的数据传送转让专利

申请号 : CN200480015106.3

文献号 : CN1799243B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 帕万·拜亚普

申请人 : SAP股份公司

摘要 :

在本发明中,数据分布设备可以有助于选择性的管理计算设备之间的数据传送,该数据分布设备接收包含数据获取设备的预订请求的消息,确定该预订请求的属性,根据数据获取设备当前的状态和预订请求的属性在用于提供响应数据的数据拉取服务和数据推送服务之间进行选择,并发送关于所选择的服务的消息。

权利要求 :

1.一种在数据分布设备上执行的方法,所述方法包括:接收包括数据获取设备的预订请求的消息;

确定该预订请求的属性;

根据数据分布设备在接收到该预订请求时的状态和该预订请求的属性,在用于由数据分布设备执行以提供对于该预订请求的数据响应的数据拉取服务和数据推送服务之间进行选择;以及发送关于所选择的服务的消息,

其中,对于数据推送服务,数据分布设备维持与数据获取设备的持续连接并向数据获取设备发送所选择的服务的消息,而不等待来自数据获取设备的请求,而对于数据拉取服务,数据分布设备在发送所选择的服务的消息之前等待数据获取设备的请求。

2.如权利要求1所述的方法,其中,数据分布设备的状态取决于在数据分布设备处可用的持续连接的数目。

3.如权利要求1所述的方法,其中,预订请求的属性包括响应所述预订请求的数据的属性。

4.如权利要求3所述的方法,其中,响应所述预订请求的数据的属性包括所述数据的服务质量、估计的该数据的可用频率和估计的该数据的量。

5.如权利要求1所述的方法,还包括:如果所选择的服务包括数据拉取服务,则确定刷新间隔;以及在关于所选择的服务的消息中插入所述刷新间隔。

6.如权利要求5所述的方法,其中,确定刷新间隔包括分析预期在数据分布设备处响应数据变得可用的频率、预期在数据分布设备处变得可用的响应数据的量以及建立和中断连接的开销的量。

7.如权利要求5所述的方法,还包括:确定新数据是否可用;

如果新数据可用,确定该数据是否是响应所述预订请求的;以及如果该数据是响应预订请求的,确定第二刷新间隔。

8.如权利要求7所述的方法,还包括:确定是否接收到了请求新数据的消息;以及如果接收到了该消息,则发送包括响应的新数据和第二刷新间隔的消息。

9.如权利要求1所述的方法,还包括:如果所选择的服务包括数据推送服务,确定新数据是否可用;

如果新数据可用,确定该数据是否是响应所述预订请求的;以及如果该数据是响应预订请求的,发送包括该数据的消息。

10.如权利要求1所述的方法,还包括:跟踪从上一次接收响应的新数据之后的时间量;以及如果预定的时间量已经过期,则发送包含断开通知的消息。

11.如权利要求1所述的方法,还包括:确定是否接收到了指示所选择的服务应该被停止的消息;以及如果接收到了服务停止消息,则释放用于该服务的资源。

12.如权利要求1所述的方法,还包括:发送包括确认请求的消息;以及

在对数据拉取服务和数据推送服务进行选择之前,确定是否接收到了对所述确认请求的响应。

13.如权利要求12所述的方法,还包括如果没有接收到对确认请求的响应,则判定使用数据拉取服务。

14.一种选择性地管理设备之间的数据传送的系统,包括:数据分布设备,该数据分布设备包括:用于接收包括数据获取设备的预订请求的消息的装置;

用于确定预订请求的属性的装置;

用于选择服务的装置,该装置用于根据数据分布设备在接收到该预订请求时的状态和该预订请求的属性,在用于由数据分布设备执行以提供对于该预订请求的数据响应的数据拉取服务和数据推送服务之间进行选择;以及用于生成关于所选择的服务的消息的装置,其中,对于数据推送服务,数据分布设备维持与数据获取设备的持续连接并向数据获取设备发送所选择的服务的消息,而不等待来自数据获取设备的请求,而对于数据拉取服务,数据分布设备在发送所选择的服务的消息之前等待数据获取设备的请求。

15.如权利要求14所述的系统,其中,所述数据分布设备的状态取决于在数据分布设备处可用的持续连接的数目。

16.如权利要求14所述的系统,还包括:用于确定刷新间隔的装置,用于当所选择的服务包括数据拉取服务时,确定刷新间隔;以及用于在关于所选择的服务的消息中插入该刷新间隔的装置。

17.如权利要求16所述的系统,还包括:用于确定新数据是否可用的装置;

用于确定该数据是否是响应于所述预订请求的装置,该装置用于当新数据可用时,确定该数据是否是响应于所述预订请求;以及用于确定第二刷新间隔的装置,该装置用于当该数据是响应于所述预订请求时,确定第二刷新间隔。

18.如权利要求17所述的系统,还包括:用于确定是否接收到了请求数据的消息的装置;以及用于生成包含响应的新数据和第二刷新间隔的消息的装置,该装置用于当接收到了该消息时,生成包含响应的新数据和第二刷新间隔的消息。

19.如权利要求14所述的系统,还包括:用于确定新数据是否可用的装置,该装置用于当所选择的服务包括数据推送服务时,确定新数据是否可用;

用于确定该数据是否是响应于所述预订请求的装置,该装置用于当新数据可用时,确定该数据是否是响应于所述预订请求;以及用于生成包含该数据的消息的装置,该装置用于当该数据是响应于所述预订请求时,生成包含该数据的消息。

20.如权利要求14所述的系统,其中,所述数据分布设备包括服务器。

21.如权利要求14所述的系统,还包括:用于生成包括确认请求的消息的装置;以及用于确定是否接收到了对所述确认请求的响应的装置,该装置用于在对数据拉取服务和数据推送服务进行选择之前,确定是否接收到了对所述确认请求的响应。

22.如权利要求21所述的系统,还包括:用于判定使用数据拉取服务的装置,该装置用于当没有接收到对所述确认请求的响应时,判定使用数据拉取服务。

23.如权利要求14所述的系统,还包括:数据获取设备,该数据获取设备包括:用于确定是否有进程期望数据的装置,用于向数据分布设备发送包括预订请求的消息的装置,该装置用于当期望数据时向数据分布设备发送包括预订请求的消息,用于确定是否接收到了数据分布设备确认请求的装置,用于发送确认响应的装置,该装置用于当接收到了数据分布设备确认请求时发送确认响应,用于确定是否接收到消息的装置,该装置用于在发送确认响应之后确定是否接收到了包括关于所选择的用于提供数据的服务的信息的消息,用于确定所选择的服务是数据推送服务还是数据拉取服务的装置,其中,如果所选择的服务是数据拉取服务,则所述数据获取设备包括:用于确定第一刷新间隔是否过期的装置;

用于发送请求新数据的消息的装置,该装置用于当所述第一刷新间隔已经过期时,发送请求新数据的消息;

用于确定是否接收到了包括新数据和第二刷新间隔的消息的装置;

用于利用该新数据更新现有数据的装置;以及用于利用所述第二刷新间隔替换所述第一刷新间隔的装置,其中,如果所选择的服务是数据推送服务,则所述数据获取设备还包括:用于建立持续连接的装置;

用于确定是否接收到了包括新数据的消息的装置;以及用于利用新数据更新现有数据的装置,用于确定是否接收到了包括断开通知的消息的装置,用于确定断开是否可接受的装置,该装置用于当接收到了断开通知时,确定断开是否可接受,用于发送指示不许可断开的消息的装置,该装置用于当断开不可接受时,发送指示不许可断开的消息,用于确定是否仍然期望该服务的装置,以及用于发送指示服务应该被停止的消息的装置,该装置用于当不再期望该服务时,发送指示服务应该被停止的消息;并且,所述数据分布设备还包括:用于确定是否接收到了包括预订请求的消息的装置,如果接收到了该消息,则所述数据分布设备还包括:用于确定响应该预订请求的数据的属性的装置;

用于发送包括确认请求的消息的装置;

用于确定是否接收到了对该确认请求的响应的装置;以及用于发送包括关于由所述用于选择服务的装置所选择的服务的信息的消息的装置,其中,如果所选择的服务是拉取数据服务,则所述数据分布设备还包括:用于确定第一刷新间隔的装置;

用于插入的装置,该装置用于在关于所选择的服务的消息中插入所述第一刷新间隔;

用于确定新数据是否可用的装置;

用于确定该数据是否是响应于所述预订请求的装置,该装置用于当新数据可用时,确定该数据是否是响应于所述预订请求;

用于确定第二刷新间隔的装置,该装置用于当该数据是响应所述预订请求时,确定第二刷新间隔;

用于确定是否接收到了请求新数据的消息的装置;以及用于发送包括该响应的新数据和该第二刷新间隔的消息的装置,该装置用于当接收到了数据请求时,发送包括该响应的新数据和该第二刷新间隔的消息,其中,如果所选择的服务是数据推送服务,则所述数据分布设备还包括:用于确定新数据是否可用的装置;

用于确定该数据是否是响应所述预订请求的装置,该装置用于当新数据可用时,确定该数据是否是响应于所述预订请求;以及用于发送包括该数据的消息的装置,该装置用于当该数据是响应预订请求时,发送包括该数据的消息,用于跟踪的装置,该装置用于跟踪从上一次接收响应的新数据之后的时间量,用于发送包括断开通知的消息的装置,该装置用于当预定的时间量已经过期时,发送包括断开通知的消息,用于确定是否接收到了指示所选择的服务应该被停止的消息的装置,以及用于释放用于该服务的资源的装置,该装置用于当接收到了服务停止消息时,释放用于该服务的资源。

说明书 :

技术领域

本申请说明涉及管理诸如计算设备的设备之间的数据传送(conveyance)的系统和方法。

背景技术

通常,可以以两种方式中的任意一种更新客户端以便从服务器接收新的数据。第一,浏览器(或其它客户端应用)可以间歇地向服务器请求新数据(通常称之为“拉取(pulling)”数据)。第二,服务器可以在数据变得可用时将新数据发送到客户端(通常称之为“推送(pushing)”数据)。

发明内容

在一个总体方面,可以通过在数据分布设备上执行的过程促进用于选择性地管理计算设备之间的数据传送的技术。该过程包括接收包含数据获取设备的预订请求的消息和确定该预订请求的属性;所述过程还包括根据数据分布设备在接收到该预订请求时的状态和该预订请求的属性,在用于由数据分布设备执行以提供对于该预订请求的数据响应的数据拉取服务和数据推送服务之间进行选择;以及发送关于所选择的服务的消息,其中,对于数据推送服务,数据分布设备维持与数据获取设备的持续连接并向数据获取设备发送所选择的服务的消息,而不等待来自数据获取设备的请求,而对于数据拉取服务,数据分布设备在发送所选择的服务的消息之前等待数据获取设备的请求。
数据分布设备当前的状态可以取决于在数据分布设备处可用的持续连接的数目;而预订请求的属性可以是响应所述预订请求的数据的属性。响应所述预订请求的数据的属性可以是所述数据的服务质量、估计的该数据的可用频率和估计的该数据的量的其中之一。该过程可以手动、通过机器、通过存储在计算机可读介质中的指令或其它方式来实现。
一些实现可以包括:如果所选择的服务包含数据拉取服务,则确定刷新 间隔;并在关于该服务的消息中插入所述刷新间隔。确定刷新间隔可以包含分析预期在数据分布设备处响应数据变得可用的频率、预期在数据分布设备处变得可用的响应数据的量以及建立和中断连接的开销的量。
某些实现可以包含确定新数据是否可用;如果新数据可用,确定该数据是否是响应所述预订请求的;以及如果该数据是响应预订请求的,确定刷新间隔。具体的实现还可以包含确定是否接收到了请求新数据的消息;以及如果接收到了该消息,则发送包含响应的新数据和刷新间隔的消息。
一些实现可以包含如果所选择的服务包含数据推送服务,则确定新数据是否可用;如果新数据可用,确定该数据是否是响应所述预订请求的;以及如果该数据是响应预订请求的,则发送包括该数据的消息。
具体的实现可以包含跟踪从上一次接收响应的新数据之后的时间量;以及如果预定的时间量已经过期,则发送包含断开通知的消息。
某些实现可以包含确定是否接收到了指示所选择的服务应该被停止的消息;以及如果接收到了服务停止消息,则释放用于该服务的资源。
具体的实现可以包含发送包含确认(acknowledge)请求的消息;以及确定是否接收到了对该确认请求的响应。一些实现可以包含如果没有接收到对确认请求的响应,则判定使用数据拉取服务。
在另一个总体方面,提供一种选择性地管理设备之间的数据传送的系统,该系统包括:数据分布设备,该数据分布设备包括:用于接收包括数据获取设备的预订请求的消息的装置;用于确定预订请求的属性的装置;用于选择服务的装置,该装置用于根据数据分布设备在接收到该预订请求时的状态和该预订请求的属性,在用于由数据分布设备执行以提供对于该预订请求的数据响应的数据拉取服务和数据推送服务之间进行选择;以及用于生成关于所选择的服务的消息的装置,其中,对于数据推送服务,数据分布设备维持与数据获取设备的持续连接并向数据获取设备发送所选择的服务的消息,而不等待来自数据获取设备的请求,而对于数据拉取服务,数据分布设备在发送所选择的服务的消息之前等待数据获取设备的请求。
在另一个总体方面,可以通过在数据获取设备上执行的过程来促进用于选择性地管理计算设备之间的数据传送的技术。所述过程可以包含确定是否有进程需要数据;如果需要数据,则向数据分布设备发送包括预订请求的消息。该过程还可以包含确定是否接收到了包括关于所选择的用于提供数据的 服务的信息的消息;以及确定所选择的服务包含数据推送服务还是数据拉取服务。该过程可以手动、通过机器、通过存储在计算机可读介质中的指令或其它方式来实现,其中,对于数据推送服务,数据分布设备维持与数据获取设备的持续连接并向数据获取设备发送所选择的服务的消息,而不等待来自数据获取设备的请求,而对于数据拉取服务,数据分布设备在发送所选择的服务的消息之前等待数据获取设备的请求。
一些实现可以包含如果所选择的服务包含数据拉取服务,则确定第一刷新间隔是否过期;以及如果所述第一刷新间隔已经过期,则发送请求新数据的消息。
某种实现可以包含确定是否接收到了包括第二刷新间隔的消息;以及如果接收到了该消息,则利用第二刷新间隔替换第一刷新间隔。
具体的实现可以包含如果所选择的服务包括数据推送服务,则建立持续连接;确定是否接收到了包括新数据的消息;以及如果接收到了新数据,则更新现有数据。
一些实现可以包含确定是否接收到了包括断开通知的消息;如果接收到了断开消息,则确定断开是否可接受;以及如果断开不可接受,则发送指示不许可断开的消息。
特定的实现可以包含确定是否仍然需要所选择的服务;以及如果不再需要所选择的服务,则发送指示该服务可以被停止的消息。
具体的实现可以包含确定是否接收到了确认请求;以及如果接收到了确认请求,则发送响应。
在另一个总体方面,一种系统包括数据分布设备和处理器,其中数据分布设备包括:通信网络接口,用于接收包括数据获取设备的预订请求的消息,并且其中处理器用于:确定预订请求的属性,根据数据分布设备在接收到该预订请求时的状态和该预订请求的属性,在用于由数据分布设备执行以提供对于该预订请求的数据响应的数据拉取服务和数据推送服务之间进行选择,并且生成关于所选择的服务的消息。
在另一个总体方面,一种系统包含数据获取设备和数据分布设备。该数据获取设备用于确定是否有进程需要该数据;如果需要数据,则向数据分布设备发送包括预订请求的消息;确定是否接收到了确认请求,如果接收到了去人请求,则发送响应,确定是否接收到了包括关于所选择的用于提供数据 的服务的信息的消息;以及确定所选择的服务是数据推送服务还是数据拉取服务。如果所选择的服务是数据拉取服务,则该数据获取设备用于确定第一刷新间隔是否过期;如果所述第一刷新间隔已经过期,则发送请求新数据的消息;确定是否接收到了包括新数据和第二刷新间隔的消息;用新数据更新现有数据,用第二刷新间隔替换第一刷新间隔。如果所选择的服务是数据推送服务,则数据获取设备用于建立持续连接;确定是否接收到了包括新数据的消息;以及利用新数据更新现有数据。该数据获取设备还用于确定是否接收到了包括断开通知的消息;如果接收到了断开通知,则确定断开是否可接受;以及如果断开不可接受,则发送指示不许可断开的消息。该数据获取设备还用于确定是否仍然需要该服务,以及如果不再需要该服务,则发送指示服务应该被停止的消息。所述数据分布设备用于确定是否接收到了包括预订请求的消息;如果接收到了该消息,确定响应该预订请求的数据的属性,发送包括确认请求的消息,确定是否接收到了对该确认请求的响应,根据数据分布设备当前的状态、响应数据的属性、以及对确认请求的响应,如果存在的话,在用于提供响应数据的数据拉取服务和数据推送服务之间进行选择,以及发送包括关于所选择的服务的信息的消息。如果所选择的服务是拉取数据服务,则该数据分布设备用于确定第一刷新间隔;在关于所选择的服务的消息中插入该第一刷新间隔;确定新数据是否可用;如果新数据可用,确定该数据是否是响应所述预订请求的;如果该数据是响应所述预订请求的,则确定第二刷新间隔;确定是否接收到了请求新数据的消息;以及如果接收到了数据请求,则发送包括响应的新数据和第二刷新间隔的消息。如果所选择的服务是数据推送服务,则该数据分布设备用于确定新数据是否可用;如果新数据可用,确定该数据是否是响应所述预订请求的;以及如果该数据是响应预订请求的,则发送包括该数据的消息。该数据分布设备还用于跟踪从上一次接收响应的新数据之后的时间量,如果预定的时间量已经过期,则发送包括断开通知的消息。该数据分布设备还用于确定是否接收到了指示所选择的服务应该被停止的消息,以及如果接收到了服务停止消息,则释放用于该服务的资源。
在后面的附图和说明中将阐述一种或多种实现的细节。通过说明书、附图和权利要求书,其它特性和优点将变得明显。
现在将参照附图详细说明上述和其它方面。
图1示出了用于选择性地管理计算设备之间的数据传送的系统的方框图。
图2示出了数据获取(acquisition)设备的方框图。
图3示出了数据分布(distribution)设备的方框图。
图4示出了用于选择性地管理计算设备之间的数据传送的逻辑框架的方框图。
图5A-B示出了说明用于选择性地管理计算设备之间的数据传送的过程的流程图。
图6A-B示出了说明用于选择性地管理计算设备之间的数据传送的过程的流程图。
在不同视图中的相似的参考符号指示相似的元素。
此处说明的系统和技术涉及管理计算设备之间的数据传送。具体地说,所述系统和技术涉及选择适当的服务,通过该服务在计算设备之间传送(convey)数据,所述系统和技术还用于实现所选择的服务。
图1示出了用于选择性地管理计算设备之间的数据传送的系统100。通常,系统100包含数据获取设备110、通信网络120和数据分布设备130。在运行中,数据分布设备130接收和/或生成数据获取设备110可能感兴趣的数据。但是,为了将数据传送到数据获取设备110,数据分布设备130和数据获取设备110必须理解数据将如何被传送。
数据获取设备110包含帮助存储、处理和传送数据的设备。例如,设备110可以包含存储器,该存储器可以包含随机存取存储器(RAM)、只读存储器(ROM)、只读光盘(CD-ROM)、寄存器和/或任何其它适当的易失性或非易失性信息存储设备。该存储器可以存储传送的数据、对数据获取设备的指令、数据获取设备的状态和/或任何其它适当的信息。传送的数据可以是文本、音频、图形、视频、统计信息、测量信息和/或任何其它适当的信息。再例如,设备可以包含处理器,诸如例如模拟处理器、数字处理器、生物处理器、原子处理器或任何其它适当的以逻辑方式处理信息的设备。再例如,设备可以 包含通信接口,诸如例如网络接口卡、调制解调器、无线收发机或任何其它适当的用于发送和/或接收信息的设备。数据获取设备还可以包括用户输入设备和/或用户输出设备。在具体的实现中,设备110可以是个人数字助理(PDA)、个人计算机(PC)、工作站(WS)或任何其它适当的计算设备。
注意,虽然数据获取设备110被举例说明为相对于数据分布设备130是远程的,但是设备110是“远程的”的含义仅仅在于它不是数据分布设备130的一部分。因此,数据获取设备110可以在地理上靠近或远离数据分布设备130。
数据获取设备110和数据分布设备130通过链接122连接到通信网络120上。链接122可以是诸如例如双绞线或同轴电缆的金属线,光缆,诸如例如IEEE 802.11信道、BluetoothTM信道、蜂窝信道或红外信道的电磁无线信道,和/或任何其它适当类型的有线或无线的用于传输信息的通道。
通信网络120可以包含任何适当类型的用于从数据分布设备130向数据获取设备110传送数据的设备。例如,网络120可以包含网桥、路由器、交换机、服务器、中继器、收发机和/或网络集线器。此外,这些组件可以使用有线和/或无线技术。通常,网络120可以是任何类型的通信网络,诸如例如帧中继网络、X.25网络、因特网或公共交换电话网(PSTN)。注意,通信网络120可以在从数据分布设备130向数据获取设备110传送数据的同时,在诸如电话、PC、服务器和WS的各种设备之间传送数据。
数据分布设备130包含用于存储、处理和传送将被传送到设备110的设备。例如,数据分布设备130可以包含存储器,存储器可以包含RAM、ROM、CD-ROM、寄存器和/或任何其它适当的易失性或非易失性信息存储设备。存储器可以存储将被传送的数据、对数据分布设备的指令、数据获取设备的状态和或任何其它适当的信息。数据可以是由设备130创建的、通过通信网络120从其它设备接收的或以其它方式由数据分布设备130捕获的。再例如,设备130可以包含处理器,诸如例如模拟处理器、数字处理器、生物处理器、原子处理器或任何其它适当的用于以逻辑方式处理信息的设备。再例如,设备130可以包含通信接口,诸如例如网络接口卡、调制解调器、收发机或任何其它适当的用于发送和/或接收信息的设备。在具体的实施例中,设备130可以是服务器,并且与数据获取设备110构成客户端-服务器关系。
在一种操作模式中,当数据获取设备110确定某个进程(process)需要 数据时,该设备生成包含预订(subscription)请求的消息。该进程可以是用户命令、应用、硬连接的数据采集(gathering)方案(scheme)或任何其它适当的技术。此外,预订请求可以是任何适当类型的对数据服务的请求。例如,预订请求可以包含关于期望的数据的信息,诸如例如类型和/或位置。在具体的实施例中,预订请求可以是具有作为HTTP参数的响应数据主题(subject)的超文本传输协议(HTTP)请求。并且,在特定实施例中,HTTP参数可以指定优选的服务类型。然后,数据采集设备将该预订请求消息发送到通信网络120,通信网络120将该消息传送到数据分布设备130。注意,消息可以具有一个或多个段,并且/或者是更大的消息的一部分。
在接收到预订请求后,数据分布设备130响应于预订请求选择将用以提供数据的服务类型。通常,分布设备可以在数据推送服务和数据拉取服务之间进行选择。对于数据推送服务,数据分布设备130维持与数据获取设备110的持续连接并向数据获取设备发送新的数据,而不等待来自数据获取设备的请求。另一方面,对于数据拉取服务,数据分布设备130在发送新数据之前等待数据获取设备110请求新数据。数据推送/拉取服务可以使用Java和Java服务器网页或任何其它适当类型的语言/协议来实现。
数据拉取服务有几个优点。例如,数据拉取服务不需要持续连接;连接可以在每次将要传送数据时建立。此外,即使在数据获取设备和数据分布设备之间存在缓存代理服务器,服务也会工作。并且,服务可以在“瘦”客户端上实现,允许对数据获取设备的影响很小,并且服务可以使用HTTP实现,使得服务在不同品牌的浏览器之间可移植。
但是,数据拉取服务也有缺点。例如,每次建立连接以传送数据时,对于处理、时间或这两者的开销很大。并且,如果数据获取设备在经常性的基础上请求数据,则这种服务会需要相当大的开销。另一方面,如果不以足够高的频率请求数据,则数据分布设备将不得不在延长的时期内为数据获取设备存储大量的数据。再例如,数据获取设备不能在数据一变得可用时就获得响应预订请求的数据。
数据推送设备也具有优点和缺点。在有利的一面,数据推送服务允许一旦响应数据在数据分布设备处变得可用,就使数据获取设备得到通知。并且,如果使用了浏览器,则可以使用“瘦”客户端,因为浏览器通常不需要下载其它组件以便进行维护。此外,如果使用HTTP连接,则该连接在不同浏览器之间可移植。在不利的一面,数据分布设备的套接字(socket)连接的数量可能会限制可用的持续连接的数目,并且缓存代理服务器会给连接带来问题。
对服务类型的选择可以基于数据分布设备当前的状态以及/或者预订请求的一个或多个属性,该属性可以反应响应预订请求的数据的属性。数据分布设备的状态可以基于数据分布设备的可用连接数量、数据分布设备正在处理的数据量、到数据分布设备和/或从数据分布设备的网络等待时间、正在由数据分布设备服务的数据获取设备的数目、以及/或者任何其它适当的、会影响数据分布设备提供数据的能力的准则。预订请求的属性可以包含请求数据服务的数据获取设备的类型、优选数据服务类型的具体说明(specification)、响应数据的属性、以及/或者任何其它适当的、可以从预订请求消息中提取的准则。相应数据的属性可以包含数据类型、期望的数据的服务质量(QoS)、用于服务的新数据的估计可用频率、以及/或者用于该服务的数据量。但是,在具体的实现中,可能使用诸如用户标识符或设备标识符的非数据属性代替数据属性,尽管非数据属性可以反应数据属性。
因此,对服务的选择可以取决于多种因素。例如,如果数据分布设备已经建立了大量的连接,并且预订不需要持续连接,则设备可以判定建立数据拉取服务。再例如,如果数据分布设备估计数据获取设备将经常尝试从该数据分布设备拉取数据,则可以建立数据推送服务。再例如,如果需要高QoS,则可以使用数据推送服务。在具体的实现中,数据分布设备可以将已经存在的数据推送服务转换成数据拉取服务,以便适应应该提供数据推送服务的请求。
如果数据分布设备130判定使用数据拉取服务,则数据分布设备向数据获取设备发送关于所选择的服务的消息。该消息可以指定数据服务类型。并且,该消息可以指定是否要求确认。如果要求确认,则数据获取设备可以向 数据分布设备返回报告(report back)。数据分布设备和数据获取设备也可以协商任何适当的参数。
然后,数据获取设备一般在更新间隔过期时从数据分布设备请求新数据,此时,发生数据传送。如果在数据获取设备联系数据分布设备时存在响应预订请求的新数据,则数据分布设备至少将该数据发送给数据获取设备。如果数据分布设备维持数据获取设备的状态,则可以只发送新数据。
如果数据分布设备判定使用数据推送服务,数据分布设备也向数据获取设备发送关于所选择的服务的消息。该消息可以指定所选择的数据服务类型。并且,该消息可以指定是否需要确认。如果需要确认,数据获取设备可以向数据分布设备返回报告。数据分布设备和数据获取设备也可以协商任何适当的参数。
但是,在这种情况下,数据获取设备和数据分布设备维持持续连接以传送数据,并且数据分布设备在数据变得可用时,向数据获取设备发送响应预订请求的新数据。在具体的实现中,数据获取设备提供句柄(handle)以推送信息,有时在小服务程序(servlet)技术中将句柄称为响应对象(responseobject)。并且,如果数据分布设备维持数据获取设备的状态,则数据分布设备可以仅仅发送新的响应数据;这可以被视为流处理(streaming approach),因为数据像信息流一样被发送。为了试图缓和潜在的缓存代理服务器问题,数据分布设备可以包含带有真实数据的伪数据(dummy data),以便尝试匹配代理服务器的缓存器的容量。
在数据分布设备维持数据获取设备的状态并且从而能够仅向数据获取设备提供新数据的实现中,可能需要一种方式保持在数据获取设备端的数据的往返过程中数据的持续性持续。这可以导致一种解决方案,在该解决方案中,界面(interface)的一个图文框(frame)保持更新,以便如果存在新数据的话获得新的数据,并且将获得的数据传送到其它感兴趣的图文框。在无图文框的情况中,数据获取设备可能需要通过检索以前获得的数据和新数据来刷新界面。
由图1示出并且在上面说明的系统可以具有多个特征。例如,计算设备之间的数据传送可以通过使用推送/拉取两种选择中的最佳的一种而具有适应能力。再例如,数据传送可以是易于实现和扩展的。再例如,推送和拉取技术的熔合(fusion)可以使得回叫(callback)技术更橹棒。并且,如果能 够实现“瘦”客户端,则数据传送在各种浏览器之间的可移植性将更强,因为与重型(heavy)客户端有关的困难,例如小应用程序(applet),可以被消除。此外,如果使用HTTP实现,则防火墙封锁(blockage)问题将被最小化。再例如,每个客户端可以仅建立一个持续连接。
此处描述的技术可以被用于数据分布设备希望周期性地为数据获取设备更新新数据的任何场景。这种场景的例子包括网络聊天、股票报价、动态拍卖应用、动态广告(例如根据用户简档和/或行为向用户推送宣传),旅游信息更新和Webinar(即,网络研讨会)。
在某些实现中,数据拉取服务的刷新间隔可以最初由数据分布设备确定,并且有可能在关于所选择的服务的消息中发送给数据获取设备。这样,数据获取设备将知道何时从数据分布设备请求数据。刷新间隔可以基于数据分布设备的状态和/或响应数据的一个或多个属性。考虑的项目为在数据分布设备处可用的连接的数目、以数据分布设备作为数据源的数据获取设备的数目、由数据分布设备处理的数据量、到数据分布设备和/或从数据分布设备的网络等待时间、期望的响应数据的服务质量(QoS)、预期在数据分布设备处响应数据变得可用的频率、预期在数据分布设备处变得可用的响应数据的量、建立连接的开销、和/或任何其它适当的影响数据分布设备提供数据的能力的准则。
例如,如果在数据分布设备处可用的连接的数目较高、响应数据的QoS较高、并且/或者预期响应数据变得可用的频率较高,则刷新间隔可以较短。另一方面,如果在数据分布设备处可用的连接的数目较低、响应数据的QoS较低、并且/或者预期数据变得可用的频率较低,则刷新间隔可以较长。例如,如果预期在数据分布设备处响应数据变得可用的频率较低,则没有必要采用短的刷新间隔。事实上,典型地,刷新间隔不应该比在数据分布设备处的数据可用率短。当然,如果不同因素指向不同方向,则可能出现平衡。
另外,刷新间隔可以在响应数据在数据分布设备处变得可用时被更新,以使得刷新间隔反应在数据分布设备端数据对于数据获取设备变得可用的频率。注意,更新间隔的下限和上限的规范可能是很慎重的(prudent),因此调整应用不能对情况进行过多的控制。刷新间隔更新可以以任何适当的语言实现。
作为调整刷新间隔的一个例子,使得:
Rinit=数据获取设备的初始刷新间隔,
Rmin=所允许的数据获取设备的最小刷新间隔,
Rmax=所允许的数据获取设备的最大刷新间隔,
Rn=在第n个事件结束时的刷新间隔,以及
En=直到第n个事件,事件对于数据获取设备变得可用的平均间隔,然后
Rn+1=CF(En,Rn),其中,CF是收敛函数。
这样,在这种方法中,给予每个事件的可用间隔的权重是相同的。但是,在另一种实现中,可能有这样一种方法,其中,最近生成的事件与较早生成的事件相比具有优先地位(precedence)。这样,就给予了当前的趋势(trend)更多的优先考虑(preference)。
收敛函数(CF)的一种形式可以是:
CF(Rn+1)=avg(Rn,max{max{Rmin,En},min{Rmax,En}})取平均值是为了减缓Rn+1向En的收敛。
也可能有一个参数控制收敛率。例如,使得α(0<α<1)为已存在的刷新率Rn的可信度(confidence level)。这样,新的刷新率能够如下地计算:
Rn+1=CF(Rn+1)=(α*Rn+(1-α)*max{max{Rmin,En},min{Rmax,En}})注意,能够根据应用的要求调整Rinit、Rmin、Rmax和α。
通过调整刷新间隔,数据分布设备可以达到更新等待时间和开销之间的平衡。这样,对于响应新数据相当频繁地可用的服务,可以缩短刷新间隔,以便更快地将数据传输到数据获取设备。另一方面,对于响应新数据以较慢的频率可用的服务,可以延长刷新间隔,以便降低建立连接的开销,特别是在不存在响应新数据时。此外,数据分布设备可以对随着时间经历不同数据可用率的服务进行补偿。
图2示出了数据获取设备200。数据获取设备200可以与图1中的数据获取设备110类似。如图所示,数据获取设备200包含存储器210、微处理器220、网络接口卡230、显示设备240和用户输入设备250。
存储器210可以包含RAM、ROM、CD-ROM、寄存器和/或任何其它适当的易失性或非易失性信息存储设备。存储器210存储可能已经从数据分布设备传送的数据212、指示数据将被如何显示的浏览器指令214、以及指示数据获取设备的较低层级(level)操作的指令216。浏览器指令214可以是Internet Explorer、Netscape Navigator或任何其它类型基于HTTP的浏览器。另外,浏览器指令214可以被实现为符合TCP/IP、TELNET、NTTP或任何其它适当的报文传递(messaging)协议。
微处理器220可以是复杂指令集计算机(CISC)、精简指令集计算机(RISC)或任何其它适当的用于以逻辑方式处理信息的设备。微处理器220按照存储器210中的指令运行。
网络接口卡230可以是以太网卡、ATM卡或任何其它适当的用于向通信网络发送信息或从通信网络接收信息的设备。卡230可以与微处理器220结合运行,或者可以独立于微处理器220运行。
显示设备240是一种用户输出设备,它可以是阴极射线管(CRT)显示器、液晶显示器(LCD)、投影仪或任何其它适当的用于可视化地呈现信息的设备。显示设备可以向用户呈现由微处理器220生成的界面。
用户输入设备250可以是小键盘、键盘、触摸屏、跟踪板、鼠标、麦克风、输入笔和/或任何其它适当的用于检测来自用户的输入的设备。通过用户输入设备,用户可以输入对数据获取设备的命令。
在一种操作模式中,微处理器220根据浏览器指令214生成用户界面。然后显示设备240向用户可视地呈现该用户界面。随后,微处理器确定是否数据是所期望的,如果是,则生成预订请求。确定数据是所期望的可以通过检测指示期望某一类型的数据的用户命令、确定应用期望某一类型的数据、或者通过任何其它适当的技术来完成。预订请求可以包含关于数据获取设备、请求用户、期望的数据类型、数据的来源、以及/或者任何其它适当的信息的标记。随后,可以通过网络接口卡230将该请求发送到数据分布设备。
然后,数据获取设备等待通过网络接口卡230接收关于所选择的用于提供数据的服务的消息。在接收到该消息之后,微处理器220确定所选择的服务是数据拉取服务还是数据推送服务。
如果所选择的服务是数据推送服务,则微处理器220,有可能在网络接口卡230的协助下,与提供服务的数据分布设备建立持续连接。然后,微处理器等待通过网络接口卡230接收新的响应数据。一旦接收到该数据,微处理器更新数据212。此外,微处理器可以利用新数据更新由显示设备240呈现的用户界面。数据获取设备可以继续接收新的响应数据并更新现有的数据,直到微处理器判定中断连接或者连接由提供服务的数据分布设备中断。
但是,如果服务是数据拉取服务,则微处理器220等待刷新间隔过期。该刷新间隔可能已经在关于所选择的服务的消息中被接收到了。一旦刷新间隔过期,微处理器生成请求新数据的消息,并通过网络接口卡230将该消息发送到提供服务的数据分布设备。然后,如果有包含新数据和新的刷新间隔的消息的话,数据获取设备等待接收该消息。在接收到该消息之后,微处理器更新数据212,并开始等待新的刷新间隔过期。微处理器也可以利用新数据更新由显示设备240呈现的用户界面。
在特定的实现中,浏览器可以具有起到浏览器界面和数据分布设备之间的中介(mediator)的作用的隐藏的图文框。该隐藏的图文框可以具有解释由于用户动作而生成的请求以及由数据分布设备发送的响应的能力。
应该理解,图2仅仅示出了数据获取设备的一种实现。其它的数据获取设备可以具有更少的、更多的以及/或者不同的组件的排列(arrangement)。例如,数据获取设备可以不具有用户输入设备或显示设备。再例如,数据获取设备可以在存储器210中包含附加的应用。并且,可以在微处理器220上对一些指令编码。此外,存储器210中的应用和/或数据可以具有多种的段。
图3示出了数据分布设备300。设备300可以与图1中的数据分布设备130类似。如图所示,数据分布设备300包含存储器310、微处理器320和网络接口卡330。
存储器310可以包含RAM、ROM、CD-ROM、寄存器和/或任何其它适当的易失性或非易失性信息存储设备。存储器310存储指示该设备的较低层级的操作的指令312和可以包含响应数据的数据314。
微处理器320可以是CISC、RISC或任何其它适当的用于以逻辑方式处理信息的设备。微处理器320按照存储器310中的指令运行。
网络接口卡330可以是以太网卡、ATM卡或任何其它适当的用于向通信网络发送信息或从通信网络接收信息的卡。卡330可以与微处理器320系统结合起来运行,或者可以独立于微处理器320运行。
在一种操作模式中,设备300等待通过网络接口卡330接收包含预订请求的消息。在接收到预订请求之后,微处理器320选择服务类型,以满足预订请求。选择服务类型可能需要分析设备300的状态以及/或者响应预订请求的数据的一个或多个属性。设备可以根据预订请求确定响应数据的属性。要考虑的项目可以包含在该设备处当前可用的连接的数目、期望的响应数据的 QoS、以及/或者在通信网络中的等待时间。例如,如果期望较高的QoS,则推送服务可能是适当的。另一方面,如果不能使用数据推送服务,而数据拉取服务是可被接受的,则可以使用数据拉取服务。如果将要使用数据拉取服务,则微处理器320还确定初始的刷新间隔。
在选择了将要使用的服务类型之后,微处理器320生成关于所选择的服务的消息。随后该消息可以被通过网络接口卡330发送到发起该预订请求的数据获取设备。这之后,可以完成设备300和发起的数据获取设备之间关于服务的任何其它协商。
如果服务是数据拉取服务,则微处理器320确定新数据是否可用。例如,可以通过网络接口卡330接收数据而使数据变得可用。如果数据已经变得可用,则微处理器320确定数据是否是响应预订请求的。如果数据是来自预先指定的源、关于特定的主题、具有发起的数据获取设备的标识符、并且/或者具有任何其它适当的数据,则该数据可以是响应预订请求的。如果数据是响应预订请求的,则微处理器320使得数据被存储在数据314中。另外,微处理器320重新计算刷新间隔。例如,可以根据接收响应预订请求的新数据之间的时间间隔重新计算该刷新间隔。
微处理器320还确定是否通过网络接口卡330接收到了拉取请求。如果接收到了拉取请求,则微处理器320确定在上次请求之后,是否有响应的新数据变得可用,如果有,则生成包含该数据以及更新的刷新间隔的消息。随后,该消息可以被通过网络接口卡330发送。
设备300可以重复地确定新数据是否可用、确定新数据是否是响应数据、如果新数据是响应数据则存储该新数据、以及响应于拉取请求将存储的数据发送到发起的数据获取设备。
另一方面,如果所选择的服务是推送服务,则微处理器,有可能在网络接口卡330的帮助下,与发起的数据获取设备建立持续连接。微处理器还确定数据是否已经变得可用,并且如果可用,确定数据是否是响应数据。如果响应的新数据可用,则微处理器生成包含该数据的消息。该消息随后被通过网络接口卡330发送到发起该预订请求的数据获取设备。
设备300可以重复地确定新数据是否可用、确定可用的数据是否是响应数据、并且将响应的新数据发送到发起的数据获取设备。
应该理解,图3仅仅示出了数据分布设备的一种实现。其它的数据分布 设备可以具有更少的、更多的以及/或者不同的组件的排列。例如,数据分布设备可以包含用户输入设备和/或用户输出设备。再例如,数据分布设备可以在处理器上对一些或所有指令编码。再例如,数据分布设备可以在存储器310中包含附加的应用。另外,存储器310中的应用和/或数据可以具有多种段。
在具体的实现中,指令312包含用于登记预订请求的预订器(subscriber)模块和用于向发起的数据获取设备发送数据的发布器(publisher)模块。在接收到预订请求后,预订器模块登记该请求,该请求可以包含数据获取设备感兴趣的主题、数据获取设备的标识符以及/或者利用发布器推送数据的句柄。当诸如数据或关闭(shutdown)的新事件可用时,发布器通过使用包含包括文本的对象的Javascript将该事件推送到客户端。事件可以由预定事件生成器或其它应用生成。随后数据获取设备可以解释该对象,如果是适当的,则将文本呈现给用户。也可以使用其它的技术。
图4示出了用于选择性地管理计算设备之间的数据传送的逻辑框架400。如图所示,框架400是用于数据获取设备410和数据分布设备420的客户端-服务器模型的。
框架400的发展和功能可以被分类为三个模块一客户端模块412、判定模块422和执行模块424。客户端模块412提供客户端-服务器体系结构中的客户端的功能。这样,客户端模块412可以具有连接到服务器的机制和解释由服务器发送的响应的知识。在大多数实现中,客户端是网页浏览器。因此,客户端模型412可以具有Javascript以处理解释过程。
判定模块422和执行模块424轮流将服务器端的工作,即,在数据分布设备420处的工作分类。执行模块424包含握手功能425、数据交换功能426和连接终止功能427。这些功能执行执行模块424的操作。在框架400中,服务器端还存储系统状态428。
在运行中,根据系统的当前状态和客户端请求的数据的至少一个属性,判定模块422确定是否应该容许对客户端服务。如果准许对该客户端服务,则该请求被传送到用于提供该服务类型的执行模块424。否则,将使用错误消息通知客户端。
执行模块424可以使用握手功能425确定是否可以使用数据推送服务处理该客户端。如果握手不成功,则该模块将尝试使用数据拉取服务对该客户端进行服务。这一顺序可以发生是因为握手一般包含来自数据获取设备的、 在其接收到初始的服务类型消息后的确认。如果数据分布设备没有接收到该确认,则这告诉该设备数据可能丢失或被缓存在代理中,并且数据推送服务可能不是最佳的方法。因此,数据分布设备可以将服务类型改变成推送,并向数据获取设备重新发送初始的服务类型消息。
在具体的实现中,还可以考虑数据分布设备上的未来负载。例如,数据获取设备可以知道在一天中的哪些小时出现高或低负载。这样,如果预订请求刚好在那些时间之一之前到达,则数据分布设备可以做出关于提供何种类型的服务的不同确定。
当数据交换功能426完成数据传送之后,或者当数据传送被终止时,连接终止功能427释放为该服务所使用的资源。连接终止可以由数据获取设备或数据分布设备发起。
图5A-B示出了用于选择性地管理计算设备之间的数据传送的过程500。过程500可以由类似于图1中的数据分布设备130的数据分布设备实现。
过程从在判定块504等待接收包含预订请求的消息开始。预订请求可以包含对数据源的指示、期望的数据类型、期望数据的应用的类型以及/或者任何其它适当的关于该预订的响应数据的信息。该预定请求可以是例如具有定义数据的标签的文本消息的URL。
在接收到预订请求之后,该过程要求(call for)在功能块508选择服务类型以满足预订请求。选择服务类型可能需要分析数据分布设备的当前状态以及/或者响应数据的至少一个属性。可以考虑的项目包含当前可用的连接的数目、期望iang的响应数据的QoS、以及/或者网络等待时间。此外,还可以考虑当前正在被处理的数据服务的数量和/或类型。如果不能使用数据推送服务,而数据拉取服务时可以接受的,则可以使用数据拉取服务。
在选择了将使用的服务类型之后,过程要求在判定块512确定服务是否是数据拉取服务。如果服务是数据拉取服务,则过程继续在功能块516为该服务确定初始的刷新间隔。可以根据预期的响应数据的可用率、预期的将变得可用的响应数据的量、为了传送数据而建立和断开连接的开销、以及/或者任何其它适当的准则来确定初始的刷新间隔。但是,在具体的实现中,初始的刷新间隔可以是缺省值。
在确定了初始的刷新间隔之后,过程要求在功能块520生成关于数据拉取服务的消息。该消息可以包含至少一些该服务的参数,包含初始的刷新间 隔。然后,该消息可以被发送到发起预订请求的数据获取设备。
过程继续在功能块526开始跟踪时间。可以通过建立计时器(timer)、记录当前时间、或者任何其它适当的技术来跟踪时间。然后,过程要求在判定块532确定新数据是否可用。该数据可以是文本、图形、音频、视频、测量信息、统计信息或任何其它适当的信息类型,并且数据分布设备可能已经接收到了该数据,并且/或者数据分布设备可能已经生成了该数据。如果新数据可用,则过程要求在判定块536确定数据是否是响应预订请求的数据。如果数据来自预先指定的源、关于特定的主题、并且/或者具有任何其它适当的特性,则数据可能是响应数据。如果数据是响应数据,则过程继续在功能块540存储数据以便使数据与预订请求相关联,并且在功能块544重新计算刷新间隔。例如,可以根据接收响应的新数据之间的时间间隔来重新计算刷新间隔。这之后,过程需要返回到功能块526,以重新初始化时间跟踪进程。
但是,如果没有可用的新数据,或者新数据不是响应数据,则过程要求在判定块548确定是否接收到了请求数据的消息,该请求指示在上一次数据请求之后变得可用的响应数据应该被发送。注意,一般在接收到数据请求之前建立连接。如果接收到了数据请求,则过程继续在功能块552生成具有新的数据和刷新间隔的消息,如果存在新数据的话。然后,该消息可以被发送到发起预订请求的数据获取设备。
一旦该消息被生成,或者如果没有接收到数据请求,则过程要求在判定块556确定预定时间量是否已经过期,该时间量表示从上次接收响应的新数据之后的时间段。这一时间段可以被硬编码或被更新,并且通常以分钟为单位。如果预定的时间量没有过期,则过程要求在判定块560确定是否接收到了指示服务应该被停止的消息。如果接收到了服务停止消息,则在功能块562释放所选择的服务的资源,并且过程到达结束点。但是如果没有接收到服务停止消息,则过程返回到在判定块532对数据的检查。
但是,如果在判定块556预定的时间量已经过期,则过程要求在功能块564生成包含断开通知的消息。然后,该消息可以被发送到发起预订请求的数据获取设备。在发送断开通知之后,过程要求在判定块568确定是否接收到了包含不许可响应的消息。如果接收到了不许可响应,则过程要求保持资源有效,并返回到功能块526。但是,如果没有接收到不许可响应,则在功能块562释放用于该服务的资源,并且过程到达结束点。可以允许预定的时 间段,诸如例如五分钟,在过程结束之前过期。
返回到判定块512,如果所选择的服务不是数据拉取服务,则过程要求在功能块572生成关于推送服务的消息。该消息可以包含至少一些该服务的参数。然后,该消息可以被发送到发起预订请求的数据获取设备。然后,过程需要在功能块574建立持续连接。
在建立了连接之后,过程要求在功能块576开始跟踪时间。然后,在判定块578,过程要求确定新数据是否可用。如果新数据不可用,则过程要求在判定块580确定是否接收到了服务停止消息。如果接收到了服务停止消息,则在功能块582释放用于该服务的资源,并且过程到达结束点。但是如果没有接收到服务停止消息,则过程继续在判定块582确定预定的时间量是否已经过期,该时间量对应于从上次接收响应新数据之后的间隔。如果预定的时间量没有过期,则过程需要返回到判定块578以检查新数据。
当新数据可用时,过程要求在判定块584确定该数据是否是响应预订请求的数据。如果该数据不是响应数据,则过程要求返回到判定块580以检查服务停止消息。但是,如果该数据是响应数据,则过程要求在功能块586生成具有新数据的消息。然后,该消息可以被发送到发起预订请求的数据获取设备。之后,过程要求返回到功能块576,以便重新初始化时间跟踪。
如果在判定块582预定的时间量已经过期,则过程要求在功能块588生成包含断开通知的消息。然后,该消息可以被发送到发起预订请求的数据获取设备。然后,过程继续在判定块590确定是否接收到了包含不许可响应的消息。如果接收到了不许可响应,则过程需要返回到功能块576。但是,如果没有接收到不许可响应,则在功能块582释放用于该服务的资源,并且过程到达结束点。
虽然图5A-B示出了用于选择性地管理计算设备之间的数据传送的过程,但是其它的实现可以具有更少的、更多的和/或不同的操作的排列。例如,过程可以不包含关于数据推送服务的操作。再例如,过程可以不更新刷新间隔。再例如,可以在确定服务类型之后、在最初接收一些响应数据之后或在另一个适当的时间开始时间跟踪。再例如,新数据和刷新间隔可以在不同的消息中。再例如,数据分布设备可以在一个时间使多个服务有效。这样,将必须检查变得可用的数据对多个服务的适用性,并从而进行关联。
再例如,停止服务的请求可以来自于数据获取设备之外的某个地方。例 如,服务提供者可以请求数据分布设备结束对数据获取设备的服务。这可以在例如聊天的场景中发生,当用户关闭聊天时,聊天应用可以请求数据分布设备结束对该特定用户的服务。
再例如,选择服务类型可以包含发送确认请求。如果没有接收到对该确认请求的响应,则这可以表示数据推送服务是不适当的。例如,居间的服务器可能捕获了由数据分布设备发起的消息。数据获取设备可以将这一情况应用于对使用数据推送服务或数据拉取服务的判定。
在数据服务过程中也可以使用确认请求。如果没有接收到响应,则数据分布设备可以确定连接失败。并且,数据分布设备可以判定将数据推送服务切换为数据拉取服务、切换为结束数据服务等。可以依据特定事件的出现、在指定的时间或其它条件发出确认请求。
图6A-B示出了用于选择性地管理计算设备之间的数据传送的过程600。过程600可以由与图1中的数据获取设备110类似的设备实现。
过程从等待在判定块604确定某个进程期望数据开始。进程可以包含指示期望特定类型的数据的用户命令、要求数据的应用或任何其它适当的能够应用数据的方案。
一旦期望数据,过程就要求在功能块608生成包含预订请求的消息。该预订请求可以包含关于期望的数据类型、数据的源、请求的用户的信息以及/或者任何其它适当的关于期望的数据的信息。然后,该消息可以被发送到数据分布设备。
之后,过程要求在判定块612等待接收关于所选择的用于提供数据的服务的消息。在接收到该消息之后,过程要求在判定块616确定所选择的服务是否是数据拉取服务。
如果所选择的服务不是数据拉取服务,则过程在功能块620建立持续连接,并在判定块624确定是否接收到了包含新数据的消息。如果接收到了新数据,则过程要求在功能块628更新服务的数据。
在更新服务数据之后,或者如果没有接收到新数据,则过程要求确定是否仍需要该服务。例如,如果接收到了预定数量的数据、如果用户已经在预定时间段内没有与数据交互、如果检测到指示不再期望该服务的命令、或者由于其它的情况,有可能不再期望服务。如果不再期望服务,则过程要求在功能块636生成指示服务可以被停止的消息。然后,该消息可以被发送到提 供服务的数据分布设备,并且过程到达结束点。
但是,如果仍然期望服务,则过程继续在判定块640确定是否接收到了包含断开通知的消息。如果没有接收到断开通知,则过程需要返回到判定块624以检查更多的新数据。但是,如果接收到了断开通知,则过程需要在判定块644确定该断开是否可接受。例如如果不再期望数据,则断开是可以接受的。如果断开是不可接受的,则过程要求在功能块648生成指示断开不被许可的消息。之后该消息可以被发送到提供服务的数据分布设备。然后,过程需要返回到判定块624以检查更多的数据。但是,如果断开是可以接受的,则过程到达结束点。
返回到判定块616,如果服务是数据拉取服务,则过程要求在判定块652确定请求新数据的时间是否已经过期。可以在关于所选择的服务的消息中得到请求新数据的时间间隔。如果请求新数据的时间已经过期,则过程要求在功能块654与提供服务的数据分布设备建立连接,并在功能块656生成请求新数据的消息。该消息随后可以被发送到提供服务的数据分布设备。
然后,过程需要在判定块658等待接收包含新数据和新的刷新间隔的消息。在接收到该消息之后,过程要求在功能块660中断连接,并在功能块662更新服务的数据和刷新间隔。然后,过程要求返回到判定块652以确定请求新数据的时间是否已经过期。
但是,如果请求新数据的时间还没有过期,则过程要求在判定块664确定是否仍然需要服务。如果不再期望服务,在过程要求在功能块666生成服务停止消息。该消息随后可以被发送到提供服务的数据分布设备,并且过程到达结束点。
但是,如果仍然期望服务,则过程要求在判定块668确定是否接收到了包含断开通知的消息。如果没有接收到断开通知,则过程要求返回到判定块652,以便确定请求新数据的时间是否已经过期。但是,如果接收到了断开通知,则过程要求在判定块670确定断开是否可接受。如果断开是不可接受的,则过程要求在功能块672生成指示断开不被许可的消息。该消息可以随后被发送到服务数据分布设备。然后,过程要求返回到判定块652。但是,如果断开是可以接受的,则过程到达结束点。
虽然图6A-B示出了用于选择性地管理计算设备之间的数据传送的过程,但是其它的实现可以具有更少的、更多的以及/或者不同的操作的安排。例如, 过程可以不包含关于推送数据服务的操作。再例如,过程可以不检查断开通知。再例如,可以不更新刷新间隔。再例如,对时间过期、是否仍然期望服务和/或断开通知的检查可以以任何顺序发生,或者根本不发生。再例如,过程可以确定是否接收到了确认请求,并且如果接收到了确认请求,则生成对该确认请求的响应。可以在接收关于所选择的服务的消息之前(即在块612之前)、在数据服务期间(即在块620或块652之后)、或者在任何其它适当的时间接收该确认请求。
此处说明的各种系统和技术的实现能够在数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些不同的实现能够包含在可编程系统上可执行并且/或者可解释的一个或多个计算机程序中的实现,所述可编程系统包含至少一个可编程处理器,该至少一个可编程处理器可以是专用的或通用的,并且连接到存储系统、至少一个输入设备和至少一个输出设备,以便从其接收数据和指令,并向其发送数据和指令。
这些计算机程序(也称为程序、软件、软件应用或代码)包含用于可编程处理器的机器指令,并且能够以高级过程编程语言和/或面向对象的编程语言实现,和/或以汇编语言/机器语言实现。如此处所使用的,术语“机器可读介质”是指任何用来向可编程处理器提供机器指令和/或数据的计算机程序产品、装置和/或器件(例如磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”是指任何用来向可编程处理器提供机器指令和/或数据的信号。
为了提供与用户的交互,此处说明的系统和技术能够在具有显示设备(例如CRT(阴极射线管)监视器或LCD(液晶显示器)监视器)和键盘及定点设备(例如鼠标或跟踪球)的计算机上实现,其中,显示器用于向用户显示信息,通过键盘和定点设备用户能够向计算机提供输入。也可以使用其它种类的设备提供与用户的交互;例如,通过输出设备提供给用户的反馈可以是任何形式的感观反馈(例如视觉反馈、听觉反馈或触觉反馈);并且可以以包含声学、语音或触觉输入的任何形式来接收来自用户的输入。
此处说明的系统和技术能够在计算系统中实现,该计算系统包含后端组件(例如,作为数据服务器),或者包含中间件组件(例如应用服务器),或者包含前端组件(例如具有图形用户界面和网络浏览器的客户端计算机,通 过该图形用户界面和网络浏览器用户能够与此处说明的系统和技术的实现进行交互),或者包含上述后端、中间件或前端组件的任何组合。所述系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)相互连接。通信网络的例子包含局域网(“LAN”)、广域网(“WAN”)和因特网。
计算系统可以包含客户端和服务器。客户端和服务器通常从彼此获取数据,并且一般通过通信网络进行交互。客户端和服务器的关系是依靠运行在各个计算机上并且彼此具有客户端-服务器关系的计算机程序而产生的。
虽然以上仅对几个实现进行了具体说明,但是其它的修改也是可能的。本公开的一些部分讨论了通过在提供数据的数据推送服务和数据拉取服务之间进行选择来对在计算设备之间的数据传送进行管理。这可以通过公开的系统和/或技术中的一个或多个来实现,或者通过其它的可用系统和技术来实现。其它部分讨论了动态调整拉取服务的刷新间隔。这也可以通过所说明的系统和/或技术中的一个或多个实现,或者通过其它可用的系统和技术实现。并且,为了达到期望的结果,在图5和6中描述的逻辑流程也不是必须要求所示的具体顺序或时序顺序。此外,在某些实现中,多任务和并行过程可能是优选的。
其它的实施方式也可以包含在所附权利要求书的范围之内。

附图说明

具体实施方式