域间通信的制作方法

文档序号:6477861阅读:141来源:国知局

专利名称::域间通信的制作方法
技术领域
:本文档讨论用于在网页中的诸如与不同域相关联的iframe之间的通信的机制和技术。
背景技术
:因特网用户进行的许多搜索涉及一些地理组件。搜索本身可能包括地理信息,诸如搜索地图和驾驶路线指引的地址。搜索还可能不明显地要求地理结果,诸如当搜索包括具有物理位置的企业的名称时。这样的搜索可以被诸如GoogleM即s的信息提供者服务接收和/或由该信息提供者服务传递结果。应用编程接口(API)可以允许第三方扩展地理信息提供者服务的功能。例如,使用API,程序员已从公寓和住宅收录获得数据并已创建诸如用GoogleM即s(例如http:〃www.housingm即s.com/)在地图上示出那些收录的应用。
发明内容本文档描述可以用来提供与可以涉及来自不同域的组件的web应用相交互的机制和技术,诸如提供来自诸如GoogleM即s的服务的交互式地图。例如,可以将采取小组件形式的可移植程序模块与主web应用页面集成并且其可以与主页面通信,其中从一个域托管(hostedfromonedomain)所述小组件并从不同的域托管所述主应用。即使web浏览器可能进行限制域间通信的努力,通信也可以发生。在一个实施方式中,公开了一种用于在web浏览器中执行域间通信的计算机实现的方法。该方法包括在与除第一域之外的一个或多个域相关联的路由器处接收来自第一域第一数据,在该路由器处识别用于接收与所接收的数据相关联的数据的一个或多个域,并向所述一个或多个域发送与所接收的数据相关联的第二数据。所述第二数据可以包括第一数据,且可以将第二数据从所述路由器发送到所述一个或多个域。此外,可以由框架来限定每个所述第一域和除第一域之外的一个或多个域,且可以由框架来限定所述路由器。所述框架可以包括iframe元素。在一个方面,所述一个或多个域的每一个可以实现可移植程序模块,诸如小组件。所述方法还可以包括在所述路由器处接收来自所述一个或多个域中的一个的第三数据,并将第三数据提供给第一域。此外,所述方法可以包括将所述第三数据提供给所述一个或多个域中的至少一些。所述方法还可以包括从与所述第一域相关联的路由器向与除第一域之外的一个或多个域相关联的路由器发送第一数据。此外,所述方法包括在与第一域相关联的路由器处接收多组数据并在将该多组数据发送到与所述一个或多个域相关联的路由器之前将该多组数据组合成单个分组。所述方法还可以包括在发送分组之前将所述多组数据排序。在另一个实施方式中,公开了一种计算机实现的系统。该系统包括显示在网页上并在与web应用相关联的第一域中运行的第一应用、显示在所述网页上并在与所述web应用相关联的一个或多个其它域中运行的一个或多个其它应用、以及对应于第一应用程序的用于从第一应用接收数据并分发接收到的数据以供所述一个或多个其它应用接收的第一中继。所述系统还可以包括对应于所述一个或多个其它应用的用于从所述第一中继接收数据并将该数据分发到所述一个或多个应用的第二中继。所述第一中继可以被配置为从所述第二中继接收数据并将接收到的数据提供给所述第一应用。在一方面,所述第一应用和所述一个或多个其它应用被配置为显示在公共网页上。而且,所述第一中继在将单个包发送到第二中继之前将多个数据组打包成单个包。所述系统还可以包括多个框架,其中,所述多个框架中的一个框架限定第一应用的显示,且所述多个框架中的其它框架限定所述一个或多个其它应用的显示。所述第一应用可以包括地图应用,且所述一个或多个其它应用可以包括小组件。在又一实施方式中,公开了一种计算机实现的系统。该系统包括显示在网页上并在与web应用相关联的第一域中运行的第一应用、显示在所述网页上并在与所述web应用相关联的一个或多个其它域中运行的一个或多个其它应用、以及用于在所述第一应用与所述一个或多个其它应用之间通信数据的装置。在以下附图和说明中阐述了一个或多个实施例的细节。通过本说明和附图及通过权利要求,其它特征、目的、以及优点将变得显而易见。图1A是与两个可移植程序模块相交互的地图绘制应用的示例性显示。图1B示出来自图1A的显示的项目。图2示出用于使地图绘制应用与两个可移植程序模块协调的系统和过程的概念图。图3是用于将可移植程序模块与地图绘制系统集成的示例性系统的示意图。图4A和4B是用于操作基于地图绘制的可移植程序模块的过程的流程图。图5A和5B是用于协调可移植程序模块和地图绘制应用的操作的过程的泳道图。图6是用于协调web浏览器所显示的域之间的通信的过程的流程图。图7是用于在浏览器显示的网页上的域之间发送数据的过程的泳道图。图8是示出与两个可移植程序模块相协调地运行的地图应用的示例的截屏。图9示出包括多个可移植程序模块和地图绘制应用的容器文档的示例性布局。图10是用于动态生成地图、广告及其它项目的示例性系统的示意图。图11示出可以用来实现此处所描述的技术的计算机设备和移动计算机设备的示例。在各附图中相同的附图标记指示相同的元素。具体实施例方式图1A是与两个可移植程序模块相交互的地图绘制应用的示例性显示100。一般地,显示100示出用于各种滑雪场的预测高温和雪基(snowbase)的组合。在本示例中,一个第三方已开发出小组件,因为其与地图绘制应用相交互而在此处称为"mapplet(地图小组件)",其访问公共天气数据以示出预报图。另一第三方已开发出从其它公共源访问雪基5信息的m即plet。在本示例中,在不存在这样的集成显示的情况下,可能需要用户分立地运行两个应用以便例如识别具有良好基底的多个小屋(lodge),然后记住那些小屋,并搜索那些小屋处的温度。在本示例中,相反,以组合的方式提供可能已由访问诸如GoogleM即s的地图绘制应用的混合应用(mashups)提供的每个信息片段。此外,组合的信息被显示在地图页面本身上并因此由该地图页面本身来管理。在某些实施方式中,这样的方法可以具有一个或多个以下优点。各种模块可以与地图绘制应用相关联,并可以被访问与地图绘制应用相关联的网页的用户访问。这样的用户可以搜索模块并选择解决其特定需要的模块,就像Google个性化主页或iGoogle的用户能够识别供在个性化页面上使用的普通模块一样。还可以将地图绘制模块与和地图无关的其它模块一起合并到个性化主页。此外,可以将这样的地图绘制模块自动地提供为搜索查询的结果,其中对搜索结果中所示出的控件的选择使得显示包括与搜索结果相关的数据的地图。此外,这样的模块可以包括事务处理能力。例如,对旅馆的搜索可以产生指向用于在地图上显示相关旅馆搜索结果的模块的搜索结果。对地图上的特定旅馆的选择可以使关于该旅馆的信息(例如房价和可用性)被传递到模块,以便用户可以通过该模块来预订房间。还可以以用户所选择的各种方式将多个模块的输出组合在单个地图上。以这种方式,用户可以将对于他们重要的多组数据组合在单个图形表示中。这样的组合可以利用地理相关内容的各种源,诸如企业搜索、驾驶路线指引、个人地址簿、KML(Keyhole(锁眼)标记语言)文件、运输信息、及其它这样的信息源。这样的组合可以称为混合应用的混合项目(mashup)。参照图1A,显示100以被实现为小组件或m即plet的两个可移植程序模块106、108的形式示出混合应用的混合项目,其影响来自地图绘制应用的地图112的显示。可以通过搜索控件102来广泛地控制显示100,用户可以向所述搜索控件102中输入地理相关的搜索查询。"搜索地图(searchthem即)"标签102a被示为被选择用于控件102,使得搜索查询将被应用于一般地理位置信息的语料库。还可以选择"查找企业(findbusiness)"标签102b,在这种情况下,将使提交的查询与企业名称的语料库相匹配,且结果将包括地图112上的匹配企业的特定位置。"获得路线指引(getdirections)"标签102c在被选择时使以熟悉的方式生成从一个位置到另一位置、诸如从存储在用户简档中的默认位置到输入的位置的路线指引。地图绘制控制区域包括标签区域104、以"高温"m即plet形式的模块106、以"基线"m即plet形式的模块108和以"距离测量器"小组件形式的崩塌模块110。标签区域104包括搜索结果标签,在被选择时使得显示搜索查询的地理结果。此外,标签区域104包括MyMaps标签,在被选择时使得显示多个与用户相关的地图。例如,用户可以具有显示他或她家乡周围的区域的地图。此外,用户可能已保存显示一个区域中的所有WhiteCastle饭店的地图,其中可以提供文本输入框(未示出)以接收用于识别适当区域的邮政编码或其它类似信息(或者可以从在搜索控件102中输入的信息接收区域)。MyM即s显示可以导致显示地图以及已被用户与那些地图相关联的m即plet。mapplet标签被示为当前在标签区域104中被选择。mapplet标签表示可以包含6实现诸如以m即plet形式的可移植程序模块的一个或多个iframe的框架。模块106是访问天气信息的数据库的扩展模块,所述数据库包含遍布感兴趣区域、诸如遍布美国的预报高温。所述温度是地理相关的,因此可以被显示在诸如地图112的地图上。两个控件被示为已被模块106生成,且对其的选择可以使得检索当天或下一天的温度。对控件的选择可以如下文更详细地描述的那样使得从数据源检索温度数据并然后将其提交给生成用于地图112的代码的地图服务器。模块108示出"基线"小组件,其获得关于各种滑雪胜地处的雪的"基底"厚度的信息。模块108然后将该信息传递至与地图112相关联的引擎,使得该基底信息被绘制在地图112上的适当地理位置处。此外,模块110被以压縮形式示出,并且当用户希望使用该模块时,可以被扩展。模块iio被术语化为"距离测量器",并且当被调用时,可以与地图112相交互以便感测用户对地图112上的点的选择,且然后可以计算两个所选点之间的距离。还可以提供其它模块,且用户可以从模块的中央信息交换站进行访问,就像用户可以从iGoogle访问一般小组件一样。地图112示出通过使用其它图示组件而生成的结果。地图112包括根据用户选择而定位和确定尺寸的标准地图,诸如以由用户在搜索控件102中输入的邮政编码为中心。作为地图112的一部分被覆盖的是温度114和基底指示符116。温度114可以是被模块106传递至诸如maps,google,com的地图绘制应用的多个不同地理相关温度之一。同样地,基底指示符116可以是被模块108传递至地图绘制应用的多个不同地理相关指示符之一。通过使地图绘制应用一齐对来自模块106和模块108两者的提交进行响应,可以向用户呈现否则在单个便利的显示中是不可用的两个不同信息片段。图1B示出来自图1A的显示的项目,作为在图1A中的实际显示的底层的一般对象。这里为了明了而示出用于示出模块和地图输出的网页的特定实现的各种元件,但特定元件的选择并不意味着具有限制性。该模块被实现为在嵌入在地图HTML页面120中的iframe内的代码,在这里称为m即plet存根(stub)。例如,m即plet存根122可以表示用于实现图1A中的控件106的代码。同样地,m即plet存根123可以表示用于实现图1A中的控件108的代码。用来托管ma卯let的iframe内的HTML文档被称为m即plet页面,且可以包括例如HTML、CSS、以及脚本代码。m即plet存根122、123还可以包括用于与运行用于生成地图120的应用的服务器通信的m即pletAPI(以及相关库)。作为特定形式的可移植程序模块(即执行定义的功能并能够被插入在多种环境中、诸如各种网页上的各种iframe中的程序)的每个m即plet可以包括元数据属性、具有默认值的用户偏好、HTML文本、以及脚本代码。脚本允许m即plet实现行为和功能。所述代码在托管在与用于地图应用的域不同的域上的iframe中运行,并使用跨框架或域间调用与地图应用通信。代码按框架的这样分离施加一定水平的安全性,因为将mapplet代码操纵地图限制至提供的API的范围,而不是达到DOMAPI的整个范围。这样的限制一般由执行代码的浏览器施加。如下文更详细地解释的,还可以为mapplet代码提供对外部数据馈送的访问。HTTP代理服务可以提供这样的访问,并且该代理在某些情况下可以缓存数据或执行与后端的事务。可以使用用于在这种情况下实现代理的标准机制。在某些实施方式中,mapplet代码还可以访问特定于用户的数据,诸如存储在本地客户端上或中央数据库处的用户地址簿。还可以诸如通过要求只有在已向用户明确提供对服务的这样访问之后才被许可的承载标识来提供用于访问这样信息的安全。这样的实施方式可以允许例如在地图上生成驾驶路线指引(例如从用户的地址到朋友家)时自动地或半自动地访问地址信息。此外,mapplet代码可以访问诸如Google基础数据库的其他外部数据提供者。HTML页面120在iframe外运行的部分被称为mapplet主机126。在此区域中的地图应用中活动的对象称为主机对象,并且其在m即plet存根中的代理可以称为存根代理。主机对象可以根据由m即plet存根提供的信息来生成,且可以具有可以被m即plet存根跟踪的行为。在图中,例如,主机对象128、130每个可以表示被m即plet存根122提供给主机126的具有地理相关信息的温度。可以通过适当规定的库来支持存根和主机功能。在某些实施方式中,诸如当m即plet代码来自信任源时,可以从与地图绘制应用本身相同的域执行mapplet代码。这样的实施方式可以允许更快的、同步的、且更高效的操作。在这样的实施方式中与地图绘制应用的交互可以经由诸如GoogleMapsAPI的用于地图绘制应用的标准API发生。图2示出用于使地图绘制应用与两个可移植程序模块协调的系统200和过程的概念图。在图示的示例中,系统100包括客户端设备202、以及提供用于客户端设备202的操作的数据的多个服务器204、210、212、和214。通常,系统200被配置为提供类似于在图1A中说明的功能,通过使用可移植程序模块(例如小组件/mapplet)与地图绘制应用相交互。结果,客户端设备202的用户可以选择某些模块用于提供与地图相关的定制结果,且可以然后查看被格式化为用于在地图或多个地图上显示的数据。客户端设备202可以提供有web浏览器或其它因特网相关应用。所述web浏览器可以执行其从其可以进行请求的各种服务器获得的标记代码或诸如JavaScript代码的其它类似代码。例如,可移植代码服务器210可以提供用于浏览器的标记代码,包括用于与客户端设备202的用户相关联的模块的代码。例如,用户可以具有与可移植代码服务器204相关联的帐户,且可以被代码服务器204识别(例如经由服务器侧信息或经由诸如cookie的客户端侧信息),且提供有用户先前配置的MyM即s的列表。他们然后可以选择地图中的一个,且可以具有用于在其浏览器上执行的与传递的地图相关联的代码。例如,可以传递标记代码,该标记代码可以包括各种形式的HTML代码,诸如用于在客户端设备202的显示器上生成可移植程序模块(例如m即plet)的代码。可移植程序模块可以是容器文档所表示的网页上的iframe的一部分。通常,iframe是可以使用iframe元件来嵌入在另一HTML文档中的HTML文档。可以在iframe周围生成其中被嵌入iframe的文档,在本示例中为容器文档,同时仍然生成iframe本身。可以由可移植代码服务器210或从其它源提供用于容器文档和用于iframe的代码。用于在网页中提供iframe的示例性HTML代码包括以下内容〈html〉...〈iframesrc=〃http://portablecode.com"height=〃100〃width=〃200〃frameborder=〃0〃scrolling=〃no">〈/iframe>〈/html>如该代码所示出的,iframe元件可以引用将被插入在iframe中的文档、iframe的尺度、以及在iframe内是否应允许滚动。可以用另一文档来取代iframe中的文档,或者可以通过使用HTML锚的"目标"属性或通过诸如在AJAX实施方式中使用JavaScript来在不刷新容器文档(例如周围页面)的情况下对其进行修改或刷新。例如,可以通过对文档的DOM树进行编辑来生成类似显示。由客户端设备202获得的可移植程序模块可以与容器文档、与可移植代码服务器、以及与其它服务器204、212、和214通信。地图服务器204接收来自客户端设备202的请求并一般以可以是2D地图、3D地图或其它形式的地图的形式提供图形地理信息。此外,地图服务器204可以从客户端设备202或从其它源接收地理相关数据,且可以将该信息与地图上的位置相关,并以使得客户端设备202可以在地图上显示数据的方式返回该信息。如下文更详细地解释的,在客户端设备202上执行的代码(例如由可移植代码服务器210提供)与地图服务器204之间的通信可以根据发布的应用编程接口(API)而发生。广告服务器214还可以接收来自在客户端设备202上运行的代码的请求,且可以生成定向到该请求的广告。例如,对特定区域中的信息的请求除生成用于该区域的地图之外还可以使得广告服务器214生成与该区域相关联的广告。还可以将广告定向到不仅仅是请求的地理位置。例如,如果请求是针对"油炸圈饼02128",则广告可以被定向到例如"油炸圈饼"、"早餐"或"食物"的概念,且地理位置可以定向到波士顿区域。可以将所生成的广告作为文本广告呈现在屏幕边缘周围,或者可以将其合并到呈现给用户的地图中。在将广告呈现在地图中的情况下,可以由广告服务器214以适当的格式向地图服务器204或直接向客户端202发送结果。结果,如果已通过所述系统而选择对DunkinDonuts进行广告,则可以在地图上显示各种DunkinDonuts商店的徽标作为搜索结果的一部分。广告服务器214、可移植代码服务器210、以及地图服务器204在图2中被示为附接到公共网络208,该公共网络208与诸如因特网的中心网络206分离。网络208可以指示由诸如Google的单个信息提供者来操作服务器204、210、以及214。虽然为了明了起见而被示为分立的各个服务器,但可以以各种方式来提供在此所讨论的各种服务,虽然一般出于效率原因而由与广告服务分立的子系统来提供地图绘制服务,并且出于效率和安全目的可以在与用于地图服务的域分离的域上提供可移植代码的派发(例如,使得由第三方提交的可移植程序模块不会除通过标准API之外轻易地影响地图绘制应用)。可移植代码服务器210被示为派发来自与广告和地图相同的组织的代码。然而,在各种实施方式中,客户端设备202可以从第三方供应商获得代码,特别是用于可移植程序模块的代码。在这样的情况下,可以从地图服务器204接收地图信息,且作为用户网页的一部分的代码可以(例如使用上文说明的iframe定义)指向用于将在可移植程序模块中执行的代码的其它位置。系统200还可以被实现为允许只使用来自供应地图绘制应用的组织的可移植程序模块代码(即使其来自不同的域),使得代码的完整性可以是轻易验证和维护的模式。图2中的带字母的箭头示出由系统200中的组件执行的一组操作的示例。如箭头A所示,客户端设备202最初诸如通过使HTTP请求指向maps,google,com来请求来自地图服务器204的网页(例如通过用户选择MyM即s链接)。目标组织(在本示例中为Google公司)可以向地图服务器以及向一个或多个其它服务器提供请求。例如,该组织可以诸如通过查询存储在客户端设备202上的cookie或使会话ID与登录用户匹配来将客户端设备202的用户识别为该组织的注册成员。该组织然后可以将用户的请求路由到可移植代码服务器210,可移植代码服务器210可以确定用户具有与其个性化地图页面或个性化网页相关联的一个或多个可移植程序模块。地图服务器204还可以最初传递用于主页面的代码,且该代码可以诸如在页面上的iframe的定义中参考可移植代码服务器210。如箭头Bl(用于地图数据)和B2(用于可移植程序模块代码)所示,服务器204、210然后可以传递将被地图页面代码中的iframe引用的地图页面代码和可移植程序模块代码。客户端设备202然后可以诸如通过显示以与用户相关联的"家"位置为中心的空白地图来显示地图页面,该地图页面可以包括显示在地图上的默认值。所述可移植程序模块可以诸如通过下文所讨论的域间通信将初始化值传递到主地图页面。地图页面上的可移植程序模块然后可以被用户操作以识别将被收集以显示在地图上的数据。例如,在房地产模块中,用户可以选择要显示的家的类型(例如附联或单独的家)且还可以诸如从下拉框中选择价格范围。在选择适当的参数之后,用户可以选择提交参数,这可以使得由相关可移植程序模块中的代码生成请求,其中该请求指向地理相关数据服务器212(箭头C)。地理相关数据服务器212可以包含所有种类的数据,且当数据与地理标识符相关联时可以特别相关。例如,在寻找房地产收录的情况下,数据库中的家的地址可以表示该收录的地理相关信息。与收录相关的数据然后可以被返回到请求它的模块(箭头D)且然后可以被提交给地图服务器204以便进行解释并添加到显示给用户的地图(箭头E)。在某些实施方式中,还可以将该数据从地理相关数据服务器212直接提供给地图服务器204或类似服务器,而不通过客户端设备202上的可移植程序模块传递。当在地图服务器204处被接收到时,该信息可能没有被适当地地理编码。例如,该信息可能被格式化为描述街道地址。地图服务器204因此可以最初诸如通过将街道地址转换成纬度/经度对来将接收到的信息转换成地理编码信息。然后可以相对于地图来对经地理编码的信息进行定位,并且可以相应地将每个信息片段格式化。然后可以将该信息传递到客户端设备202以便用地图进行显示或覆盖在地图上(箭头Fl)。在某些实施方式中,还可以由系统200来提供定向广告。可以基于包含在地理相关数据中的词或概念来选择那些广告,所述地理相关数据可以最初与将在地图上被显示给用户的地理区域的指示一起被发送到广告服务器214。广告服务器214然后可以选择指向特定概念和地理区域的适当广告,且可以派发那些广告,包括通过用地理编码数据派发他们,使得可以将广告放置在地图上的适当位置处。例如,广告服务器214可以将特定的饭店连锁识别为与用户相关,可以将饭店连锁中的各种店的地址转换成地理编码格式(例如纬度/经度),且可以将广告直接或间接地通过地图服务器204传递到客户端设备202,使得广告被格式化为被客户端设备202接收并显示在地图上。用于选择广告的关键字还可以与进行信息调用的特定模块相关联。例如,可以将模块编程为随请求包括特定关键字,使得可以使用该关键字来选择定向广告。例如,用于查看待售房屋的示例性模块可以随其提交包括诸如"房屋"的术语,使得可以向用户派发用于建筑物供应和改建服务的广告。而且,可以在诸如广告服务器214的服务器处对用于模块10的关键字进行存储,使得只需将用于特定模块的标识符提供给广告服务器,且广告服务器然后可以查找用于该模块的相应术语。在加载与容器文档相关联的页面的同时,从客户端设备上的容器文档收集信息、将该信息提交给地图服务器204和地理相关数据服务器212、以及派发广告可以全部发生,在适当实施方式中,至少部分地发生。这样,用户可以在几乎访问和加载相关联网页后立即观看由可移植程序模块创建的显示,诸如示出与可移植程序模块相关联的数据的特定地图。可移植程序模块还可以提供有用于访问信息以便随客户端设备202上的网页一起显示的附加功能。例如,由可移植程序模块进行的调用可以是条件的或迭代的。作为条件调用的一个示例,只有当已经以特定方式设置了由模块生成的控件时,才可以向地理相关数据服务器212提交请求。应理解,还可以由可移植程序模块来实现由诸如JavaScript和JavaFX的语言提供的各种功能,从而实现丰富的交互阵列。由可移植程序模块产生的显示可以包括允许用户与结果相交互的诸如超链接的元数据。例如,可以使显示关于地图的某些信息的文本与超链接相关联,对该超链接的选择将用户引导至与该项目相关联的网页。此外,"浮置"在地图上提供的项目上可以导致以传统的方式显示关于该项目的附加信息。图3是用于将可移植程序模块与地图绘制系统集成的示例性系统300的示意图。通常,系统300包括客户端设备302,其通过诸如因特网的网络304与提供用于在客户端设备302上生成地图的数据的多个服务器通信。更详细地示出的是客户端设备302上的特定结构,该特定结构是与由web浏览器生成的网页的各部分相关联的不同域的一部分。所示的示例示出用于允许在浏览器上的各种域之间进行通信的布置。通常,这样的通信是被阻止的且困难的,因为浏览器包括防止可以被一个软件用来入侵或接管其它软件的域间通信的各种特征。参照图3,客户端设备302可以向数据服务器310提交请求以获得服从地图绘制应用的数据,诸如与可以用来推断纬度/经度位置的信息相关联的数据。此外,客户端设备302可以向地图服务器308提交请求,且来自客户端设备302的请求也可以以类似于图2所示的方式被路由到广告服务器306。在客户端设备302中概念性地示出的是用于生成地图绘制相关网页的多个软件组件。该组件是页面的各个部分或用于实现页面的代码的部分。在本示例中,以允许在生成容器文档的组件与包括和容器文档一起显示的可移植程序模块的组件之间的域间通信的方式来实现所述组件。在本特定示例中,容器文档是诸如www.google,com的地图页面,而可移植程序模块是在地图页面上生成并与所显示的地图相交互的小组件,在这里称为mapplet。通常,通过使用不可见的iframe来进行通信,所述不可见的iframe充当用于从应用发送到一个或多个模块且反之亦然的信息的中继。客户端设备302中的每个实框表示主地图页面上的iframe,而虚框表示地图应用324的状态。模块之间的通信一般使用具有短暂连接的远程过程调用(RPC),其中期待响应的请求提供期待用来接收响应的细节(例如源iframe、要使用的中继url)。地图路由器322管理与地图应用324的通信,且模块路由器318管理与各种模块11的通信。主窗口为每个路由器创建一个iframe。一个路由器iframe与页面上将相互通信的iframe的每个域相关联。每个路由器iframe被指派名称和ID,且其src属性被设置为路由器所代理的主机上的路由器html文件的位置。ID是可以用来对路由器进行定位的标识符,并且在本示例中根据路由器的主机名而唯一地导出。例如,托管在域gmodules.com上的m即plet可以采用诸如以下方式的iframe:〈iframeid=〃gmodules.com"name=〃gmodules.com"src=〃http://gmodules.com/router.html>〈/iframe〉通过延迟路由器到页面中的插入直至已知将需要它们为止(例如当用户选择"m即plet"标签时),可以经由DOM操作来创建路由器。路由器的创建一般也是异步的,因为每个路由器的创建一般与其它路由器的创建相独立。结果,创建路由器的各种过程在某些情况下可以进入竞争状态,因为一个路由器可能在另一个路由器之前准备好进行通信。为了帮助协调路由器交互,主页面为每个域创建路由器,附接加载句柄(JavaScript函数)以观察每个路由器何时已加载,并在加载m即pletiframe之前等到所有路由器已完成加载。用创建的路由器,每个iframe然后向路由器注册其本身,使得路由器可以适当地向iframe转发分组。当主页面创建m即pletiframe(或可能设法使用通信系统的另一框架)时,其定位对应于该域的路由器并向将与该m即pletiframe通信的每个路由器注册该mappletiframe的ID。这样做,其可以(1)根据该iframe的src计算mappletiframe的主机名,(2)形成唯一路由器/id名,(3)通过调用"window,top.frames[nameOfRouter]"来定位该路由器,(4)通过调用"router.registerIframe(iframelD,relayUrl)"来注册mappletiframe。在本不例中,iframeID是mappletiframe的ID,且relayUrl是用于mapplet的域的中继iframe的url。中继iframe是用来经由用于该mapplet的域从其它iframe向目标ma卯letiframe发送数据分组的机制。每个路由器318、322可以分别提供有相关联的分组器318a、322a以便将被发送到公共域的小分组合并且在目标路由器处将分组分裂。分组可以包括来自各种iframe进行的请求的数据组,且不需要采取任何特定形式。路由器318、322在分组到达时从相关联的地图应用324或从相关联的mapplet312-316中的一个或多个接收分组。接收到的分组可以包括来自或用于多个源的数据组。例如,模块路由器318可以从模块312-316接收数据且地图路由器322可以从地图应用接收用于模块312-316的数据。这样的多分组情况在特定的实施方式中可能是常见的。例如,用于在地图上创建标记和用于将其添加到地图的代码可以要求一个分组制作标记并要求另一个分组将其添加到地图。在这样的实施方式中,向地图添加十个标记(例如以表示十个搜索结果)将需要二十个分组。作为另一示例,模块同时监听诸如移动事件的结束的地图事件可能是常见的。在这样的情况下,由地图发送的分组将被地图路由器322合并且被模块路由器318广播到模块312-316。对于从地图路由器322到模块路由器318的传输,分组器322a将接收到的分组组合且路由器322跨越域边界将其发送。创建标记的连续化命令可以如下101&-33.86,151.20&http://some.domain,com/marker,png在本示例中,101是方法"创建新标记"的id,-33.86,151.20是指示标记的位置的连续化纬度/经度对,且http:〃.../marker,png是在呈现该标记时要使用的图标。将该标记添加到地图则将是另一连续化命令,例如15&1&17这里,15是方法"向地图添加覆盖"的id,1是覆盖应添加到的地图的id,且17是应被添加到地图的标记的id。创建第二标记(具有id18)并将其添加到同一地图(具有id1)则将涉及此外两个连续化命令101&33.87,153.05&http://some,domain,com/marker2.png和15&1&18为了高效起见,分组器可以观察到这4个命令将非常连续地到单个域中。结果,其可以形成单个分组,例如101&33.86,151.20&http://some,domain,com/marker,png;15&1&17;101&33.87,153.05&http://some.domain.com/marker2.png;15&1&18本示例使用分号来划定分组中的各个命令的界限;实际上,可以使用用于连结命令的任何可逆方案来形成分组。通常,分组的特定格式可以采取任何适当的形式;这里所示的特定形式是出于说明性目的。所述分组器被配置为在发送一组分组之前根据用于传输的预定可接受等待时间和可接受分组大小等待。例如,InternetExplorer在url+hash段上将分组限制于4096字节,且对于GETurl约为2048字节。路由器可以跟踪自第一当前存储的分组到达起所流逝的时间和当前存储的一组分组的大小,且可以在任一参数超过预定值时触发一组分组的发送。在某些实施方式中,路由器还可以保证保持消息排序,例如,使得在将标记添加到地图的请求之前处理创建标记的请求。可以使用JavaScriptD0M、调用document,body.即pendChild在html文档的主体中插入不可见的中继iframe(用来在路由器之间发送分组),且可以将其用来加强排序。而且,可以通过用计数器来明确地为每个分组加标签并在接收器处按照计数器的升序顺序将分组重新排序来在允许分组顺序置换(通过允许加载iframe的顺序的置换)的浏览器中保持排序。对于其操作,iframe可以依赖于定义iframe的适当动作的库。例如,路由器可以依赖于处理域之间的通信的路由器库,所述域之间的通信包括确认、将大分组和小分组合并和分裂、及其它类似任务。其它iframe可以依赖于定义API并存储诸如回调和服务句柄的上下文的客户端库。所述客户端库可以提供各种服务,包括调用服务、注册服务、以及初始化服务。所述调用服务经由路由器向另一iframe发送消息。调用请求可以包括用于目标iframeID的参数、用于调用服务(例如向地图添加覆盖(例如标记);在地图上的点处开信息窗口;地图报告诸如对m即plet进行鼠标点击的事件;和诸如进行地理编码(将地址字符串转换成经度和纬度)并请求地图上的两个或更多点之间的驾驶路线指引的更高级服务)的服务ID、服务所需的任何自变量、以及是否应发生进行答复的回调的指示符。mappletAPI中的JavaScript调用的一个示例是13这请求地图返回当前视点(在地图中的观察区域)的中心的经度和纬度。此调用由mappletiframe向包含地图的主页面进行。对应于此调用的连续化命令可以如下4&l&callback5在本示例中,4是服务"获得地图的当前中心"的id,1是正在询问的地图的id,且callback5是由mapplet指派给响应的id。对此请求的连续化响应可以如下callbackService&callback5&33.5,-27.3其中callbackService是用于指示其为对查询的响应的特殊服务的id;callback5是指派给回调的id(因此m即pletjavascript知道将结果指向何处),且33.5,-27.3是地图的中心的经度和纬度(被传递至回调的响应)。注册服务调用注册新服务并使其与特定的句柄相关联。对被指派为句柄的框架的随后调用然后可以使用该服务。对注册服务的调用可以包括用于该服务的ID(将被稍后设法使用该服务的iframe使用)和服务句柄。例如,在允许m即plet查询地图中心点的服务中,地图可以向通信系统注册服务,这可以包括服务id(上文的4)和服务句柄。该服务句柄将如下GMap.prototype.getCenter(){returnthis,center;}此服务将向调用器返回地图的中心。当对地图进行调用时,使用服务id来确定要调用哪个服务句柄。此服务句柄被调用,且结果(在这种情况下为地图的当前中心)通过通信系统被返回到调用器。初始化调用通过将调用框架的ID(从父框架看)通知给客户端来将域间客户端初始化。这样的调用可以包括识别源框架ID的参数。一旦被通知了特定框架的ID,则系统可以提供信息到该框架的路由。考虑从iframe'A,(具有名称/id'A'的iframe)发送到iframe'B,(具有名称/id'B')的消息。首先,iframeA联系用于其域的路由器,提供要发送的消息、目标id的iframe和回调句柄(函数)(如果期待响应的话)。接下来,用于源iframeA的路由器需要联系用于目标iframeB的路由器。为了其知道要联系哪个路由器,其应已被提供从iframeid到路由器域的映射。这在初始化调用中进行设置。当主页面创建新的m即pletiframe(或将使用通信系统的任何iframe)时,其也向每个其他路由器提供该iframeid及其域。这允许外来iframe联系此新mappletiframe,只需要知道该iframe的名称/id。路由器库一般提供对可以用来通信的iframe池(pool)进行分组和维护,以便避免必须创建和毁坏许多iframe。与该池相关联的类跟踪与特定路由器相关联的每个iframe的当前状态,包括通过在创建iframe时或其src被设置到特定分组时将iframe标记为被锁定。当加载了iframe时,池类假设分组已被传递并将iframe标记为解除锁定(或可自由重新使用)。在不同的m即plet涉及不同域的情况下,可以为每个域创建路由器并使其与用于该域的mapplet相关联。对地图绘制应用使用这样的通信结构和技术的一个示例可以包括来自诸如模块A312的m即plet的传输以便向地图应用324中的地图扩增与在钓鱼相关网页上识别的"热门"钓鱼点相关联的标记。初始地可以加载mapplet并然后由用户来进行操作以便例如识别某种类型的鱼,诸如大嘴鲈鱼。然后用户可以选择提交选择,这可以使得mapplet代码访问数据服务器310,数据服务器310可以是存储本地钓鱼报告的服务器,所述本地钓鱼报告包括湖名称及最近的周末在该湖上捕到的鱼的类型、数目和大小。在模块A312中,m即plet可以以许多方式来联系这样的数据服务器310。首先,其可以直接使用跨域通信技术(诸如跨站点脚本请求)来对这样的服务器310进行请求。其次,其可以利用代理服务器,诸如由iGoogle提供的作为Google小组件API的一部分的Google代理服务器。第三,在某些情况下(诸如当使用地图地理编码API时),其可以请求包含页面(地图应用)代表它来请求服务(诸如Google服务)。然后,数据服务器310可以返回所有这样的湖的收录,以及关于在每个湖中捕到的大嘴鲈鱼的信息。接收到该信息时,地图应用324可以使得该信息被转发到地图服务器308,地图服务器308可以分析以湖名称形式的位置相关信息,并尝试将该信息转换成纬度/经度对或其它特定位置数据。服务器308然后可以向客户端设备302返回关于湖的位置的信息。在上述第一种方法中,mapplet直接从服务器接收数据。在上述第二种方法中,请求和响应通过诸如由Google提供的作为Google小组件API的一部分的http:〃gmodules.com/ig/代理服务的服务进行;诸如Google代理服务器的代理服务器将请求转发到远程服务器,远程服务器对Google代理服务器进行响应,Google代理服务器将响应转发到m即plet。在上述第三种方法中,托管页(地图应用)进行对远程服务器的请求,从远程服务器接收响应,并然后通过域间通信系统将此响应发送到m即plet。模块A312然后可以生成用于对每个湖制作标记并将标记放置在每个被识别的湖处的命令。例如,在由数据服务器310返回十个湖的情况下,可以生成二十个命令且可以将其提供给模块路由器318。该分组器可以将所有这些分组合并在一起成为较大分组并且可以等待与在系统中用于分组传递的可接受的假设等待时间相关联的时间段。一旦达到该时间段,模块路由器318跨越域将分组发送到地图路由器322,地图路由器322的分组器然后将内部分组(其为特定模块发送的数据组)分开,并将其供应给地图应用324以执行,使得在地图上适当地放置标记。还可以以类似方式向地图添加其它对象。作为过程的一部分,地图应用324还可以使得广告被放置在地图上或周围。例如,使用由地图服务器308生成的位置信息和到数据服务器310的请求中的其它信息(例如"大嘴鲈鱼"),广告服务器可以查询关于特定位置和其它收集信息的广告。结果,广告服务器306可以返回不是特定于位置且在被地图应用接收到时可以被显示在诸如专用于在显示地图上显示的广告的区域中的一个或多个广告。广告服务器306还可以返回一个或多个特定于位置的广告,这可以使得地图应用324为广告主在地图上生成标记及其它详细信息。用于诸如域间通信中的通信的这些特定所述技术是出于说明性的目的而提供的。还可以使用其它适当技术。在某些实施方式中,所述技术可以允许高效且方便的机制以允许来自不同域的对象相互通信,但以被充分限定且保护其免受不诚实的各方的影响的方式来进行。图4A和4B是用于操作基于地图绘制的可移植程序模块的过程的流程图。图4A一般地示出可以由与地图应用相交互的一个或多个服务器执行的操作。在框402处,服务器最初可以接收指向特定URL的GET命令,且可以提供与URL相关联的标记代码,包括用于形成用于m即plet的一个或多个iframe和用于在iframe中操作m即plet的代码。所请求的代码最初可以是用于诸如来自第一域的主页面的代码,其可以包括用于生成调用来自另一域的代码的iframe的代码。在该代码被执行时,其可以使用其缺省参数来请求与缺省参数相关联的地图数据,诸如示出以用户的缺省和家庭位置为中心的地图的宽视图。在某个时间之后,用户可能已向m即plet提供新的参数且可能已请求由客户端来提交新的参数。这样的请求可以使得消息被发送到第三方服务器(未示出),诸如跟踪地理区域中的租赁财产的价格的服务器。可以由客户端设备来处理来自第三方服务器的响应和/或由客户端设备以与用于地图服务器的API兼容的格式将其路由到地图服务器(框406)。地图服务器然后可以通过诸如将接收到的地址转换成纬度/经度坐标来对接收到的信息进行地理相关,并可以派发关于该请求的地图数据。例如,地图服务器可以在适当区域中以适当的縮放水平发送用于地图的片(tile),而且还可以返回用于要显示在地图上的对象的纬度/经度信息。图4B示出类似于图4A中的过程的过程420,但是从客户端设备的观点出发。在框422,客户端设备最初诸如通过用户选择用于m即s.google,com的url、搜索引擎返回指向地图的结果(并选择结果)或通过其它适当机制来请求地图页面。地图服务器然后将响应于该请求而发送代码,并且如果其确定代码的请求者是服务的注册用户,则可以附加地影响用来传递代码的方式(例如通过向代码添加对于特定用户来说个性化的m即plet)。在框424,客户端设备已接收到代码且可以执行该代码以生成诸如示出美国地图的显示的一般显示和一个或多个m即plet,在m即plet中提供有最小信息。当例如在iframe中实现m即plet时,用于m即plet的代码可以使得从其它服务器向该页面检索附加信息或代码。在框426,用户诸如通过从下拉列表中选择值或通过输入用于空域的特定值来提供用于m即plet之一的参数。当用户选择提交参数时,客户端设备可以请求来自第三方数据提供者(例如Craigslist收录)的关于m即plet的数据。当传递第三方数据时,客户端设备然后可以将该第三方数据(也许在将其编辑和/或重新格式化之后)提交给地图服务器(框430),以进行解释而生成用于该结果的地理相关数据。在地图服务器已处理该请求之后,客户端设备可以接收地图数据(框432)并使用地图应用在地图上显示该地图数据(其还可以包括用于地图的另一区域的新片)(框434)。图5A和5B是用于协调可移植程序模块和地图绘制应用的操作的过程的泳道图。通常,图5A所示的过程500示出响应于从用户到与特定地图应用相关联的两个不同m即plet的提交而提供地图数据的简单过程,而图5B所示的过程530示出到用户的个性化页面的mapplet的选择和添加。参照图5A,在框502处,用户最初访问地图相关页面,且包括标记代码的服务器发送代码(框504),同时包含特定地图数据的服务器传递该数据(框506),其可以包括地图相关库和用于应用中的初始显示的一般地图。还可以由单个服务器来生成代码和地图信息的提供。由代码服务器和/或地图服务器提供的一般信息可以包括将被用户使用的可能mapplet的列表。在某些情况下,所识别的m即plet可以是依赖于上下文的。例如,地图应用的提供可以已响应于搜索请求而发生,且对搜索请求中的词语的分析可以指示相对于地图来说期望某种类型的功能,使得用一般地图来显示解决该功能的m即plet。因此在这种情况下可以向mapplet提供地图。而且,在这种情况下,可以以与搜索请求相关的方式来对地图进行定位(例如在请求中的邮政编码周围)和/或可以基于搜索请求来选择用于m即plet的缺省值。替选地,可以查阅用户数据库以确定先前已被特定用户选择的m即plet,且可以再次将其显示为个性化地图页面的一部分。在框510处,用户选择用于第一小组件的特定参数并将其提交到数据服务器,数据服务器然后返回可以与提交的请求相关的数据(框512)。返回的信息可以包括指示位置的信息,诸如地址。在接收到该数据时,客户端可以请求与该数据相关联的地图信息(框514),且地图服务器可以解释该请求并派发地图信息(框516)。在从地图服务器接收到信息时,客户端可以向地图应用中的地图添加该信息的表示(框51S)。在某个时间之后,用户则可以选择向另一m即plet提供参数以有效创建混合应用的混合项目(框520)。用对数据的请求和数据服务(框522)、随后请求与派发数据相关联的地图信息(框524)、从地图服务器提供地图信息(框526)、以及显示由地图服务器提供的信息(框528),可以如对于第一m即plet进行的一样地进行类似过程。这样的显示可以连同来自与第一m即plet的交互的先前显示一起发生。结果,用户能够选择两个特定的m即plet应用并生成将来自两个m即plet应用的信息组合的显示。参照图5B,图5B—般地示出由将随地图页面显示的m即plet的用户进行的选择和m即plet的后续使用,用户(通过客户端)最初访问地图页面(框532)且可以接收代码和一般地图信息(框534、536)。然而,在这种情况下,先前未选择m即plet或小组件。作为替代,向用户提供多个可用m即plet的显示(框540),其可以像Google个性化主页或iGoogle中的小组件选择一样实现。可以将m即plet分类布置,且用户可以选择分类中的一个(框542),且然后进一步向其提供用于选择所选分类中的特定小组件的控件(框544)。然后,用户可以选择特定的m即plet或小组件(框546),这可以使得代码服务器更新用户的简档以指示将来当用户访问系统时应加载所选择的m即plet(框548)。服务器还可以发送用于m即plet的代码,使得在新创建的iframe中在地图页面上显示m即plet。利用传递的mapplet代码,然后可以运行该代码(框550)以便请求来自数据服务器的数据(框552),使用接收到的数据来请求来自地图服务器(框556)的地图信息(框554),并在地图上显示数据(框55S)。图6是用于协调web浏览器所显示的域之间的通信的过程的流程图。通常,该过程等可以由图3所示的组件来执行。图6—般地示出多个分组化分组在域边界上的传输。最初,在中继或路由器处接收数据组(其可以是由页面发送的数据的分组或其它特定组)。路由器可以接收数据组,且可以检查其分组化规则以确定用于将接收到的组进行分组的顺序,而且确定是否批准分组的进一步保持(即创建更大且更高效的组合分组以进行传输)。如果规则未触发组合分组的传输(框606),则接收到的数据组被添加到分组缓冲器(框608),并且如果已触发传输,则路由器将该数据组及其正在保持的其它数据组打包并发送(框610)。传输穿过域边界,并且在框612,相应的路由器接收组合分组。该路由器然后可以根据预定的规则来拆解组合分组以便从该分组提取发送的数据组(框614)。最后,接收路由器可以将各个数据组路由到该特定域中的框架(框616)。图7是用于在浏览器显示的网页上的域之间发送数据的过程的泳道图。在框702-712,从与页面上的特定域相关联的地图应用接收三个不同的数据组。例如,用户可能已移动地图或以关于与地图相关联的三个不同m即plet的方式影响地图,且地图应用可能正在报告这样的动作。地图路由器保持前两个数据组,并在接收到第三数据组时确定组合分组的等待时间或大小要求跨越域边界传输组合分组。在框714,路由器确定目标域,并向该域发送分组。作为与其中存在m即plet形式的多个可移植程序模块的域向关联的路由器的模块路由器接收组合包(框716),并将该包解构以提取被放置在其中的数据组(框71S)。在从组合包提取数据组后,模块路由器可以确定每个数据组的地址并相应地将该组路由到适当的ma卯let(框720、724、728),其中在页面上存在与地图应用相关联的多个ma卯let。然后可以在每个ma卯let中执行该数据(框722、726、730)。图8是示出与两个可移植程序模块相配合地操作的地图应用的示例的截屏。第一模块为用户提供选择将被添加到显示的附加模块的机会。例如,与该模块相关联的服务器可以存储用于关于芝加哥的犯罪、应用于地图的天气(例如温度和晴/雨/雪条件)的地图绘制的模块及其它各种模块的代码。为用户提供复选框控件以选择他们想要添加到其页面的模块(且可以将该页面保存为个性化地图页面)。此外,可以在每次选择之后示出彩色点以指示用于该选择的值,诸如m即plet类型或m即plet所属的子组(例如测量工具、社交工具、商务工具、地图创建工具等)。距离测量工具模块先前已被用户选择并以展开的形式显示。距离测量工具与主地图应用相交互以允许用户选择地图上的两个或更多点(或诸如通过州、镇、和街道地址来识别两个或更多位置),并然后计算连接该点的距离且将该距离显示给用户。其它模块如果被选择则可以将其输出与距离测量工具组合。例如,如果用户选择了芝加哥犯罪模块,则可以将地图变换成放大芝加哥,并示出其中在芝加哥已发生犯罪的区域的指示符。然后,用户可以使用该距离测量工具来确定犯罪地点之间的距离或其它信息。以这种方式,所显示的应用可以允许用户以对于他们定制的方式将多个应用混合在一起,并直接访问诸如GoogleMaps的地图绘制服务。图9示出包括多个可移植程序模块的容器文档900的示例性布局。可以有多种合并方法,包括使用iframe和内嵌HTML技术。图9描绘包括股票模块905、电子邮件模块906、实时广告模块908、广告模块910、912、m即plet模块916、以及地图模块914的多个模块。用于各种模块的不同格式可以根据由模块创建者提供的规范而存在。某些模块可以提供滚动条,其它模块可以不提供。某些模块的大小或形状可以不同于其它模块。此外,某些模块可以为用户提供编辑显示偏好和/或与模块相关的每使用数据的机会。在一个实施方式中,可以通过容器文档来自动地确定内嵌模块的大小,因此可以不提供滚动、高度、或縮放比例信息。如果模块开发者希望模块具有那些属性,则可以用固定尺寸〈DIV〉标签和被放置在该标签中的内容来包装(wrap)内嵌模块。然后,对于内嵌内容,可以指定滚动条、高度、及其它特性。属性之一允许指定縮放比例="***"以让开发者指示如何可以针对容器文档中的放置的不同大小来将模块放大和縮小。此示例性容器文档900提供的功能之一是通过选择添加小组件元素903来向容器页面添加内容。在选择"添加小组件"元素903后,系统可以为用户提供交互地指示将被包括在容器页面中的附加元素的机会。可以提供接收该输入的各种形式的界面。此外,在添加、编辑、或删除模块时,可能期望在不刷新容器文档的情况下使那些活动发生。用于达到此目的的一种说明性技术可以包括使用AJAX编程技术,因此可以在不刷新容器文档页面的情况下向容器文档添加模块(也许只刷新其中呈现新容器的iframe),或者使用AJAX来在容器文档不被刷新的情况下移除模块,或者当开发者开发模块时,能够在其中扩增模块的容器文档不必进行页面刷新的情况下改变模块,以便合并经改变的模块。参照特定模块,可以如上文所讨论的那样,在引用用于可移植程序模块的代码的iframe中显示mapplet模块916。mapplet模块916可以与诸如地图模块914的其它模块相交互,所述其它模块可以与用于诸如m即s.google,com的地图服务器的域相关联,且其可以被配置为接收并显示用于地图的片,以显示由m即plet模块916提供的对象并向m即plet模块916提供反馈。其它模块也可以在系统中通信。例如,电子邮件模块906还可以包括具有用于用户约会的信息的日历特征。电子邮件模块906可以从mapplet模块916接收对用于用户即将到来的约会的时间、位置、及其它信息的请求,且可以将这样的信息返回到mapplet模块916。然后,m即plet模块916可以将地址信息转发到地图服务器,以获得用于约会的地理相关数据。然后,mapplet模块916可以使得与每个约会相关联的对象被张贴在由地图模块914显示的地图上。以类似方式,广告模块910、912可以从例如m即plet模块916或地图模块914接收地理信息,且可以检索指向在该信息中的特定光学和/或位置的定向广告。图10是用于动态地生成广告及其它项目的示例性系统1000的示意图。系统1000是采用诸如小组件的可移植程序模块进行各种操作的系统的一般表示。这里所描述的一般操作在适当时可适用于图1A、1B、2、和3所示的系统。系统1000可以包括具有可以与之相关联的多个模块的主机服务器系统1010。这样的模块可以包括容器服务器1012、模块服务器1014、规范服务器1016、后端服务器1018、分析模块1028、模块创建服务器1032、联合(syndication)服务器1034、以及广告服务器1036。如所示,主机服务器系统1010可以通过网络1026连接到多个其它系统或子系统。连接到网络的其它系统可以包括一个或多个用户系统1022、一个或多个远程项目服务器1024、一个或多个模块开发系统1030和一个或多个联合接收者服务器1038。此外,一个或多个数据库系统1020可以与主机服务器系统1010的各种模块相结合地操作。具体地,一个分立服务器可以是地图服务器1031,其可以响应于与特定API相匹配的请求来派发地理数据。替选地,地图服务器可以是主机服务器系统1010的一部分,但在这里出于说明使用系统1000的应用可以跨越多个系统进行通信的目的而分立地示出。例如,地图服务器可以从用户系统1022接收运行由主机服务器系统1010的组件提供的代码以便诸如生成m即plet或其它可移植程序模块的请求。再次参照主机服务器系统1010的组件,容器服务器1012可以通过网络1026来向用户系统1022派发容器文档。容器服务器1012可以使用web服务器或相关服务器系统,其获取数据和/或指令并将容器明确表达以便通过网络传输到用户系统1022。然而,该容器服务器1012也可以驻留在用户系统1022上,使得可以不使用网络连接。在其中容器文档包括字处理文档的示例中,例如,容器服务器1012可以包括字处理模块。模块服务器1014可以从模块向容器服务器1012提供数据以便合并到容器文档中。在一个实施例中,容器服务器1012和模块服务器1014可以包括执行这两种功能的单个单元,如本文所述的其它服务器和模块可以的那样。模块服务器1014可以通过解释和/或解析与模块相关联的模块规范中的指令来提供用于容器文档的数据。根据一个实施例,模块服务器1014可以通过使用浏览器iframe向容器文档派发模块内容。为了加快容器文档的显示,可以在容器文档内内潜地显示模块。可以将内嵌显示理解为引用具有其它文档元素的显示。一个示例是根据HTML标准在主体中由用于HTML的代码生成的显示。在一个实施例中,模块服务器1014或某个其它组件可以由于内嵌模块可能产生的各种安全问题的风险而在将模块包括在容器文档中之前确定该模块是否被认为可信赖。根据一个实施例,模块可以合并由容器模块或与容器模块相关联的实体发布的批准的标记(例如数字证书)。如果存在批准标记,则模块服务器1014可以再现来自模块的数据以在容器文档中内嵌呈现。规范服务器1016向模块服务器1014提供模块规范文件。模块规范可以被缓存并存储在模块服务器1014和/或规范服务器1016可访问的数据库中或可以如稍后详述的那样从与规范相关联的位置获取。例如,规范服务器1016可以驻留在远程项目服务器1024上。此外,规范服务器1016可以通过网络连接到模块服务器1014,其中模块规范位于网络上可访问规范服务器1016的另一位置。可以提供后端服务器1018以便与一个或多个数据库(例如大型或动态信息数据库)相交互。例如,对于获得频繁更新且需要数据流(例如来自RSS馈送)的新闻模块,后端服务器1018可以将数据格式化成HTML以用于容器。在一个特定示例中,一个人可以创建模块(例如地图模块),诸如使用到现有地图绘制程序的应用程序接口(API)来创建模块以显示加利福尼亚州MountainView城的地图。该模块可以包括存储在规范服务器上的XML规范文件或模块规范文件。此规范服务器可以包括任何适当的服务器,包括容器页面被托管的站点处的服务器。用户或另一个人然后可以将此新模块包括在个性化主页或另一种形式的网页(容器文档)上。派发容器文档的服务器可以充当模块服务器,且可以将通过来自其API的查询而生成地图绘制数据的服务器视为后端服务器。在一个实施方式中,分析模块1028可以在各种时间分析模块(例如当用户第一次选择该模块时,每当模块被容器调用以便包括时或在被确定为有利于安全和防护的任何时间及其它时间)。分析模块1028可以执行多个动作,包括将模块与不批准或危险模块的列表或批准模块的列表相比较。该比较可以涉及通过名称或位置(例如URL)、规范的内容、规范所在的位置的内容、或者关于模块的可确定的信息进行的完全或子字符串(例如前缀、后缀和正规表达式)匹配。分析模块1028可以响应于该模块不被批准或危险而采取一个或多个动作,包括例如静静地阻止该请求(即提供一般错误)、用解释该请求被阻止的原因的错误来阻止该请求或者将该请求重定向至已被确定为安全且与不被批准模块(例如,如果第一个是不被批准地图绘制站点的话,是与地图相关的另一模块;或者如果该不被批准模块是篮球模块的话,是包括关键字"篮球"的模块)相关的不同模块规范。例如,通过重定向,原始模块的URL可以被传递到"安全"模块。该安全模块然后可以使用如下所述的代理服务器来获取原始URL的内容。开发者然后可以替换错误句柄以固定原始模块中的小错误以便能够显示原始模块的内容。在另一实施例中,分析模块128可以诸如通过编译JavaScript或包含在模块中的其它脚本以尝试识别模块可以执行的不安全或不期望动作来分析模块内容以确定其是否安全。可以提供一个或多个模块创建服务器1032。这些服务器可以充当使得模块创建者能够通过交互过程来创建模块的"向导"。例如,模块创建服务器1032可以提供使得创建模块的人能够提供被用来自动生成模块规范的输入的一系列用户界面。例如,可以为各种模块规范模板提供相应的输入。模块创建服务器1032然后可以获取由用户提供的输入,将其插入到模板中,并生成用于模块的模块规范。还可以将预览、测试、以及调试功能提供为"向导"的一部分。此模块也可以可下载到客户端。联合服务器1034可以准备用于传输到与模块相关的一个或多个联合接收者服务器1038的数据。联合服务器1034可以接收对模块和/或模块内容的请求并通过网络1026将该模块或内容传递至联合接收者服务器1038。联合服务器1034可以驻留在主机服务器系统1010处或网络上的另一位置处。例如,如果体育网站(联合接收者系统1038的示例)的运营者期望包括由远程源系统1024创建的广告模块,则其可以通过向联合服务器1034请求来进行。联合服务器1034然后后可以与模块服务器1014协作以生成用于容器文档的数据(在这里为联合接收者系统1038的体育网站页面)。这可以涉及从远程源系统1024获取模块规范,供应从联合接收者服务器1038接收到的偏好(例如正在显示的页面的体育队的城市信息)和/或生成用于容器的数据。还可以在iframe中或以内嵌方式在联合接收者服务器1038处将数据呈现到其容器文档中。联合服务器1034因此可以将其可访问的模块进行联合。其可以基于对特定模块或其确定的其它标准(例如内容匹配、关键字匹配、与模块相关联的货币值和/或联合请求者等)来这样做。广告服务器1036可以向容器提供与模块相关联的广告和/或用于产生这样模块的显示的数据。例如,当数据被传递到容器文档时,可以将广告与模块数据合并。广告服务器1036可以与联合服务器1034进行操作以便基于对模块的联和请求来向联合接收者服务器1038传递广告。可以由广告服务器1036基于多种标准来选择广告,所述标准包括但不限于关于容器的内容与关于容器的信息、模块、容器中的其它模块、联合接收服务器信息、货币元素之间的关系/与任何前述事项和/或其组合相关的关系。根据一个实施方式,广告服务器1036可以包括GoogleAdSense系统。具体地,广告服务器1036可以通过使与模块相关的两个或多个构思与广告相关联并使出价共同地与两个或多个关键字相关联来管理在线广告。此外,联合服务器1034或广告服务器1036可以响应来自联合模块的请求,所述联合模块诸如为发送对描述与模块相关联的容器页面的信息的请求的广告相关模块。可以提供一个或多个数据库系统1020,其以任何数目的适当方式来存储容器信息、模块规范和/或相关信息、格式化数据、每用户和每模块偏好数据、远程模块ID数据、远程模块位置参考数据、广告数据、广告主数据、内容/货币数据、联合接收数据、模块的模板、模块的输入、可信赖或不可信赖模块的列表、批准标准及相关信息和/或被模块用来如在此所述地操作的任何其它信息。虽然示出了单个数据库结构,但可以将数据存储在多个位置处或一个或多个系统中。在一个实施方式中,提供将模块合并到容器文档中的系统和方法。容器文档的一个示例将是个性化主页,诸如因特网上的Google服务的用户当前可获得的Google个性化主页或iGoogle。作为限制用户能够在诸如个性化主页的容器文档中包括的内容类型的替代,一个或多个实施方式可以使得用户能够从除容器文档的源之外的源选择模块。因此,例如,用户可以选择在他或她的个性化Google主页中包括来自与Google不相关联的源的模块。图11示出可以用来实现在此所述技术的计算机设备1100和移动计算机设备1150的示例。计算机设备1100意图表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、主机、及其它适当计算机。计算设备1150意图表示各种形式的移动设备,诸如个人数字助理、蜂窝式电话、智能电话、及其它类似计算设备。这里所示出的组件、其连接和关系、及其功能意图仅仅是示例性的,且并不意图限制本文档中所述和/或要求的本发明的实施方式。计算设备1100包括处理器1102、存储器1104、存储设备1106、连接到存储器1104和高速扩展端口1110的高速接口1108、以及连接到低速总线1114和存储设备1106的低速接口1112。组件1102、1104、1106、1108、1110、和1112中的每一个使用各种总线互连,且可以被安装在公共主板上或根据需要以其它方式安装。处理器1102可以处理用于在计算机设备1100内执行的指令,包括存储在存储器1104或存储设备1106上的用于在诸如耦接到高速接口1108的显示器1116的外部输入/输出设备上显示用于GUI的图形信息的指令。在其它实施方式中,根据需要,可以使用多个处理器和/多个总线以及多个存储器和存储器类型。而且,可以连接多个计算设备1100,每个设备提供所需操作的一部分(例如作为服务器阵列、刀片服务器组、或多处理器系统)。存储器1104存储计算设备1100内的信息。在一个实施方式中,存储器1104是易失性存储器单元。在另一个实施方式中,存储器1104是非易失性存储器单元。存储器1104还可以是另一种形式的计算机可读介质,诸如磁盘或光盘。存储设备1106能够为计算设备1100提供海量存储。在一个实施方式中,存储设备1106可以是或包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备、或带设备、闪速存储器或其它类似的固态存储器设备、或设备阵列,包括存储区域网络或其它配置中的设备。可以在信息载体中有形地实现计算机程序产品。计算机程序产品还可以包含指令,该指令在被执行时执行一个或多个方法,诸如上文所述的方法。所述信息载体是计算机或机器可读介质,诸如存储器1104、存储设备1106、处理器1102上的存储器、或传播信号。高速控制器1108管理用于计算设备1100的带宽密集型操作,而低速控制器1112管理带宽密集性较低的操作。这样的功能分配仅仅是示例性的。在一个实施方式中,高速控制器1108被耦接到存储器1104、显示器1116(例如通过图形处理器或加速器)、以及可以接受各种扩展卡(未示出)的高速扩展端口1110。在该实施方式中,低速控制器1112被耦接到存储设备1106和低速扩展端口1114。可以包括各种通信端口(例如USB、蓝牙、以太网、无线以太网)的低速扩展端口可以耦接到一个或多个输入/输出设备,诸如键盘、指示设备、扫描仪、或例如通过网络适配器耦接到诸如交换机或路由器的联网设备。如图中所示,可以以多个不同形式来实现计算设备1100。例如,可以将其实现为标准服务器1120,或更多时间将其实现在服务器组中。还可以将其实现为机架服务器系统1124的一部分。此外,可以在诸如膝上型计算机1122的个人计算机中实现。替选地,可以22将来自计算设备1100的组件与诸如设备1150的移动设备(未示出)中的其它组件组合。这样设备中的每一个可以包含计算设备1100U150中的一个或多个,且整个系统可以由相互通信的多个计算设备1100、1150组成。计算设备1150包括处理器1152、存储器1164、诸如显示器1154的输入/输出设备、通信接口1166、收发机1168、以及其它组件。设备1150还可以提供有存储设备,诸如微驱动或其它设备,以提供附加存储。组件1150、1152、1164U154、1166、和1168中的每一个使用各种总线互连,且多个组件可以被安装在公共主板上或根据需要以其它方式安装。处理器1152可以执行计算设备1150内的指令,包括存储在存储器1164中的指令。处理器可以被实现为包括分立的多个模拟和数字处理器的芯片的芯片组。处理器可以提供例如设备1150的其它组件的协调,诸如用户接口的控制、由设备1150运行的应用、以及设备1150进行的无线通信。处理器1152可以通过控制接口1158和耦接到显示器1154的显示器接口1156与用户通信。显示器1154可以是例如TFT(薄膜晶体管液晶显示器)显示器或OLED(有机发光二极管)显示器、或其它适当的显示器技术。显示器接口1156可以包括用于驱动显示器1154向用户呈现图形及其它信息的适当电路。控制接口1158可以从用户接收命令并将其转换以便提交给处理器1152。此外,外部接口1162可以被提供为与处理器1152通信以实现设备1150与其它设备的近域通信。例如,外部接口1162在某些实施方式中可以提供有线通信,或在其它实施方式中可以提供无线通信,并且还可以使用多个接口。存储器1164存储计算设备1150内的信息。存储器1164可以被实现为计算机可读介质或媒体、易失性存储单元、或非易失性存储单元中的一个或多个。还可以提供扩展存储器1174并通过扩展接口1172连接到设备1150,其可以包括例如SI匪(单列直插存储器模块)卡接口。这样的扩展存储器1174可以为设备1150提供额外存储空间,或者还可以存储用于设备1150的应用或其它信息。具体地,扩展存储器1174可以包括执行或补充上述过程的指令,并且还可以包括安全信息。因此,例如,可以将扩展存储器1174提供为用于设备1150的安全模块,且可以用允许设备1150的安全使用的指令将其编程。此外,可以经由SI匪卡来提供安全应用以及附加信息,诸如以不可入侵方式在SI匪卡上放置识别信息。如下文所讨论的,存储器可以包括例如闪速存储器和/或NVRAM存储器。在一个实施方式中,在信息载体中有形地实现计算机程序产品。所述计算机程序产品包含指令,该指令在被执行时执行一种或多种方法,诸如上文所讨论的方法。所述信息载体是计算机或机器可读介质,诸如存储器1164、扩展存储器1174、处理器1152上的存储器、或者可以例如通过收发机1168或外部接口1162来接收的传播信号。设备1150可以通过通信接口1166进行无线通信,通信接口1166可以在必要时包括数字信号处理电路。通信接口1166可以在各种模式或协议下提供通信,诸如GSM语音呼叫、SMS、EMS、或匪S消息发送、CDMA、TDMA、PDC、WCDMA、容器文档102MA2000、或GPRS等等。这样的通信可以例如通过射频收发机1168发生。此外,短程通信可以诸如使用蓝牙、WiFi、或其它这样的收发机(未示出)发生。此外,GPS(全球定位系统)接收机模块1170可以向设备1150提供附加导航和位置相关无线数据,该数据可以适当地被在设备1150上运行的应用使用。设备1150还可以使用音频编解码器1160可听地进行通信,音频编解码器1160可以从用户接收所说的信息并将其转换成可用的数字信息。音频编解码器1160可以同样地诸如通过例如设备1150的听筒中的扬声器为用户生成可听声音。这样的声音可以包括来自语音电话呼叫的声音,可以包括记录声音(例如语音消息、音乐文件等)且还可以包括由在设备1150上运行的应用生成的声音。如图所示,可以以多个不同的形式来实现计算设备1150。例如,可以将其实现为蜂窝电话1180。还可以将其实现为智能电话1182、个人数字助理、或其它类似移动设备的一部分。可以在数字电子电路、集成电路、专门设计的广告服务器ASIC(专用集成电路)、计算机硬件、固件、软件、和/或其组合中实现这里所述的系统和技术的各种实施方式。这些不同的实施方式可以包括可在可编程系统上执行和/或解释的一个或多个计算机程序中的实施方式,所述可编程系统包括至少一个可编程处理器,可以是专用或通用的,被耦接为从存储系统、至少一个输入设备、以及至少一个输出设备接收数据和指令或向其发送数据和指令。这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,且可以以高级程序和/或面向对象编程语言和/或汇编/机器语言来实现。在此所使用的术语"机器可读介质""计算机可读介质"指的是用来向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语"机器可读信号"指的是用来向可编程处理器提供机器指令和/或数据的任何信号。为了提供与用户的交互,可以在计算机上实现在此所述的系统和技术,所述计算机具有用于向用户显示信息的显示设备(例如CRT(阴极射线管)或LCD(液晶显示器)监视器)和用户可以用来向计算机提供输入的键盘和指示设备(例如鼠标或轨迹球)。也可以使用其它种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈(例如视觉反馈、听觉反馈、或触觉反馈);并且也可以以任何形式接收来自用户的输入,包括声音、语音、或触觉输入。可以在包括后端组件(例如作为数据服务器)或包括中间件组件(例如应用程序服务器)或包括前端组件(例如具有用户可以用来与在此所述的系统和技术的实施方式相交互的图形用户界面或恥b浏览器的客户端计算机)或这样的后端、中间件、或前端组件的任何组合的计算系统中实现在此所述的系统和技术。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网("LAN")、广域网("WAN")、以及因特网。所述计算系统可以包括客户端和服务器。客户端和服务器一般相互远离且通常通过通信网络进行交互。客户端和服务器的关系借助于在各计算机上运行并相互具有客户端_服务器关系的计算机程序而发生。已经描述了多个实施例。然而,应理解的是可以进行各种修改。例如,可以对步骤进行重新排序、添加、或去除来使用上文所示的各种形式的流程。而且,虽然已经描述了内容传递系统和方法的多种应用,但应认识到可以预期许多其它应用。此外,虽然已相对于实时的动态生成的广告描述了许多实施例,但也可以以其它各种形式来提供其它内容传递。因此,其它实施例在所附权利要求的范围内。权利要求一种用于在web浏览器中执行域间通信的计算机实现的方法,包括在与除第一域之外的一个或多个域相关联的路由器处接收来自所述第一域的第一数据;在所述路由器处识别用于接收与所接收的数据相关联的数据的所述一个或多个域;以及将与所接收的数据相关联的第二数据发送到所述一个或多个域。2.根据权利要求l的计算机实现的方法,其中,所述第二数据包括所述第一数据。3.根据权利要求l的计算机实现的方法,其中,所述第二数据被从所述路由器发送到所述一个或多个域。4.根据权利要求l的计算机实现的方法,其中,所述第一域和除所述第一域之外的所述一个或多个域中的每一个都通过框架来限定。5.根据权利要求4的计算机实现的方法,其中,所述路由器由框架来限定。6.根据权利要求5的计算机实现的方法,其中,所述框架包括iframe元素。7.根据权利要求l的计算机实现的方法,其中,所述一个或多个域每一个实现可移植程序模块。8.根据权利要求7的计算机实现的方法,其中,所述可移植程序模块包括小组件。9.根据权利要求1的计算机实现的方法,还包括在所述路由器处接收来自所述一个或多个域中的一个的第三数据,并将所述第三数据提供给所述第一域。10.根据权利要求9的计算机实现的方法,还包括将所述第三数据提供给所述一个或多个域中的至少一些。11.根据权利要求l的计算机实现的方法,还包括将所述第一数据从与所述第一域相关联的路由器发送到与除所述第一域之外的所述一个或多个域相关联的路由器。12.根据权利要求ll的计算机实现的方法,还包括在与所述第一域相关联的所述路由器处接收多组数据,并且在将所述多组数据发送到与所述一个或多个域相关联的所述路由器之前将所述多组数据组合成单个分组。13.根据权利要求12的计算机实现的方法,还包括在发送所述分组之前将所述多组数据排序。14.一种计算机实现的系统,包括第一应用,所述第一应用被显示在网页上并在与web应用相关联的第一域中运行;一个或多个其它应用,所述一个或多个其它应用被显示在所述网页上并在与所述web应用相关联的一个或多个其它域中运行;以及与所述第一应用相对应的第一中继,所述第一中继可用于从所述第一应用接收数据并分发所接收的数据以供所述一个或多个其它应用接收。15.根据权利要求14的计算机实现的系统,还包括与所述一个或多个其它应用相对应的第二中继,用于从所述第一中继接收数据并将所述数据分发到所述一个或多个应用。16.根据权利要求15的计算机实现的系统,其中,所述第一中继被配置为从所述第二中继接收数据并将所接收的数据提供给所述第一应用。17.根据权利要求14的计算机实现的系统,其中,所述第一应用和所述一个或多个其它应用被配置为显示在公共网页上。18.根据权利要求14的计算机实现的系统,其中,所述第一中继将多个数据组打包成单个包,之后将所述单个包发送到所述第二中继。19.根据权利要求14的计算机实现的系统,还包括多个框架,其中,所述多个框架中的一个框架限定所述第一应用的显示,并且所述多个框架中的其它框架限定所述一个或多个其它应用的显示。20.根据权利要求14的计算机实现的系统,其中,所述第一应用包括地图应用,并且所述一个或多个其它应用包括小组件。21.—种计算机实现的系统,包括第一应用,所述第一应用被显示在网页上并在与web应用相关联的第一域中运行;一个或多个其它应用,所述一个或多个其它应用被显示在所述网页上并在与所述web应用相关联的一个或多个其它域中运行;以及用于在所述第一应用与所述一个或多个其它应用之间通信数据的装置。全文摘要一种用于在web浏览器中执行域间通信的计算机实现的方法,包括在与除第一域之外的一个或多个域相关的路由器处接收来自第一域的第一数据,在所述路由器处识别用于接收与所接收的数据相关联的数据的一个或多个域,并向所述一个或多个域发送与所接收的数据相关联的第二数据。文档编号G06Q50/00GK101772780SQ200880025464公开日2010年7月7日申请日期2008年5月27日优先权日2007年5月28日发明者亚当·保罗·舒克,亚当·沙赫,斯特芬·梅施卡特,本杰明·查尔斯·阿普尔顿,泰·陈,王正,詹姆斯·罗伯特·麦吉尔申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1