用实时路由网络递送个人化内容的技术的制作方法

文档序号:6656646阅读:171来源:国知局
专利名称:用实时路由网络递送个人化内容的技术的制作方法
相关申请的交叉引用本发明要求于2004年8月17日提交的题为“TECHIQUES FOR DELIVERINGPERSONALIZED CONTENT WITH A REAL-TIME ROUTING NETWORK,MODULAR EVENT-DRIVEN ARCHITECTURE,MODULAR EVENT-DRIVENPROCESSING AND VIEWER FAILOVER TESTING A SYSTEM MEMORYWHILE AN OPERATING SYSTEM IS ACTIVE”的共同待审的美国临时专利申请号60/602,539的优先权;并且是于2001年12月14日提交的题为“ASYNCHRONOUS MESSAGING USING A DYNAMIC ROUTING NETWORK”的美国专利申请号10/017,182的部分延续,该专利申请要求于2000年12月18日提交的美国临时申请号60/256,613、于2001年3月16日提交的美国临时申请号60/276,847、于2001年3月21日提交的美国临时申请号60/278,303、于2001年3月28日提交的美国临时申请号60/279,608、于2001年3月29日提交的美国临时申请号60/280,627的优先权。所有上述申请为全部目的都通过引用包括在此,如同在本文中全文陈述一样。
背景本公开的实施例一般涉及通过网络传送信息,尤其涉及通过网络传送用于远程地更新客户机设备处的内容的个人化信息。
用户可以从万维网下载许多不同类型的内容。例如,用户可以用网页下载内容。在某些情况下,用户可以订阅向网页发送用户期望的内容的服务。内容提供者可能需要跟踪哪些用户注册了哪些内容。除跟踪哪些用户注册了哪些内容之外,服务供应商还可能需要知道如何发送每一用户所注册的内容。这可能需要大量资源来跟踪已注册的用户、每一用户所期望的内容、以及如何将内容路由至用户。
附图简要说明

图1是示出包含动态内容路由网络的环境的高层框图;图2是示出为了更新网页上的活对象的属性而在服务器、信息提供者、动态内容提供者、客户机和路由网络之间进行的交互的交互图;图3是图示由路由网络执行的多对多映射的高层图;图4示出包括运动会得分的两个不同网页;图5是示出输入源和其可用于生成更新消息的工具的框图;图6是示出由激活模块的一个实施例执行的步骤的流程图;图7是示出根据一个实施例的路由网络的较低层视图的框图;图8是示出由群集中的节点执行的用于执行通过网关对从输入源接收的消息的基于对象的路由的步骤的流程图;图9示出根据一个实施例的网页的一个例子;图10示出根据一个实施例的使用路由网络110来递送个人化消息的系统;图11示出根据一个实施例的用于生成批消息的简化的流程图;图12示出根据一个实施例的用于将批消息路由至客户机的方法的简化的流程图;以及图13示出根据一个实施例的用于在客户机处处理批消息的方法的简化的流程图。
对本文公开的实施例的特性和优点的进一步理解可以通过参考说明书的其余部分和附图来实现。
详细说明在一个实施例中,可以使用动态内容路由网络向远程客户机提供个人化内容。首先描述动态内容路由网络,然后描述向客户机递送个人化内容。
动态内容路由网络图1是示出包含动态内容路由网络110(下文称为“路由网络”)的环境100的高层框图。环境100还包含与客户机114通信的服务器112、信息提供者108和动态内容提供者116。虽然典型的环境100将具有上百台服务器112和信息提供者108、成千(或甚至上百万)台客户机114和多个动态内容提供者116,但为了提高本说明的清楚性起见,图1仅仅示出这些实体中的每一种中的一个。
服务器112、客户机114、信息提供者108、动态内容提供者116和路由网络110较佳地通过诸如包括因特网的链路之类的传统通信链路117进行通信。通信链路117包括诸如专用或共享数据、有线电视或电话线之类的公知的有线通信媒体、和/或例如使用诸如用于全球移动通信系统(GSM)、码分多址(CDMA)、时分多址(TDMA)等协议通过蜂窝电话网络进行的通信等公知的无线通信媒体。
在一个实施例中,每一实体可以与向各实体提供对因特网上的其它计算机的访问的一个或多个因特网服务供应商(ISP)(未示出)通信。另外,服务器112、客户机114、信息提供者108、动态内容提供者116和路由网络110较佳地各由诸如“66.35.209.224”等至少一个互联网协议(IP)地址来标识。IP地址还可以具有一个或多个与其相关联的域名,例如“bangnetworks.com”。本发明的替换实施例除了本文中描述的那些以外,或作为替代还可以使用替换的寻址方案和/或命名约定。例如,其中一个或多个客户机是蜂窝电话或其它便携式设备的实施例可以依靠不同的寻址方案。
较佳地,信息提供者108向服务器112提供网页或其它数据表示。网页包含一个或多个“活对象”,它(们)被指定成可实时动态更新的对象。每一活对象由对象标识符或对象ID来标识。较佳地,服务器112向多个客户机114提供页面118。客户机114联系路由网络110并在网页上注册对象ID的更新消息。路由网络110进而较佳地维护指示哪些客户机已注册哪些对象ID的注册表。
信息提供者108和/或动态内容提供者116向路由网络110发送更新消息。这些消息可以在信息提供者108或动态内容提供者116想要更新活对象的属性的任何时刻发送。每一更新消息较佳地标识一活对象,并包含用于更新所标识的活对象的属性的数据。路由网络110访问该注册表,并确定哪些客户机已注册了所标识的对象。然后,路由网络110将该更新消息路由至合适的客户机。在接收到更新消息时,客户机114更新该活对象的指定属性。
路由网络110通过基于对象的路由提供从对象到客户机的有效的一对多映射(并且通过信息的推断,提供从信息提供者108/动态内容提供者116到客户机的多对多映射)。由信息提供者108/动态内容提供者116向路由网络110提供的消息并不全部基于所指定的目的地被路由至客户机114;更具体地,它们不是如在传统的IP路由方案中那样基于的客户机IP地址来路由的。而是基于消息所引用的活对象来路由消息。
由路由网络110提供的映射和基于对象的路由允许信息提供者108/动态内容提供者116实时地更新动态地变化的典型客户机处的活对象的属性,而无需信息提供者或动态内容提供者跟踪客户机或客户机所查看的网页。客户机114进而不需要具有对象的ID的先验知识一当它们从服务器112接收页面118时它们‘发现’它们应注册哪些ID。
基于对象的路由还允许信息提供者108动态地更新网页上的内容而不要求客户机114再请求内容,并且不要求信息提供者108或服务器112维持与客户机的连接。以此方式,与利用客户机和服务器112之间的传统的客户机方请求驱动的传输控制协议/互联网协议(TCP/IP)连接时有可能的情况相比,多得多的客户机能从给定的信息提供者108接收更新的内容。
现在转到图1中所示的各个实体,服务器112较佳地是被配置成用作web服务器并向客户机114提供页面118和其它数据表示的传统计算机系统。由服务器112提供的页面118与一个或多个信息提供者108相关联。
信息提供者108是提供一个或多个页面118、网页中所包含的信息和/或由服务器112提供的其它数据表示的实体。信息提供者108较佳地具有耦合至因特网的传统计算机系统。在一个实施例中,服务器112由信息提供者108直接控制(例如,服务器物理地位于信息提供者处和/或专用于只提供信息提供者的网页)。在本实施例中,服务器112和信息提供者108能作为同一实体来对待。在替换实施例中,服务器112提供来自多个信息提供者的网页。
如本领域中公知的,页面118和服务器112上的其它内容由具有“服务://服务器/路径/网页”形式的统一资源定位符(URL)来指定。通常,页面118通过超文本传输协议(HTTP)来获取,从而用于从具有域名“www.bangnetworks.com”的web服务器检索网页“bl.html”的示例性URL是“http://www.bangnetworks.com/news/bl.html”。
如本文中所使用的,“网页”是可以从服务器112获得的数据块。在最简单的情况下,网页是以超文本标记语言(HTML)编写的文件。网页还可以包含或指代一个或多个其它数据块,例如其它文件、文本、图像、小应用程序、视频和/或音频。另外,网页可以包含用于呈现该网页及其内容的指令,例如HTML标签和样式表。指令也可以是与HTML相关并将语义内容添加至网页的可扩展标记语言(XML),或是将某些动态内容添加至网页的动态HTML(DHTML)。另外,这些指令可以采用诸如JAVA小应用程序和JAVASCRIPT之类的一个或多个程序和/或DHTML脚本的形式。
如本文所使用的,“网页”一词还指由服务器112提供的其它数据表示,无论这些数据表示是否包括传统网页的特征。这些数据表示包括例如预期供web浏览器120使用的应用程序和数据,或驻留在客户机114或其它地方的其它应用程序,例如电子表格或文本(例如,文字处理)数据等。
在一个较佳实施例中,诸如网页和网页的元素等客户机处的对象能被信息提供者108指定为“活”。活对象的属性能由信息提供者108或代表信息提供者作用的另一实体在客户机114处动态地实时更新。如在本文中使用的,“对象”是客户机114处能被单独标识或访问的任何资料或数据。对象的例子包括网页的元素,诸如文本字符和串、图像、画面、表、音频、视频、小应用程序、脚本、HTML、XML和形成网页的其它代码;由小应用程序、脚本和/或代码使用的变量和其它信息;嵌入在网页中的URL等。应用程序和操作系统构造也是对象。例如,电子表格的单元格、文字处理文档中的文本和由操作系统或应用程序显示的标题栏和消息是对象。较佳地,可以将多个对象组合成单个逻辑对象。因此,对象可以在任何期望或有用的粒度级别上定义。
因为通过“对象”来概念化和组织网页上的内容,因此本发明本质上从HTML代码或其它惯用的表示中提取网页和网页内容以及客户机114处的其它模块和/或功能。此提取允许信息提供者108更新对象的属性而不用顾及位置、显示格式或如何在客户机114处表示数据的其它细节。
活对象具有相关联的“属性”,这些“属性”包括与该对象有关或相对于该对象所引用的任何可修改的数据。信息提供者108一般但不一定为向客户机114提供的活对象的属性提供初始设置。这些属性可能影响或不影响网页中的对象或其它数据表示的可视表示。属性可能影响对象的内在方面,因此,属性的变化可能对包含该对象的网页没有任何直接影响。例如,属性可能影响对象的特定方面是否可修改、对象如何响应用户输入或其它刺激等。另外,属性还可以对如何在客户机114处显示对象具有直接影响。例如,属性可以影响由对象显示的文本、图像或其它数据的内容、颜色、字体、大小、格式、或其它特性。其它属性可能占据介于不影响对象的可视表示和直接影响对象的可视表示之间的范围的部分。例如,显示足球比赛的得分的网页可以包括自从服务器112提供网页时起比赛的列表和比赛的当前得分。比赛的列表、要显示的比赛的子集和比赛的得分能按需要或所期望的被指定为活对象(或单个活对象的属性)并被更新。
属性较佳地还可包括例示对象的实例或调用对象的功能。例如,浏览器窗口对象的属性可以包括用于例示另一浏览器窗口的功能。此功能可以作为对象属性的逻辑变化来调用。第二浏览器窗口能通过原始浏览器窗口(即,对象)来引用或被指定为新的活对象。
信息提供者108或其它实体较佳地通过更新消息来更新客户机114处的活对象。一般而言,更新消息标识活对象,并在需要时标识该活对象的属性,并包含用于更新属性的数据。在一个实施例中,数据可以是属性的实际值或用于使对象的属性得以更新的可执行代码。例如,数据可以是属性应被设置成的简单的数值或文本值,例如“4”,和/或数据可以是JAVASCRIPT代码或对客户机处实现对于对象属性的期望改变的JAVASCRIPT功能的调用。
更新消息较佳地隐式或显式标识客户机114处的处理程序,以在更新活对象的属性时使用。在一个实施例中,当消息隐式指定处理程序(例如,当消息不标识特定处理程序)时,客户机114使用默认处理程序。在一个实施例中,如果更新消息指定属性的实际值,则默认处理程序生成用于将属性改变成该指定值的JAVASCRIPT代码。如果更新消息中的数据是JAVASCRIPT代码,则默认处理程序不执行该代码的任何处理。在任一情况下,默认处理器较佳地使用LiveConnect来执行客户机114处的Java虚拟机(JVM)122中的JAVASCRIPT代码,从而更新活对象的属性。
对于某些对象和/或数据类型,默认处理程序不适合。在这些情况中,消息较佳地显式标识用于执行更新的处理程序。例如,消息可以显式指定访问数据的功能或消息可以显式标识其中应执行数据的环境。例如,更新消息中的数据可以包括供诸如MACROMEDIA FLASH等软件“插件”执行的代码,且消息可以显式地将FLASH标识成处理程序。
信息提供者108较佳地通过在提供给客户机114的网页或其它数据表示中包括对象的唯一标识符,即对象ID来将对象指定为“活”。在一个实施例中,信息提供者108用HTML表达式ID=“elementIdentifier”来编码对象的相应HTML“ID”特性中的对象ID,其中“elementIdentifier”是对象ID并且最好是串。该串能编码信息提供者108或建立对象ID的其它实体所期望的任何信息,并且在一个实施例中是简单的文本和/或数值标识符。在一个实施例中,信息提供者108以诸如“Bang$”等预定义标记来开始对象ID,以将活对象与碰巧具有所定义的ID特性的其它对象区分开来。例如,对象可以具有对象ID“Bang$elementIdentifier”。
在该较佳实施例中,每一信息提供者108可任选地编码其对象ID中的唯一信息提供者ID,以防止不同信息提供者的对象ID之间的命名冲突。在一个实施例中,信息提供者ID是文本和/或数值标识符。信息提供者108可以将信息提供者ID和对象ID指定为分层名字空间的一部分。例如,在一个实施例中,对象被命名如下“$namespace$[namespace2$...$namespaceN$]objectId”,其中“$namespace1”是信息提供者ID,而“$”用作名字分隔符并定义名字空间分层结构的另外的可任选层次。系统100的一个实施例支持典型的目录服务功能。例如,出现在一起的两个美元标记字符“$$”指名字空间分层结构的顶层。
因此,活对象的对象ID较佳地由预定义标记、信息提供者ID名字空间和由信息提供者108分配的值的组合来形成。例如,表示具有符号“BANG”的股票的实时价格的活对象的对象ID可以是“Bang$$informationProviderID$equities$realtime$bang”。在本例中,“Bang$”是表示活对象的预定义标记,“$informationProviderID”是标识信息提供者的ID,“$equities$realtime$”定义名字空间分层结构的层次,而“bang”标识特定对象。
在某些实施例和情形中,对象ID使用相对名。例如,引用其自己的对象ID的信息提供者108在其自己的名字空间中是隐式的。因此,信息提供者108不需要在它内部使用的对象ID中包括信息提供者ID。在一个实施例中,信息提供者ID不被显式编码成对象ID。相反,信息提供者ID在网页的其它地方编码以向页面的对象ID提供范围。
在一个实施例中,对象ID标识网页或客户机114处的其它文档的文档对象模型(DOM)表示中的一个点(即,树中的节点)。DOM是将文档表示为对象的分层结构的平台和语言中立接口。DOM还提供允许程序和脚本动态地访问和更新对象的属性的接口。对象属性可以由子孙对象继承。
在本实施例中,客户机114较佳地在DOM表示中的指定点的上下文中执行更新消息。更新可以指定对所标识的点处的对象的属性的改变。更新还可以指定对所标识的点处的对象的父或子孙的改变。在每一种情况中,相对于DOM表示中的指定点执行更新。在一个实施例中,DOM表示中的点指定如何更新定位于那些点处的活对象的属性。因此,取决于DOM表示中所标识的活对象的位置可以不同地解释相同的更新。
例如,假设标识为“window.document.frame[3].ObjectID”的DOM表示中有一个对象。还假设该对象具有指定对象所显示的文本的位于“window.document.frame[3].ObjectID.innerText”处的“innerText”属性。更新消息能通过为innerText属性指定“Ojbect ID”和新值来改变由对象显示的文本。
使用对象ID来指定对象的优点在于信息提供者108或提供更新消息的其它实体能访问和改变对象的属性而不必知道对象在DOM表示中的实际位置。实际上,对象可以在不同DOM表示中的不同位置中,和/或在同一DOM表示的多个位置中。在这些情况的任一种中,更新消息将改变具有给定对象ID的所有对象的指定属性。
取决于环境100的特定实施例,信息提供者108和/或动态内容提供者116向路由网络110提供更新消息。动态内容提供者116较佳地是由提供诸如股票价格和/或体育比赛得分等实时信息的实体操作的传统计算机系统。在一个实施例中,信息提供者108从动态内容提供者116或另一个源接收活对象的已更新的属性(或在内部生成已更新的属性)。然后,信息提供者108向路由网络110发送指定对象ID和对象属性的变化的更新消息。在本实施例中,环境100中可以没有动态内容提供者116。
在另一个实施例中,动态内容提供者116向一个或多个信息提供者108提供活对象的对象ID,而信息提供者108向客户机116分发活对象。然后,动态内容提供者116向路由网络110发送指定活对象的属性的变化的消息。例如,动态内容提供者116向信息提供者108分发与特定垒球比赛的得分相关联的对象ID。然后,动态内容提供者116向路由网络110发送指定对象ID和对控制该特定垒球比赛的显示得分的对象的属性的更新的消息。这两个实施例不是互斥的,因此某些更新可以由信息提供者108提供给路由网络110,而另一些由动态内容提供者116提供。
客户机114是从服务器112检索页面118和/或其它信息的设备。在一个实施例中,客户机114是人们用于访问因特网上的信息的传统个人计算机。在替换实施例中,客户机114是具有因特网连接的不同消费者电子设备,诸如启用因特网的电视机、蜂窝电话、个人数字助理(PDA)、web浏览装置等。客户机114较佳地但不一定要具有相关联的显示设备。
客户机114较佳地执行诸如MICROSOFT INTERNET EXPLORER等用于检索网页并将它们显示在显示设备上的web浏览器120。在客户机从服务器112接收除传统网页以外的数据表示的实施例中,web浏览器120不一定要与常规的web浏览器共享相似性。较佳地,web浏览器120包含用于执行JAVA小应用程序和/或脚本的JVM 122。web浏览器120较佳地还包含诸如对JAVASCRIPT(或诸如VBScript等另一脚本语言)和文档对象模块(DOM)的支持等动态HTML能力,并允许JAVA和脚本语言之间的通信。在一个实施例中,web浏览器120支持用于允许JAVA小应用程序和以所支持的脚本语言编写的脚本之间的通信的LiveConnect标准。web浏览器120还可以通过诸如MACROMEDIA FLASH、REALNETWORKS REALPLAYER和/或APPLE QUICKTIME等软件插件来扩展。在替换实施例中,JVM 122的功能和/或web浏览器120的其它方面由客户机114中的一个或多个其它功能单元来提供。术语“模块”在本文中用于指用于提供属于模块的功能的软件计算机程序代码和/或任何硬件或电路。web浏览器120和JVM 122是客户机114中的模块的例子。
在某些实施例中,客户机114不一定要具有显示设备、web浏览器120和/或与典型的消费者设备相关联的其它组件。例如,客户机114可以是具有web连接的某些方面的专用设备,诸如启用web的装置中或用于汽车、音频-视频设备或某些其它设备的控制器中的嵌入式HTTP客户机。
从服务器112提供给客户机114的页面118较佳地包括用于在网页上启用活对象的指令。这些指令使客户机114自动且透明地(即,没有用户交互)联系路由网络110并下载用于激活活对象的激活模块124。在一个实施例中,指令包括指定激活模块124在路由网络110上的位置的URL。在一个替换实施例中,客户机114从服务器112或另一个源获取激活模块124。
激活模块124较佳地包括供JVM 122执行的JAVA指令。然而,模块124的替换实施例可以使用不同的语言和/或技术来编码页面118中的指令和/或激活模块124。例如,指令和/或激活模块124可以或者作为本机代码或作为插件嵌入在web浏览器120或操作系统中。在这些替换实施例中,web浏览器120不必从外部源下载激活模块124。
激活模块124较佳地向路由网络110注册来自由客户机114下载的页面118的对象ID,并响应于从网络接收到的更新消息更新活对象。路由网络110将该注册记录在注册表125中。客户机的注册较佳地只要客户机正在显示相关联的页面118就保持有效,虽然系统100的其它实施例可以使用不同的准则来确定何时终止客户机的注册。
图2是示出为了更新活对象的属性而在服务器112、信息提供者108/动态内容提供者116(一般称为“输入源210”)、客户机114和路由网络110之间进行的交互的交互图。最初,客户机114向服务器112发送网页请求(212)。作为响应,服务器112向客户机114提供包含或标识一个或多个活对象的网页(214)。在网页中编码的指令较佳地使客户机114向路由网络110透明地请求激活模块124(216)。作为响应,路由网络110发送激活模块124(218)。客户机114执行激活模块124(220),该模块标识客户机处的活对象的对象ID并向路由网络110注册对象ID(222)。路由网络110更新其注册表以标识客户机114已对其进行注册的对象ID(223)。
在某一点处,输入源210向路由网络110发送更新消息(224)以改变客户机114处的活对象的属性。在一个实施例中,从输入源210到路由网络110的消息只包含单个对象ID和对所标识的对象的属性的更新。在另一个实施例中,消息包含多个对象ID和相应的属性更新。在后一实施例中,消息可以具有将消息标识为具有多个对象ID和更新的相关联的“批ID”。较佳地,信息提供者108能以与包括对象ID相同的方式在页面118中包括批ID。同样,客户机114较佳地能以与对象ID相同的方式向路由网络110注册批ID。事实上,批ID可以与对象ID相同,使得客户机114通过注册一个ID来注册批和非批消息两者。或者,可以建立用于注册批消息的单独过程。客户机114较佳地如同分开递送每一消息那样来处理一批部件消息。
路由网络110进而较佳地通过使用诸如IP地址等标准因特网通信协议将消息路由至已对指定对象ID进行注册的每一客户机114(226)。客户机114处的激活模块124处理该消息并更新所标识的活对象的属性(228)。如果具有相同对象ID的活对象出现在客户机114处的多个位置中(例如,在客户机处显示的网页上的多个位置处),则激活模块124较佳地更新具有所指定的ID的每一活对象。结果,路由网络110允许动态地更新客户机114处的活对象。较佳地,此路由和更新的发生快到对输入源210来说足以被认为是“实时的”。
在图2中的虚线框230中指示的这一更新过程能重复无限次,并且对信息提供者210和客户机114是完全异步的。例如,输入源210可以在体育赛事得分变化或股票价格波动时向路由网络110发送常规更新消息,而一旦体育赛事结束或股票市场关闭则可以停止发送更新消息。当客户机114结束包含活对象的网页的显示,或不再期想接收更新消息时,客户机较佳地关闭与路由网络110的连接(232)。路由网络110进而更新注册表125以移除客户机的对象注册(234)。在另一个实施例中,客户机114向路由网络110发送用于从一个或多个对象中有选择地注册和/或取消注册客户机的消息,而仍保留连接开放以接收关于其它对象的更新消息。
图3是图示由路由网络110执行的多对多映射的高层图。多个输入源(标记为210A-C)向路由网络110发送更新消息。每一更新消息较佳地指定至少一个对象ID和对所标识的对象的属性的更新。路由网络110进而从给定的输入源210有选择地将更新消息路由至已注册了给定对象ID的客户机114。在图3中,假设例如客户机312A和312B已注册了给定对象ID,而其它客户机尚未注册该对象ID。因此,路由网络110将更新消息路由至客户机312A和312B,而不将消息路由至客户机312C-312H。
图4示出动态内容路由网络110的能力的一个例子。图4示出包含体育比赛得分的两个不同的网页410、412。虽然网页被不同地格式化,但每一页面包含两场职业足球比赛和两场职业垒球比赛的相同得分。网页410包含以“Local SportsScores(地方体育比赛得分)”为标题的所有四场比赛,而网页412包含以“BaseballScores(垒球得分)”为标题的垒球比赛和以“Football Scores(足球得分)”为标题的足球比赛。
存在各种方式来使用活对象内部地表示网页中的比赛和得分。在一个实施例中,定义了具有比赛中所涉及的两队和与每一队相关联的得分的属性的“比赛”对象。比赛对象被放置在网页中的选定位置处,且对象的属性使关于比赛的信息被显示在页面上。在另一实施例中,定义了“队”和“得分”对象,且队对象具有定义队名的属性,而得分对象具有定义得分的属性。在此第二实施例中,队和得分对象被放置在页面上的选定位置处,使得当呈现页面时正确的队和得分对齐。在又一实施例中,定义了具有一个队的名字和与该队相关联的得分的属性的一个对象。然后,各对对象以正确的对齐被放置在页面中以指示比赛和得分。在另一实施例中,定义了具有指定两队的名字的属性的一个对象,且定义了具有指定两个得分的属性的一单独对象。在最后这一实施例中,两个对象被放置在页面中,以使队名与相关联的得分对齐。显然,这些表示的其它变化是可能的。
对图4的例子假设比赛中的队名由具有两个队名的属性的“名字”对象指定,而比赛中的得分由具有两个得分的属性的“得分”对象指定。在网页410中,具有被设置成标识“SF 49ers”和“STL Rams”的属性的名字对象414紧挨在“本地体育比赛得分”标题之下。具有被设置成将比赛的得分标识为“42”至“7”的属性的得分对象416紧挨在名字对象414的右边。在网页412中,第二名字对象418的属性用略微不同的术语“SF”和“STL”来标识相同的比赛。然而,如在网页410中所使用的,此名字对象418与同一得分对象416对齐。
因此,在每一网页410、412中的不同位置中使用同一得分对象416。为了更新两个网页上的San Francisco 49ers对St.Louis Rams足球比赛的得分,输入源210只需将指定得分对象416的对象ID和对得分属性的更新的更新消息发送至路由网络。路由网络110将更新消息路由至合适的客户机114,且客户机无论特定页面布局如何均更新合适的得分。
输入源210,即信息提供者108和/或动态内容提供者116能使用各种工具来生成更新消息。图5是示出输入源210和其可用于生成更新消息的工具的框图。除了本文所述的工具以外或作为本文所述的工具的替代,可以使用其它工具。
较佳地,该工具允许输入源210访问由路由网络110提供的用于接受消息的应用程序编程接口(API)。在一个实施例中,由输入源210发送的消息与由客户机114处的激活模块124使用的消息格式相同。在一个替换实施例中,提供给路由网络110的消息采用不同的格式,且路由网络将该消息翻译成激活模块124所使用的格式。
在一个实施例中,输入源210使用数据泵模块510来访问API。该数据泵模块510以每隔一定时间读取包含一个或多个对象ID和所标识的对象的新值的可扩展标记语言(XML)文件,并自动生成将表示对象属性的变化的消息发送至路由网络110的API调用。在另一实施例中,数据泵模块510是事件驱动的,并响应于文件中的变化或某些其它事件来读取XML文件。
在另一实施例中,输入源210用引导器控制台模块512来访问API。较佳地,引导器控制台模块512向管理员呈现显示页面118的内容的图形界面。例如,管理员可以使用引导器控制台512来编辑网页上的文本数据、图像和/或任何对象或对象的属性。在编辑之后,管理员使用“发送更新”按钮或类似的技术来使引导器控制台模块512通过API将用于改变的对象和属性的消息发送至路由网络110。
在另一实施例中,信息提供者108和动态内容提供者116通过用内容管理系统模块514访问API来一起用作输入源210。较佳地,内容管理系统模块514驻留在信息提供者108处,并从动态内容提供者116接收对象属性更新。内容管理系统模块514较佳地更新服务器112处所存储的页面118中的活对象的属性,并且还将用于改变的属性的消息发送至路由网络110。以此方式,服务器112处的页面118和客户机114处所显示的网页几乎被同时更新。在一个实施例中,动态内容提供者114向路由网络110而不是向信息提供者108发送更新消息。系统100的实施例还能使用本文所述的内容管理技术的任何组合。
例如,上述工具能生成具有用于将得分对象所显示的文本更新成“2”的下列代码的消息LiveObject score=new LiveObject(“Bang$homeScoreID”);Score.setPropery(“innerText”,“2”)。
此代码将具有对象ID“Bang$homeScoreID”的对象的innerText属性设置成“2”。该工具使用API将此消息传递到路由网络110。
现在转到在客户机114处执行的动作,图6是示出由激活模块124的一个实施例执行的步骤的流程图。本领域的技术人员将认识到,不同的实施例可以按不同的次序执行图6的步骤。激活模块124一般执行三个功能向路由网络110注册对象ID,处理由客户机114从网络接收到的消息以更新活对象的属性,以及控制客户机和网络之间的通信。
为了注册对象ID,活动模块124较佳地对从服务器112接收到的页面118进行语法分析(610)并标识活对象的对象ID。在一个替换实施例中,激活模块124只标识对象ID的一个子集,诸如只标识当前正在由web浏览器120显示的活对象的ID。或者,除了对象本身以外,对象ID的列表可以在网页中预编码,从而允许激活模块124的简易标识。在又一实施例中,客户机114的用户选择对象ID来注册。
激活模块124较佳地打开客户机114和路由网络110之间的连接(612)。激活模块124能在激活模块接收和/或语法分析了页面118之前或之后打开此连接(612)。在某些情况中,客户机114位于对客户机能作出的连接请求的类型加以限制的防火墙后面。防火墙可能例如阻止所有非HTTP话务。因此,激活模块124较佳地将连接请求包装在HTTP报头中以使请求穿过防火墙到达路由网络110。
激活模块124使用客户机114和路由网络110之间的通信来通过向路由网络116传送一个包含所标识的对象ID的向量(例如,列表或阵列)来注册对象ID(614)。为了穿过防火墙完成这一任务,激活模块124较佳地将向量放入称为“对象数据”的串中,然后较佳地创建一条HTTP消息来将对象数据传送至路由网络110。示意性例子如下POST/HTTP/1.1\r\nContent-Length<对象数据长度>\r\n\r\n<对象数据>
其中<对象数据>是对象ID列表。当路由网络110接收到这种HTTP请求时,它提取对象数据并将注册表125更新成指示客户机114已注册所标识的对象。
如果web浏览器120加载一个新的页面(616),或终止对象在初始页面上的显示,则与初始网页相关联的激活模块124较佳地终止客户机与路由网络110的连接(618)。本领域的技术人员将认识到这一终止618能与图6中所示的其它步骤异步地发生。因此,步骤616和618的位置只表示步骤序列中可能发生终止的一个可能的位置。
如果连接没有被终止,则激活模块124较佳地等待直至它从路由网络110接收到一条指定对象ID和对所标识的对象的属性的更新的消息(618)。在一个实施例中,此消息作为HTTP数据接收。在接收到该消息之后,激活模块124较佳地从HTTP数据中提取对象ID和更新(620)。然后,激活模块124更新所标识的对象的属性(622),或使对象如由消息所指定那样被更新。
较佳地重复接收消息618,提取数据620和更新对象622这一序列,直至新的页面被加载(616)或与路由网络110的连接被终止。虽然未在图6中示出,但在某些环境下,诸如当对于页面118的用户动作激活一个新的活对象时,激活模块124可以向路由网络110注册新的对象ID而不必首先下载并语法分析该新页面。在一个实施例中,如果新加载的页面包含活对象,则重复则如图6所述的下载激活模块124和更新对象的过程。在一个替换实施例中,激活模块124在客户机114处保持活动,因此,客户机不从路由网络110重新下载激活模块。相反,已存在的激活模块124对新页面执行启用活性的处理。
图7是示出根据本发明的一个实施例的路由网络110的较低层视图的框图。本领域的技术人员将认识到,存在许多替代方式来实现路由网络110的功能。图7示出代表向路由网络110提供消息的源的多个输入源(标记为710A-D),诸如信息提供者710A和动态内容提供者710B。图7还示出代表在任何给定的时刻与路由网络110通信的许多客户机的多个客户机(标记为712A-F)。
路由网络110较佳地在内部划分成一个或多个群集714。在图7中,路由网络110具有三个群集714A、714B、714C,虽然群集的数目能取决于网络的处理需求而变化。输入方全局负载平衡器716较佳地将消息从输入源710路由至群集714。类似地,客户机方全局负载平衡器718较佳地将连接请求从客户机712路由至群集714。负载平衡器716、718被设计成确保负载根据预定试探分布在群集714中。例如,负载可以在群集714中均匀地分布,或更强大的群集可以被分配大部分负载。在一个实施例中,一个负载平衡器执行输入方716和客户机方718负载平衡器的功能,并使用基于传统域名系统(DNS)的负载平衡。
群集714A所代表的每一群集714较佳地包含输入方群集负载平衡器720A和客户机方群集负载平衡器722A。群集负载平衡器720A、722A的功能与相应的全局负载平衡器716、718的功能类似之处在于输入方群集负载平衡器720A在一个或多个网关724A之间平衡和路由传入的消息,且客户机方群集负载平衡器722A在一个或多个节点726A和应用服务器728A之间平衡和路由传入的连接请求。
在一个实施例中,两个客户机方群集负载平衡器720A、722A的功能由一个组件提供。此单组件负载平衡器最初确定传入的请求是来自设法将消息发送至网关724A的输入源710、来自寻求到节点726A的连接的客户机712、还是来自寻求到应用服务器728A的连接的客户机。然后,负载平衡器在群集714中的网关724A、节点726A和应用服务器728A之间路由消息/连接请求。在一个实施例中,单组件负载平衡器提供第7层负载平衡(即,应用层上的负载平衡)。较佳地,对节点726A和应用服务器728A的负载平衡由同一组件执行,因为为了安全起见,大多数客户机web浏览器只允许应用程序(例如,激活模块124)透明地连接至从中下载应用程序的位置。
路由网络110的替换实施例可以组合全局负载平衡器716、718以及群集负载平衡器720A、722A,和/或将负载平衡器的功能合并到群集714的内部或外部的不同组件中。另外,替换实施例可以省略这些负载平衡器中的一个或多个。例如,使不同的群集714服务不同的顾客可以避免对全局负载平衡器716、718的需求。
群集714中的网关724A从输入源710接收消息,并将消息定向到合适的一个或多个节点726A。在一个实施例中,每一网关724A保持与每一群集714中的每一节点726的持久TCP连接,并将每一消息定向到每一节点。因此,虽然网关724A位于群集714A内部并通过群集的输入方负载平衡器720A接收连接,但网关的范围遍布整个路由网络110。这一广泛的范围允许消息从任何输入源到达任何客户机712。
在路由网络110的替换实施例中,每一网关724保持到同一群集714中的所有节点426的持久TCP连接和到其它群集的每一个中的至少一个网关的至少一个连接。此实施例减小了由每一网关724保持的同时TCP连接的数目。在另一替换实施例中,每一群集714还包括保持与其它群集的网关724的连接的监控器(gatekeeper)(图7中未示出)。网关724向监控器发送消息,监控器然后将消息分发到其它群集714的网关。
因为网关724不控制它从输入源710接收消息的速率,因此网关能比它能处理消息(即,将消息发送至节点)更快地接收消息。因此,每一网关724较佳地保持已接收到而尚未处理的消息的队列730以避免丢失消息。在一个实施例中,如果队列730变得太长,则网关724丢弃消息。在另一个实施例中,网关724使用分配给某些消息或输入源的优先级来确定丢弃哪些消息。
节点726较佳地将从网关724接收到的消息发送至已注册了由消息标识的对象ID的客户机712。如果没有一个客户机712已注册了由消息指定的对象ID,则节点较佳地忽略该消息。节点726较佳地保持注册表125的一个实例作为包含由连接至该节点的客户机712注册的对象ID的散列表732。在一个实施例中,散列表732将每一对象ID与对每一个已注册了该对象ID的客户机712包含一个条目的链表相关联。链表中的每一条目较佳地包含指向代表到相应客户机712的连接的套接字的指针。如本领域所公知的,通常称为“文件描述符”的到套接字的指针表示节点能写入以将消息发送至相应客户机的地址。较佳地,节点726每当客户机712注册对于对象的兴趣时将条目添加至散列表732和/或链表,并且当客户机从节点断开或指示它不再对特定对象感兴趣时从散列表和/或链接表中删除相应的条目。
本发明的替换实施例除了散列表732和链表以外或作为散列表732和链表的替代,还使用其它数据结构,和/或可以使用数据结构中的不同数据。例如,路由网络110的一个实施例具有每一群集714中的节点的分层结构。该分层结构中的不同节点可以处理从某一输入源210接收到的消息,或处理发送至不同客户机712的消息。在此实施例中,链表可以指向分层结构中较低的节点而不是指向引向客户机712的套接字。另一实施例没有节点分层结构,而是将某些节点分配给某些输入源210或客户机712。
每一节点714中的应用服务器728较佳地响应于客户机请求向客户机712提供激活模块124。另外,应用服务器728还提供为支持环境100可能需要或期望的任何其它模块。在路由网络的替换实施例中,单个应用服务器728满足所有客户机请求。此应用服务器728可以在某个群集714中或独立于群集。然而,此单应用服务器实施例较不可取,因为它缺少冗余度。
较佳地,路由网络110使用执行Linux操作系统(OS)的传统单处理器计算机系统。较佳地,路由网络110的每一组件由单独的专用计算机系统来实现,以使能分开优化组件。OS的输入/输出(I/O)功能较佳地通过使用诸如可以从加利福尼亚州的加州大学伯克利分校买到的NBIO等无阻塞OS包来增强。基于与节点728的连接是长久的假设,OS较佳地被配置成不为监视空闲连接分配资源。相反,较佳地将公知的/dev/poll补丁应用于OS以提供高级套接字轮询能力。
另外,OS中的TCP/IP栈较佳地被优化以快速输出消息。在一个实施例中,栈中的重发定时器从200ms降至50ms。此定时器确定栈等待关于发送的包已被接收到的确认(ack)多长时间。由于Linux内核实现重发定时器的方式,内核将不发送待决的出站包(即使已接收到确认),直至初始的重发定时器已期满。减小重发值最小化了此延迟效应。如果在重发定时器期满之前未接收到确认,则本发明的一个实施例增加受影响的TCP连接的重发值并重发未确认的包。另外,TCP/IP栈较佳地使用Nagle的算法功能来将若干个小的消息串接成一个较大的消息,从而减小由路由网络110发送的包的数目。
图8是示出由群集714中的节点726执行来执行从输入源接收的消息通过网关724的基于对象的路由的步骤的流程图。最初,节点726从输入源710接收消息(810)。节点726从该消息中提取对象ID(812)。另外,节点726可任选地变换该消息(814)以将其从输入源710所使用的格式转换成客户机712处的激活模块124所使用的格式。如上所述,在一个实施例中,输入源710所使用的消息格式与激活模块124所使用的消息格式相同。因此,在此实施例中,节点726不需要变化消息。在其中输入源710和激活模块124使用不同消息格式的替换实施例中,节点726较佳地变换该消息。节点726查找对应于所提取的对象和信息提供者ID的散列表条目(816)以确定已注册了由该消息引用的对象的客户机712的链表。最后,节点726将消息发送至注册的每一客户机712(818)。在一个替换实施例中,节点726与之前相反,可任选地在散列表中查找了已注册的客户机之后变换消息。此稍后阶段变换消息使节点726能根据已注册的客户机712的特定要求来变换消息。
使用动态内容路由网络来递送个人化内容图9示出根据一个实施例的页面118的例子。在一个实施例中,页面118可以是网页。在其它实施例中,页面118可以是由软件应用程序生成的任何页面,例如文字处理文档、电子表格、电子邮件等。如图所示,页面118包括多个部分902,例如市场数据部分902-1、新闻标题部分902-2、新近交易部分902-3和帐户余额部分902-4。虽然示出了这些部分,但是将理解,可以在页面118中设置任何数量的部分。
在一个实施例中,页面118可以由基于web的应用程序提供。路由网络110可以用于向大量客户机114递送股票和债券的购买价。每一客户机的页面118可以包括相同的部分902,但可以为每一用户个人化(例如不同)某个部分902的信息。例如,市场数据部分902-1可以对所有用户相同。然而,可以为每一用户个人化新近交易部分902-3和帐户余额部分902-4。例如,特定用户所做的新近交易和他们的帐户余额对用户是个人的,并且可以只被发送至该特定用户。因此,个人化信息可以是用户专用的任何信息。应理解,不同用户可以具有基本上相同的个人化信息;然而,每一用户的个人化信息将专用于每一用户。
在一个实施例中,当交易对给定用户停止时,应该只更新他/她的页面118(例如,在新近交易部分902-3下)。因此,应该只将个人化信息发送至该用户。
在一个实施例中,部分102的不同内容可以由不同的输入源210递送。例如,输入源210可以为新标题部分902-2提供内容,而另一输入源210可以为市场数据部分902-1提供内容。另外,实时数据可以由多个输入源210提供。输入源210可以位于远离路由网络110和客户机114的位置,或者在其它实施例中,可以是路由网络一部分。
发送至页面118的实时信息可以使用路由网络110来递送。在一个实施例中,每一股票904可以被分配一个ID,并且对该ID公布的消息可以被递送至每一用户。然后可以更新活对象。活对象可以是能被更新的任何数据。例如,活对象可以是包括在页面118的数据表示中的任何数据,诸如用于显示页面118的元素的软件代码、页面118上所显示的元素等。除了一般信息之外,还可以将个人化信息递送至新近交易部分902-3和帐户余额部分902-4。另外,可以对一个部分递送一般和个人信息的组合。例如,可以将一般和个人信息递送至新闻标题部分902-2。
在一个实施例中,为了向用户递送个人化消息,可以使用路由网络110的批处理能力。在此实施例中,每一用户可以被分配一个个人化ID。该个人化ID对该用户可以是唯一或专用的。如下所述,个人化ID还可以专用于一组用户而不仅仅专用于一个用户。个人化ID可以放在其页面118的数据表示中的任何位置(诸如页面118的软件代码的正文标签中)。然后,数据表示中的活对象可以与通用ID相关联。可以在页面118中找到活对象,并且可以为该活对象显示个人化信息。对于多个用户,通用ID可以相同。例如,基于web的交易应用程序的新近交易部分902-3可以用ID“recentTradesID(新近交易ID)”来标记。对每一用户的页面118,此ID可以相同,即使可以在那里为每一用户显示个人化信息。
在一个实施例中,输入源210用下列格式[personalizedID,(genericID#1,“个人化信息#1”),(genericID#2,“个人化信息#2”)]来提供批消息。personalizedID可以是对用户个人化的ID。genericID#1和genericID#2可以是对许多用户通用的ID。个人化信息#1和#2可以是能用于更新页面的任何信息。在一个例子中,用于帐户余额的消息可以在上述使用下列消息[personalizedID,(accountbalancesID,“余额信息”),...]的批消息中发送。此消息可以用于用用户的个人化信息来更新用户帐户的帐户余额。
路由网络110向已注册了个人化ID的用户递送批消息。当批消息到达与该用户相关联的客户机114时,它可以如同消息(genericID#1,“个人化信息#1”)和(genericID#2,“个人化信息#2”)被发送至客户机114那样来处理。个人化ID不可以在接收到消息之后使用。
在一个实施例中,客户机114的浏览器评估页面118的数据表示,并找出通用ID#1和通用ID#2的ID。页面118上的活对象可以用个人化信息#1和#2来更新。信息提供者不需要知道或了解用户页面118的结构。并且,因为更新消息可以不包括任何DOM信息,因此消息本身是简单的。例如,如果消息之一可以是(accountbalancesID,“余额信息”),则客户机的浏览器可以用由更新消息指定的信息(即,更新消息的“余额信息”)来更新帐户余额部分902-4。
因此,可以将多个用户的个人化信息发送至可用于为多个用户更新页面118上所包括的活对象的通用ID。个人化ID可以用于使用上述批消息技术向用户发送个人化信息。因为活对象可以具有相同的ID,因此输入源210能向用于活对象的同一通用ID递送多个个人化消息。这减少了可能使用的ID数。
图10示出根据一个实施例的使用路由网络110来递送个人化消息的系统1000。系统1000包括多个客户机114、路由网络110和输入源210。
输入源210能用路由网络110的批处理能力来发送个人化消息。如图所示,三个批消息消息#1、消息#2和消息#3可以由输入源210发送。消息#1、#2和#3可以被发送至三个不同的个人化ID个人化ID#1、个人化ID#2和个人化ID#3。批消息包括用recentTradeID和accountbalancesID(账户余额ID)的通用ID来发送消息。然而,个人化信息可以包括在不同用户的recentTradeID和accountbalancesID的ID的每一条消息中。
这三条消息可以从输入源210发送至路由网络110。路由网络110确定哪些客户机114已注册了个人化ID。如图所示,客户机114-1已注册了个人化ID#1,客户机114-2已注册了个人化ID#2,而客户机114-3已注册了个人化ID#3。因此,消息#1可以被发送至客户机114-1,因为客户机114-1(或用户)已注册了个人化ID#1。另外,消息#2和消息#3已被发送至客户机114-2和客户机114-3,因为114-2和客户机114-3已分别注册了对应的个人化ID#2和#3。然后,客户机114-1、114-2和114-3能用为recentTradeID和accountbalancesID的ID提供的信息来更新它们的页面118。如图所示,客户机114-1已显示了个人化交易信息#1和个人化余额信息#1,客户机114-2已显示了个人化交易信息#2和个人化余额信息#2,而客户机114-2已显示了个人化交易信息#3和个人化余额信息#3。
因此,这三条消息可以用通用ID recentTradeID的信息来发送。然而,使用成批的消息,消息可以被发送至三个不同的客户机114。因此,客户机114可以接收通用ID的个人化信息。
图11示出根据一个实施例的用于生成批消息的简化的流程图1100。在步骤1102中,输入源210确定用户的个人化信息。
在步骤1104中,可以确定个人化信息的个人化ID和通用ID。在一个实施例中,输入源210不需要知道在何处或如何向用户发送个人化信息。相反,输入源210可以将个人化信息与通用ID相关联,并生成可以发送至个人化ID的批消息。
在步骤1106中,批消息可以与个人化ID一起发送至路由网络110。批消息的格式中可以按如上所述的格式发送,或通过任何其它格式发送。因此,输入源210可以向个人化ID发送批消息。如何或在何处将消息路由至用户可以不需要由输入源210来确定。相反,路由网络110可以如下所述地路由批消息。
图12示出根据一个实施例的用于将批消息路由至客户机114的方法的简化的流程图1200。在步骤1202中,可以从输入源210接收批消息。在步骤1204中,可以确定客户机114已被注册了在批消息中找到的个人化ID。在一个实施例中,客户机114可以下载激活模块124并向路由网络110注册ID。以上对此过程进行了更详细的描述。当从个人化ID的输入源210接收到批消息时,在步骤1206中,路由网络110可以用该个人化ID将该批消息路由至客户机114。
图13示出根据一个实施例的用于在客户机11处处理批消息的方法的简化的流程图1300。在步骤1302中,可以从路由网络110接收批消息。可以根据与个人化ID相关联的偏好将批消息定向至个人化ID并路由该消息。例如,个人化ID可以与一IP地址相关联,并可以在对应于该IP地址的客户机114处接收消息。
在步骤1304中,可以确定批消息中的通用ID。此通用ID可以是可在多个用户的页面118上找到的相同ID。
在步骤1306中,可以确定通用ID的个人化信息。例如,个人化信息可以是个人化的信息,并且可以是客户机114专用的。
在步骤1308中,可以用使用该通用ID的个人化信息来更新活对象。例如,客户机114可以确定页面118上的可以与通用ID相关联的活对象。活对象的属性可以用个人化信息来更新。
例如,参见图9,可以在页面118的新近交易部分902-3中找到活对象。recentTradeID可以被包括在页面118的数据表示中。因此,客户机114显示对应于由页面118的数据表示中的recentTradeID的ID引用的位置的个人化信息。因此,路由网络110或输入源210可以不需要理解用户的页面118的结构或DOM。客户机114能如由recentTradeID的个人化信息所指定的那样更新新近交易部分902-3。
同一通用ID也可以用于其中某些消息可能是针对广大观众(例如,非个人)而其它消息可能是个人化的的情况,诸如在页面118的新闻标题部分902-2中。例如,输入源210可以使用诸如下列消息<NewsheadlineID>,<“新闻标题信息”>之类的通用ID向用户发送标准标题,而使用诸如[<personalizedID>,(<NewsheadlineID>,<“个人化新闻标题信息”>)]之类的批消息来发送个人化消息。第一条消息可以向任何订阅NewsheadlineID的ID的用户发送新闻标题信息,而第二条消息可以向与personalizedID相关联的用户发送个人化新闻标题信息。因此,同一通用ID可以用于发送可被发送给所有用户的标准标题。通过向用户的个人化ID发送批消息,通用ID还可以用作个人化ID。个人化标题可以被发送至与个人化ID相关联的用户。信息提供者210可以在标准标题和通用ID的个人化标题之间来回切换。
批消息还可以用于发送半个人化的消息,即对组而非个人的消息。正如个人用户可在他/她的页面118上的某处具有与个人化ID相关联的活对象一样,组的成员能具有位于其页面118上的组个人化ID的活对象。为了向一组用户发送其页面118中的新闻标题部分902-2内的消息,信息提供者214可以使用诸如[<groupPersonalizedID>,(<newsheadlineID>,<“个人化组标题信息”>)]等发送至组个人化ID的批消息。组中的所有(且仅仅)成员可以接收此消息,因为他们可以与组个人化ID相关联。此技术可以不要求组成员正在查看相同的页面。相反,组成员可以按他们期望的任何方式来显示newsheadlineID(新闻标题ID)的信息。
因此,批消息可以用于发送可以与通用ID相关联的个人化信息;然而,批消息可以被发送至专用于用户的个人化ID。因此,可以最小化由内容提供者214使用的ID的数目。然而,发送个人化消息的能力仍可以用个人化ID来保持。
在一个实施例中,“和/或”一词可以指示可以使用由“和/或”连接的元素的任何组合。例如,在使用“和/或”的短语中的两个词或表达可以指一个或另一个或两者。在一个实施例中,“基本上”一词可以指所指定的大部分而非全部,或所指定的全部。在一个实施例中,“能够”一词可以指被配置、适用于、能等等。例如,“能够执行动作”一词可以指一元素能执行该动作、可以被配置成执行该动作、和/或可以适用于执行该动作。
本公开的实施例可以用软件或硬件或两者的组合的控制逻辑的形式来实现。控制逻辑可以作为适用于指示信息处理设备执行在一个实施例中公开的一组步骤的多个指令存储在信息存储介质中。基于本文所提供的公开和示教,本领域的普通技术人员将理解实现本公开的其它方式和/或方法。
以上描述是示例性而非限制性的。本领域的技术人员在仔细审阅了本公开之后将清楚本公开的许多变化。因此,不应参照以上描述,而应参照所附权利要求书以及它们的整个范围或等效技术方案来确定本公开的范围。
权利要求
1.一种用客户机的个人化信息来动态地更新活对象的路由网络,所述路由网络包括节点,它能够从源接收标识第一标识符和第二标识符的第一消息,所述第一消息包含用于更新与所述第二标识符相关联的活对象的属性的个人化信息;标识专用于所述第一标识符的客户机;以及通过网络将第二消息路由至专用于所述第一标识符的客户机,所述第二消息标识所述第一标识符和第二标识符,所述第二消息包含用于更新与所述第二标识符相关联的活对象的属性的个人化信息。
2.如权利要求1所述的路由网络,其特征在于,所述客户机能够引起使用所述个人化信息对与所述第二标识符相关联的活对象的属性的更新。
3.如权利要求1所述的路由网络,其特征在于,所述第二标识符是对多个客户机通用的。
4.如权利要求1所述的路由网络,其特征在于,所述节点还能够从所述源接收标识第三标识符和第二标识符的第三消息,所述第三消息包含用于更新与所述第二标识符相关联的第二活对象的第二属性的个人化信息;标识专用于所述第三标识符的第二客户机;以及通过网络将第四消息路由至专用于所述第三标识符的第二客户机,所述第四消息标识所述第三标识符和第二标识符,所述第四消息包含用于更新与所述第二标识符相关联的第二活对象的第二属性的个人化信息。
5.如权利要求1所述的路由网络,其特征在于,所述节点能够使用所述第二标识符将所述个人化信息发送至一个或多个附加客户机,其中所述节点使用对每一附加客户机唯一的个人化标识符来路由所述个人化信息。
6.如权利要求1所述的路由网络,其特征在于,所述第一消息包括用于更新与一个或多个附加标识符相关联的一个或多个活对象的一个或多个属性的附加信息,其中所述第二消息标识所述一个或多个附加标识符,所述第二消息包括用于更新与一个或多个附加标识符相关联的一个或多个活对象的一个或多个属性的附加信息。
7.如权利要求6所述的路由网络,其特征在于,所述一个或多个附加标识符与专用于所述客户机的个人化内容或对多个客户机通用的内容相关联。
8.如权利要求1所述的路由网络,其特征在于,所述节点能够从所述客户机接收对所述第二标识符以及所述第一标识符的注册请求,以接收与所述第二标识符相关联的信息。
9.如权利要求1所述的路由网络,其特征在于,所述活对象被包括在所述客户机处的数据表示中。
10.如权利要求9所述的路由网络,其特征在于,所述数据表示包括网页或应用程序。
11.如权利要求1所述的路由网络,其特征在于,所述第一和第二消息基本相似。
12.一种用客户机的个人化信息来动态地更新活对象的方法,所述方法包括从源接收标识第一标识符和第二标识符的第一消息,所述第一消息包含用于更新与所述第二标识符相关联的活对象的属性的个人化信息;标识专用于所述第一标识符的客户机;以及通过网络将第二消息路由至专用于所述第一标识符的客户机,所述第二消息标识所述第一标识符和第二标识符,所述第二消息包含用于更新与所述第二标识符相关联的活对象的属性的个人化信息。
13.如权利要求12所述的方法,其特征在于,所述客户机能够引起使用所述个人化信息对与所述第二标识符相关联的活对象的属性的更新。
14.如权利要求12所述的方法,其特征在于,所述第二标识符是对多个客户机通用的。
15.如权利要求12所述的方法,其特征在于,还包括从所述源接收标识第三标识符和第二标识符的第三消息,所述第三消息包含用于更新与所述第二标识符相关联的第二活对象的第二属性的个人化信息;标识专用于所述第三标识符的第二客户机;以及通过网络将第四消息路由至专用于所述第三标识符的第二客户机,所述第四消息标识所述第三标识符和第二标识符,所述第四消息包含用于更新与所述第二标识符相关联的第二活对象的第二属性的个人化信息。
16.如权利要求12所述的方法,其特征在于,使用所述第二标识符将所述个人化信息发送至一个或多个附加客户机,其中使用对每一附加客户机唯一的个人化标识符来路由所述个人化信息。
17.如权利要求12所述的方法,其特征在于,所述第一消息包括用于更新与一个或多个附加标识符相关联的一个或多个活对象的一个或多个属性的附加信息,其中所述第二消息标识所述一个或多个附加标识符,所述第二消息包括用于更新与一个或多个附加标识符相关联的一个或多个活对象的一个或多个属性的附加信息。
18.如权利要求17所述的路由网络,其特征在于,所述一个或多个附加标识符与专用于所述客户机的个人化内容或对多个客户机通用的内容相关联。
19.如权利要求12所述的方法,其特征在于,还包括从所述客户机接收对所述第二标识符以及所述第一标识符的注册请求,以接收与所述第二标识符相关联的信息。
20.如权利要求12所述的方法,其特征在于,所述活对象被包括在所述客户机处的数据表示中。
21.如权利要求20所述的方法,其特征在于,所述数据表示包括网页或应用程序。
22.如权利要求12所述的方法,其特征在于,所述第一和第二消息基本相似。
23.一种使用路由网络来用客户机的个人化内容动态地更新活对象的方法,所述方法包括从第一客户机接收对第一个人化标识符和通用标识符的第一注册请求;从第二客户机接收对第二个人化标识符和所述通用标识符的第二注册请求;确定多个客户机中的第一客户机的第一个人化信息;将所述第一个人化信息与所述通用标识符相关联;确定多个客户机中的第二客户机的第二个人化信息;将所述第二个人化信息与所述通用标识符相关联;生成包括所述第一个人化标识符和所述通用标识符的第一消息,所述第一消息包括与所述通用标识符相关联的所述第一个人化信息;生成包括所述第二个人化标识符和所述通用标识符的第二消息,所述第二消息包括与所述通用标识符相关联的所述第二个人化信息;使用所述第一个人化标识符将所述第一消息发送至所述第一客户机,其中所述第一客户机能够引起使用所述第一个人化信息对与所述通用标识符相关联的第一活对象的属性的更新;以及使用所述第二个人化标识符将所述第二消息发送至所述第二客户机,其中所述第二客户机能够引起使用所述第二个人化信息对与所述通用标识符相关联的第二活对象的属性的更新。
24.如权利要求23所述的方法,其特征在于,所述第一消息和所述第二消息通过所述路由网络来发送,其中所述路由网络能够确定与所述第一个人化标识符相关联的第一客户机并将所述第一消息路由至所述第一客户机,其中所述路由网络能够确定与所述第二个人化标识符相关联的第二客户机并将所述第二消息路由至所述第二客户机。
25.一种能够用个人化内容来动态地更新活对象的客户机,所述客户机包括能够从路由网络接收标识第一标识符和第二标识符的消息的逻辑,所述第一消息包含用于更新与所述第二标识符相关联的活对象的属性的个人化信息,所述第一标识符专用于所述客户机,而所述第二标识符对所述客户机及一个或多个附加客户机是通用的;能够标识用于更新与所述第二标识符相关联的活对象的属性的个人化信息的逻辑;以及能够引起使用所述个人化信息对所述活对象的属性的更新的逻辑。
26.如权利要求25所述的客户机,其特征在于,所述消息包括用于更新与一个或多个附加客户机相关联的一个或多个活对象的一个或多个属性的附加信息。
27.如权利要求25所述的客户机,其特征在于,还包括能够注册所述第二标识符以及所述第一标识符以接收与所述第二标识符相关联的信息的逻辑。
28.如权利要求25所述的客户机,其特征在于,所述第一和第二消息基本相似。
29.如权利要求25所述的客户机,其特征在于,所述活对象被包括在所述客户机处的数据表示中。
30.如权利要求29所述的客户机,其特征在于,所述数据表示包括网页或应用程序。
全文摘要
提供了一种用客户机的个人化信息来动态地更新活对象的技术。该技术包括从源接收包括第一标识符和第二标识符的第一消息。第一标识符可以对客户机是唯一的。第二标识符可以对许多客户机是通用的。第一消息包含用于更新与第二标识符相关联的活对象的属性的个人化信息。可以标识专用于第一标识符的客户机。第二消息然后可通过网络路由至客户机。第二消息可包括第一标识符和第二标识符,并且还可以包含用于更新与第二标识符相关联的活对象的属性的信息。客户机可以接收第二消息,并且能够引起对与第二标识符相关联的活对象的属性的更新。
文档编号G06F17/30GK101057476SQ200580027962
公开日2007年10月17日 申请日期2005年8月15日 优先权日2004年8月17日
发明者K·E·图米哈特 申请人:肖分析有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1