web数据使用平台的制作方法

文档序号:6476413阅读:143来源:国知局
专利名称:web数据使用平台的制作方法
专利说明web数据使用平台 背景 因特网和万维网(web)正变成人们日常生活的组成部分,其被用于工作、娱乐、研究等。当前,用户能够使用web浏览器来访问各种网页并通过诸如从这些网页手动复制文本或者有时从这些网页保存图像或甚至保存整个网页来从这些网页获取数据。然而,当前不存在供其他应用程序访问从这些网页获取的数据的容易的方式。因此,具有供访问来自网页的数据以使其能够供不同应用程序使用的容易的方式将会是有益的。
概述 提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
根据web数据使用平台的一个或多个方面,在计算设备上生成一种对象模型,该对象模型包括表示数据存储层中的web数据的对象。还接收来自在该计算设备上执行的应用程序的请求。这些接收到的请求是对web数据执行动作的请求,并且执行所请求的动作。
根据web数据使用平台的一个或多个方面,在计算设备上实现一种应用程序编程接口(API)层。该API层允许在该计算设备上执行的本地应用程序访问数据存储层中的web数据。该API层还允许在某一其他计算设备上执行的远程应用程序访问该数据存储层中的web数据。
根据web数据使用平台的一个或多个方面,将网页存储在web数据存储中。这些网页中的某一些包括结构化数据,而另一些不包括结构化数据。生成具有表示这些网页的不同对象的对象模型。web浏览器被准许经由对象模型来访问web数据存储,并至少部分地基于这些网页来生成用户界面。
附图简述 在全部附图中,使用相同的标号来指示相同的特征

图1示出根据一个或多个实施例的其中能够使用web数据使用平台的示例系统。
图2示出根据一个或多个实施例的包括结构化数据的示例网页。
图3示出根据一个或多个实施例的示例web数据平台。
图4示出根据一个或多个实施例的显示用户界面控件的示例用户界面。
图5是示出根据一个或多个实施例的用于访问来自数据存储层的web数据的示例过程的流程图。
图6是示出根据一个或多个实施例的用于更新数据存储层中的web数据的示例过程的流程图。
图7示出根据一个或多个实施例的可被配置成实现web数据使用平台的示例计算设备。
详细描述 在此讨论web数据使用平台。该平台包括引擎层、数据存储层以及应用程序编程接口(API)层。引擎层获取web数据并将其提供给数据存储层以供存储。该引擎层还能够检测对web数据的变更并向数据存储层标识该变更。数据存储层存储web数据,并且还存储该web数据是其一部分的集合的指示符。API层提供接口,该接口允许在与平台相同的计算设备上执行的应用程序以及在其他计算设备上执行的应用程序访问并使用来自数据存储层的web数据。
图1示出根据一个或多个实施例的其中能够使用web数据使用平台的示例系统100。系统100包括计算设备102,其能够通过网络106来与多个(x)远程设备104(1)…104(x)进行通信。网络106可以是各种网络中的任一种,包括因特网、局域网、其它公用和/或专用网络、其组合等等。
计算设备102可以是各种不同计算设备中的任一种,诸如台式计算机、手持式计算机、膝上型计算机、服务器计算机、车载计算机、蜂窝电话、个人数字助理(PDA)、游戏控制台等。计算设备102包括web数据平台108,其存储web数据并允许应用程序访问所存储的web数据。所存储的web数据包括例如,网页、网页集合的指示等,如将在以下更详细地讨论的。所存储的web数据可由平台108从远程设备104(1)…104(x)中的一个或多个获取。另外,可访问所存储的web数据的应用程序包括在远程设备104(1)…104(x)中的一个或多个上执行的应用程序以及在计算设备102上执行的应用程序。
远程设备104(1)…104(x)通常是服务器计算机,但可另选地是类似于计算设备102的各种不同计算设备中的任一种。远程设备104(1)…104(x)可存储可由web数据平台108取得并存储的web数据。另外,远程设备104(1)…104(x)可执行访问并利用由web数据平台108存储的web数据的应用程序。某些远程设备104(1)…104(x)可存储供web数据平台108取得的web数据,而另一些可执行访问由web数据平台108存储的web数据的应用程序。或者,同一远程设备104可存储供web数据平台109取得的web数据并执行访问由web数据平台108存储的web数据的应用程序。
一个或多个远程设备104(1)…104(x)存储网页110。web数据平台108获取网页110中的数据并将其作为web数据来存储。一个或多个网页110可各自包括一个或多个结构化数据片段。结构化数据是数据消费者所知道并期望的格式的数据,该数据消费者通常是web浏览器或行为(对将要使用该结构化数据的方式的描述,如将在以下更详细地讨论的)。结构化数据可根据诸如可扩展标记语言(XML)或超文本标记语言(HTML)格式等已知的结构化数据标准来格式化。或者,结构化数据可根据其它公用和/或专用标准来格式化。如将在以下更详细地讨论的,无论对结构化数据使用什么格式,web数据平台108都知道该格式以使得平台108能够使用该结构化数据。构成结构化数据片段的数据的量和种类可以变化,并被定义为数据类型的一部分。
不同的结构化数据片段可以是不同的数据类型,该数据类型也被称为结构化数据类型。可使用各种不同的数据类型,如联系人类型、事件类型、日历类型、产品类型、图片类型、音乐类型、旅行类型、网页类型、地理位置类型等。数据类型可被定义成在不同的属性或字段中包括任何种类的数据,诸如日期、时间、地图坐标、姓名、电话号码、地址、产品描述、目的地名称、价格等。另外,在某些实施例中,整个页面110可作为一种结构化数据来对待。
特定结构化数据片段的结构化数据类型可以按不同的方式来标识。在某些实施例中,结构化数据本身指示数据类型。例如,可使用不同的HTML标签来标识不同的结构化数据类型,或者结构化数据本身的属性或参数可标识结构化数据类型。另选地或另外地,结构化数据能够以不同的方式来标识,诸如通过使用页面110中的首部信息、或者页面110中或与页面110相关联的其它元数据等。
图2示出根据一个或多个实施例的包括结构化数据的示例网页200。网页200包括日历事件202以及附加文本204和图像206。在该特定实例中,日历事件202具有三个字段或属性-一个位置字段和两个日期字段。这些字段在页面的HTML 208中由例如诸如所示的<div class=“lcprop_location”/>和<divclass=“lcprop_date”>标签等合适的HTML标签来描述。在图2的示例中,HTML标签<div class=“lcdata_calendar”>是被消费者识别为结构化数据的日历事件结构化数据类型。
返回图1,如果网页描述的确具有结构化数据,则将结构化数据的指示符连同该页面一起呈现给用户。该指示符通常是诸如图标等视觉指示符,但该指示符可另选地采用不同的形式(例如,该指示符可以是听觉指示符)。在某些实施例中,图标或其他视觉指示符被显示在来自页面的结构化数据的显示的旁边或附近。例如,如果结构化数据是事件,则图标将被显示在该事件的日期和时间的显示附近。在某些实施例中,只要向用户显示具有结构化数据的页面,就向该用户呈现指示符。在其他实施例中,只要用户使用光标控制设备来将指针悬停在页面上的位置附近(如由页面描述定义的,诸如在结构化数据本身内等)并持续至少阈值时间量,就向该用户呈现指示符。
在一个或多个实施例中,浏览器能够以不同的方式来呈现指示符,并且不必为呈现指示符而更改页面描述本身(例如,描述页面的HTML代码)。例如,在其中将图标作为结构数据的指示符来向用户显示的情况下,浏览器可将该图标作为页面上的覆盖图来呈现。由此,该页面的HTML代码无需为显示该图标而被更改。图标的位置在不同的实施例中可以是不同的。例如,浏览器可分析页面以标识将放置图标的空白空间(例如,其中存在极少或不存在文本、链接、图形或图像的空间)。该浏览器可尝试将图标定位在对应于结构化数据的数据显示附近(例如,如果结构化数据描述事件,则该浏览器可尝试将图标定位在对该事件的描述的显示附近)。作为另一示例,图标可始终被显示在显示器上的特定位置(例如,其中显示页面的窗口的右上角)。作为又一示例,图标的位置可由结构化数据本身(例如,该结构化数据可包括应将图标放在哪里的指示)来标识,等等。
除了向用户呈现结构化数据的指示符之外,在一个或多个实施例中,还可任选地向用户显示结构化数据的内容的预览。该预览可以在例如,覆盖页面显示的单独标注或窗口中,并且可显示结构化数据的内容中的至少某一些。该预览中所显示的内容量可以变化,并且可由页面的设计者(例如,将作为预览来显示的内容可在结构化数据本身中指定),或另选地由浏览器(例如,基于其中显示浏览器的窗口的大小、标注的大小、内容量等)来确定。或者,可根本不显示该预览,或者可直到用户作出对指示符的选择后才显示该预览。
如果网页具有结构化数据,则该结构化数据本身可以,但不一定作为网页的一部分来向用户显示。例如,如果结构化数据包括各种属性(例如,事件(诸如演讲等)的日期、时间和地理位置),则网页可使用与该结构化数据分开的HTML代码来在该网页的各部分中显示这些属性。在这些情况下,结构化数据被包括在网页的HTML中,但不向用户显示。或者,结构化数据可作为网页的一部分来向用户显示,或者结构化数据的预览可如以上所讨论地显示。
或者,在一个或多个实施例中,向用户呈现收集和/或订阅结构化数据的选项。收集结构化数据涉及维护结构化数据的副本以使得计算设备102的用户即使在计算设备102离线时(例如,未连接到网络112,或者在从中取得网页的远程设备104暂时不可用时)也可访问该结构化数据。在一个或多个实施例中,响应于选择收集选项而只存储结构化数据,但在替换实施例中可存储整个网页。
订阅结构化数据涉及请求对结构化数据的更新。当用户订阅对结构化数据的变更时,web数据平台108以规则或不规则的时间间隔访问网页以获取网页(或另选地仅仅是来自该网页的结构化数据)的已更新版本。该已更新版本通常从与最初从中取得结构化数据的网页相同的网页接收,但可另选地是另一网页,如将在以下更详细地讨论的。web数据平台还可将网页的已更新版本与该网页的先前存储的版本进行比较,并且向用户通知对该网页和/或该网页中的结构化数据的任何变更。
收集和/或订阅选项可被呈现给用户并由该用户以各种方式中的任一种来选择。例如,用户可选择屏幕上的按钮,从下拉菜单中选择选项,在数据输入域中输入文本,经由话筒输入语音命令,等等。在一个或多个实施例中,收集和/或订阅选项可由用户通过选择预览窗口中的屏幕上的按钮和结构化数据来选择。
或者,可采用行为来利用结构化数据。行为是对将要使用结构化数据的方式的描述,其通常用于向计算设备102的用户提供服务。行为通常以由计算设备102执行的软件指令和数据或代码的形式驻留,但行为可另选地以不同的方式(诸如用固件和/或硬件)来实现。每一个行为都与一种或多种结构化数据类型相关联。与特定结构化数据类型相关联的行为知道如何使用该数据类型。例如,特定结构化数据片段可以是事件数据类型,并且该特定片段可包括一事件的日期、时间和描述(例如,音乐会、电影、会议等)。与事件数据类型相关联的日历制定行为知道如何从事件中提取特定日期、时间和描述,并且与日历制定程序交互以向用户的日历添加具有对该特定日期和时间的特定描述的事件。
在一个或多个实施例中,各个行为被编程或以其他方式配置成知道如何与一个或多个本地应用程序和/或一个或多个远程应用程序交互。例如,一个行为可知道如何与

消息收发和协作客户端交互;另一个行为可知道如何与GoogleTM日历交互;另一个行为可知道如何与另一个专用日历程序交互;另一个行为可知道如何与电子相册程序交互;等等。
在一个或多个实施例中,行为可被安装在计算设备102上。通常,设备102的用户可使用浏览器来导航到允许安装行为的特定网页110。这一网页110包括可作为行为来下载并执行的指令和数据,或另选地包括到这些指令和数据的链接。将行为安装在计算设备102上涉及将对于行为的指令和数据下载到计算设备102并在必要时配置计算设备102以使得计算设备102能够执行该指令和数据。允许安装行为的网页能够,但不一定包括结构化数据。
除了作为安装行为的方式的导航到网页之外,行为还能够以其他方式安装在计算设备102上。即,行为可使用通常可用于向计算设备传送指令和数据的各种不同的技术中的任一种来安装在计算设备102上。例如,包含对于一个或多个行为的指令和数据的文件可经由可移动存储设备(诸如光盘、磁盘、闪存设备等)、经由网络106、经由到另一计算设备的有线或无线连接等来传送到计算设备102。作为另一示例,可以在计算设备102上预装一个或多个行为以使得行为在用户首次使用计算设备102时立即对他或她可用。另选地或另外地,可以在将应用程序安装在计算设备102上等时将一个或多个行为安装在计算设备102上。
图3示出根据一个或多个实施例的示例web数据平台300。web数据平台300在计算设备上实现,并且可以是在图1的计算设备102上实现的web数据平台108。平台300通常在单个计算设备上实现,但可另选地跨多个计算设备实现。
web数据平台300使用web数据。一般而言,web数据通常指在web上可用的数据。web数据可包括例如,网页、网页的特定部分、网页集合的指示、注释等。在一个或多个实施例中,web数据的格式是HTML格式,但可另选地使用其他标记语言格式或其他格式。平台300可任选地在该平台300获取web数据之后更改该web数据的格式以便存储。
web数据平台300包括引擎层302、数据存储层304和API层306。平台300还可包括行为存储层340。一般而言,引擎层302获取web数据308并将该数据提供给数据存储层304以供存储。引擎层302还可检测对先前获取的web数据308的变更并向数据存储层304标识该变更。数据存储层304存储web数据,并且还存储该web数据是其一部分的集合的指示符。数据存储层304还可存储对web数据或集合的注释。API层306提供接口,该接口允许在与平台相同的计算设备上执行的本地应用程序310以及在其他计算设备上执行的远程应用程序312访问并使用来自数据存储层304的web数据。
在操作期间,将web数据308添加到数据存储层304。web数据308可从各种不同的源获取。通常,至少某些web数据308最初是由web浏览器取得的。web浏览器可以是经由API层306与数据存储层304接口的本地应用程序310。或者,web浏览器可经由引擎层302来将web数据传送到数据存储层304。通过使用web浏览器,用户能够浏览或以其他方式导航到特定网页,从而导致该web浏览器向该用户显示该网页。用户然后可请求将该网页添加到他或她的数据存储。响应于该请求,该网页变为被添加到数据存储层304的web数据。将网页添加到用户的数据存储的请求可采用各种不同的形式,诸如将网页添加到用户最喜欢的网页或加书签的网页列表的请求、收集网页和/或订阅网页上的结构化数据的请求、存储网页副本以供离线使用的请求等。或者,当用户使用web浏览器来导航到特定网页时,可自动将该网页添加到数据存储层304。
另外,至少某些web数据308通常在取得已订阅的已更新网页的过程期间获取。这些web数据308由引擎层302来取得并被提供给数据存储层304。或者,web数据308能够以其他方式取得,诸如接收经由可移动存储设备(诸如光盘、磁盘、闪存设备等)、经由图1的网络106、经由到另一计算设备的有线或无线连接等来传送到计算设备102的包含web数据的文件。作为另一示例,可作为计算设备102的安装或创建过程的一部分将web数据包括在数据存储304中,以使得该web数据在用户首次使用计算设备102时立即对他或她可用。作为又一示例,web数据可以当在计算设备102上安装应用程序310等时被包括在数据存储层304中。作为再一示例,应用程序可创建诸如结构化数据等web数据,并将该web数据保存到数据存储层304。这些web数据能够以诸如转换文件、从无到有地生成数据等各种方式来创建。
数据存储层304存储该web数据。数据存储层304包括一个或多个项目314、一个或多个注释316以及一个或多个集合318。数据存储层存储web数据以及可任选的相关联的数据,如将在以下更详细地讨论的。该数据存储可在各种位置实现,诸如在本地存储设备(例如,与实现平台300的计算设备相同的计算设备的一部分)上、在远程存储设备(例如,远离实现平台300的设备的另一计算设备的一部分)上、在可移动存储设备(例如,闪存设备、盘等)上等等。
每一个项目314都表示到一网页的链接,并由此对应于网页或与其相关联。项目314可包括网页的数据(例如,页面的HTML代码),或另选地到网页的某些或所有数据位于数据存储层304中的地方的链接。某些网页可包括结构化数据,而另一些网页可不包括结构化数据。对于包括结构化数据的网页,对应的项目314可任选地标识该结构化数据以允许容易地取得该结构化数据。除了网页的数据之外,项目314中还包括描述链接的各种元数据。表I描述了在一个或多个实施例中在每一个项目314中所维护的示例元数据。
表I 每一个注释316都与项目314相关联,并且可从获取项目314所表示的网页的相同的源获取。每一个注释316都可以是单个注释,或另选地是与项目314相关联的注释的集合。每一个注释都包括描述项目314所表示的网页的各种信息,但通常不作为网页的一部分来显示。
每一个集合318都标识分组在一起的一个或多个项目314。该分组通常由web浏览器来执行,但该分组可另选地由另一应用程序310来执行。在一个或多个实施例中,分组根据到网页的链接中的结构化数据的数据类型来自动指定。在这些实施例中,具有相同数据类型的结构化数据的网页被一起分组在同一集合中。另外地或另选地,分组可由用户来指定。在这些实施例中,用户能够标识集合的名称或其他标识符并根据他或她的需求来将特定项目分配给特定集合。该分配可在获取网页时和/或在其他时间执行(例如,经由web浏览器或另一应用程序310)。
另外,一个或多个应用程序310和/或312可向数据存储层304注册以得到对数据存储层304的变更的通知。数据存储层304将对项目314、注释316和/或集合318的变更通知给这些应用程序310和/或312。在一个或多个实施例中,应用程序310和/或312可向数据存储层304注册以接收对项目314的变更的通知。数据存储层304维护哪些应用程序310和/或312已注册接收通知的记录,并且只要存在对项目314的变更就通知这些应用程序310和/或312中的每一个。已注册的应用程序通常得到对项目314的任何变更的通知,该变更包括对项目的元数据中的任一个的变更、任何项目添加、任何项目删除以及被添加到项目的任何新注释。或者,应用程序可注册接收仅对项目314的特定部分的变更(例如,仅对结构化数据或标志等的变更)或对特定项目314的变更的通知。另外地或另选地,应用程序还可注册接收对集合318的变更、对注释316的变更、对具有特定数据类型的结构化数据的项目314的变更等中的一个或多个。
另外,在一个或多个实施例中,利用平台300在其上执行的操作系统的事件通知组件来帮助注册和通知。在这些实施例中,应用程序310和/或312可向操作系统的事件通知组件注册,从而使得该事件通知组件只要其接收到应用程序310和/或312所注册的事件就通知这些应用程序。应用程序310和/或312注册项目变更事件,并且数据存储层304将任何项目变更通知给事件通知组件。操作系统的事件通知组件进而向已注册的应用程序310和/或312激发事件(或其他方式传递通知)以便将项目变更通知给这些应用程序。
平台300还可任选地包括其中存储了一个或多个行为342的行为存储层340。每一个行为342都是对将要使用结构化数据的方式的描述,其通常用于向实现平台300的计算设备的用户提供服务,如上文中所讨论的。当行为被安装在实现平台300的计算设备上时,维护该行为与哪些结构化数据类型相关联的记录。该记录可在行为存储层340中、在数据存储层304中或另选地在某一单独的存储层(未示出)中维护。
引擎层302获取web数据308并将该数据提供给数据存储层304以供存储。引擎层302还可检测对先前获取的web数据308的变更并将已变更的web数据存储在数据存储层304中。另外,引擎层302可将变更通知给数据存储层304和/或平台300的其他组件。该标识对网页的变更并存储网页的已变更版本的过程也被称为更新网页。
引擎层302包括下载引擎322、杀毒器模块324以及合并处理模块326。下载引擎322获取项目314所标识的网页的已更新版本。下载引擎322通常下载所标识的网页,但另选地如果将只要更新网页的一部分(例如,仅网页上的结构化数据),则只需取得该网页部分。下载引擎322可获取项目314所表示的所有网页的已更新版本,或另选地获取用户已请求其的更新(例如,通过订阅网页上的结构化数据或以其他方式请求更新)的网页的已更新版本。是否已请求对特定网页的更新的指示可被保存在对应的项目314的元数据中(例如,作为以上参考表I讨论的标志中的一个)。对于下载引擎322将要获取其所表示的网页的已更新版本的每一个项目314,项目314标识应从中取得对网页的更新的位置(例如,作为以上所讨论的源URL)。
一般而言,网页的新版本由下载引擎302作为web数据308来接收并由杀毒器模块324来杀毒以移除任何可能的恶意内容。合并处理模块326然后将经杀毒的网页与先前存储在数据存储层304中的版本进行比较以确定在该网页的新接收到的版本和该网页的先前存储的版本之间是否存在任何差异。如果存在对该网页的任何变更,则合并处理模块326将该新接收到的网页存储在数据存储层304中,并通知数据存储层304和/或API层306该网页已变更。在一个或多个实施例中,合并处理模块326将对网页的任何变更通知给层304和/或层306,而在其他实施例中,合并处理模块326仅将对网页上的结构化数据的变更通知给层304和/或层306。在还有一些实施例中,合并处理模块326将对网页的任何变更通知给层304和/或层306,并且还通知层304和/或层306这些变更中的任一个是否针对结构化数据。
更新项目的频率可以变化。在某些实施例中,项目本身包括标识更新该项目的频率的属性(例如,以上参考表I讨论的标志中的一个)。在其它实施例中,使用其它机制来确定频率,诸如用户可以输入他或她想要进行更新的频率,特定频率可以与不同的结构化数据类型相关联,等等。更新可以按规则的时间间隔(例如每天一次、每小时一次、每五分钟一次等)或按不规则的时间间隔(例如,在逐渐导至项目中所标识的特定时间和日期的日子中每天一次、在与项目中所标识的相同的日期每小时一次、以及在与项目中所标识的相同的日期并在项目中所标识的时间的前一小时之内每五分钟一次)。
杀毒器模块324获得由下载引擎322取得的网页并标识该网页上的任何可能的恶意内容。杀毒器模块324移除任何这样标识的内容,从而产生对合并处理模块326可用的经杀毒的网页。杀毒器模块324能够以各种常规方式中的任一种操作以检测可能的恶意内容,诸如检查特定标签、使用特定算法、搜索特定模式等等。
合并处理模块326将经杀毒的网页与先前存储在数据存储层304中的网页进行比较。基于该比较,检查是否存在对该网页的任何变更。对网页的变更可以是向网页添加某些数据或其他内容或代码、从网页中删除某些数据或其他内容或代码和/或修改网页中的某些数据或其他内容或代码。或者,合并处理模块326可仅将经杀毒的网页的一部分(例如,该经杀毒的网页中的结构化数据)与先前存储在数据存储层304中的网页的一部分(例如,该网页中的结构化数据)进行比较。
如果不存在对网页的变更,则合并处理模块326无需在此时对该项目采取进一步的行动。或者,合并处理模块326可更新项目314的元数据以反映已执行更新但未检测到对网页的变更。
然而,如果存在对网页的变更,则由新接收到的网页来替换先前存储在数据存储层204中的网页。该网页的新版本对网页的旧版本的替换可由合并处理模块326来执行,或可另选地由数据存储层304的控制组件来执行。当项目314变更时,引擎层302将该变更通知给数据存储层304。在一个或多个实施例中,数据存储层304提供一接口,该接口可由引擎层302来访问并允许引擎层302将网页存储在数据存储层304中并且还允许引擎层302将对网页的任何变更通知给数据存储层304。
如以上所讨论的,对网页的变更通常由引擎层302来标识。另外,对注释的变更通常以类似的方式标识,因为注释是由下载引擎322连同网页一起获取的。然而,对集合318或行为320的变更通常由应用程序310作出。这些变更在作出变更时被数据存储层检测到,并且已注册的应用程序得到这些变更的通知,类似于如以上所讨论的对网页的变更的通知。例如,假设应用程序310通过调用对应于集合318的对象的方法(该对象模型将在以下更详细地描述)来改变该集合。对该调用的方法的处理的一部分是将对集合318的变更通知给数据存储层304,通常标识该特定集合318以及所作出的变更。
API层306提供接口,该接口允许在与平台相同的计算设备上执行的本地应用程序310以及在其他计算设备上执行的远程应用程序312访问并使用来自数据存储层的web数据。API层306包括对象模型330和同步协议模块332。本地应用程序310包括web浏览器应用程序以及被添加到该web浏览器应用程序的任何扩展。扩展可由另一应用程序310或312、或由网页来添加到web浏览器应用程序以扩展该web浏览器的功能。另外,本地应用程序310可以是各种类型的应用程序中的任一种,诸如文字处理应用程序、电子表格应用程序、游戏、数据库等。类似地,远程应用程序312可以是各种类型的应用程序中的任一种,诸如文字处理应用程序、地图绘制或指路应用程序、游戏等。
对象模型330是基于数据存储层304中的数据的对象模型。对象模型330包括表示数据存储层304中的项目314、注释316和集合318的不同对象。这些对象包括对应于作为项目314、注释316和集合318来存储的数据的各种属性。例如,表示项目314的对象可包括具有网页的数据(例如,页面的HTML代码)的属性以及对应于以上参考表I描述的每一种元数据类型的其他属性。
另外,在其中网页包括结构化数据的实施例中,结构化数据本身可以是项目对象的不同属性。例如,假设网页包括具有作为结构化数据的姓名和电话号码的联系人结构化数据类型。该网页作为项目314来存储,并且对象模型330中的对应的对象包括作为联系人姓名和联系人电话号码的属性。
除了属性之外,对象模型330中的每一个对象还可包括允许应用程序310与该对象交互的不同的方法。这些方法的示例包括创建方法、读取方法、编辑方法、删除方法以及枚举方法。创建方法允许应用程序310创建对象并用数据来填充该对象,并且将对应的数据存储在数据存储层304中。读取方法允许应用程序310取得对象的属性。编辑方法允许应用程序310改变对象的属性并将这些改变存储在数据存储层304中。删除方法允许删除对象,并从数据存储层304中删除对应的数据。枚举方法允许向应用程序310标识对象的方法和/或属性。
另外,API层306中的行为对象模型还包括表示行为342的不同对象,并且允许应用程序310与这些对象交互。该对象模型可作为对象模型330或另选地层306中的另一对象模型的一部分来包括。表示行为342的对象包括对应于行为342的各种属性。例如,表示特定行为342的对象可包括具有将要执行以实现该行为的代码被存储在哪里(或另选地该代码可作为该对象的一部分来包括)的标识符的属性。该对象还可包括关于行为342的元数据,诸如行为源的标识符、行为所提供的服务的标识符、与行为相关联的结构化数据类型的标识符等等。
行为对象模型中的每一个对象还包括允许应用程序310与该对象交互的不同的方法。这些方法的示例包括调用方法、按类型枚举行为方法、读取方法、添加方法和删除方法。调用方法允许应用程序310调用对象所表示的行为。用于对象所表示的行为的代码在调用该对象所表示的行为时执行。读取方法允许应用程序310取得对象的属性。添加方法允许将行为添加到行为存储340并且将表示该行为的对象添加到行为对象模型。删除方法允许从行为存储340删除行为并且从行为对象模型中删除表示该行为的对象。
按类型枚举行为方法允许向应用程序310标识与特定结构化数据类型相关联的不同行为。该枚举能够以不同的方式实现,诸如通过在该行为对象模型中具有维护该信息的附加对象(该附加对象的方法可由应用程序310来直接调用,或可另选地由应用程序310所调用的另一对象的方法来调用)、通过访问存储在行为存储层340中的这些关联的记录(例如,在每一次添加行为或改变关联时更新)、通过使得行为对象模型中的对象彼此查询相关联的结构化数据类型,等等。枚举行为方法允许向应用程序310标识行为存储层340中的不同的行为342。该枚举能够以不同的方式实现,诸如通过在该行为对象模型中具有维护该信息的附加对象(该附加对象的方法可由应用程序310来直接调用,或可另选地由应用程序310所调用的另一对象的方法来调用)、通过访问存储在行为存储层340中的行为的记录(例如,在每一次添加或删除行为时更新)、通过使得行为对象模型中的对象彼此查询其所表示的行为,等等。
同步协议模块332允许远程应用程序312维护与数据存储层304中的数据同步的数据。在一个或多个实施例中,期望接收事件通知的每一个远程应用程序312都将该需求的指示发送到模块332。另外,远程应用程序312可注册接收对数据存储层304的变更的通知,或另选地模块332可代表应用程序312来注册接收通知。不管是应用程序312或模块332中的哪一个注册接收通知,同步协议模块332都接收通知。模块332维护通知的记录直到其下一次与远程应用程序312进行通信,此时模块332将它所接收和维护的所有通知发送到远程应用程序312。模块332还可将对应的已变更的数据从数据存储层304发送到远程应用程序312,或另选地等待远程应用程序312请求该数据。
远程应用程序312和同步模块332之间的通信可由应用程序312和/或模块332发起。在一个或多个实施例中,应用程序312通过向模块332发送(例如,通过图1的网络106)对模块332已代其接收的通知的请求来发起通信。在其他实施例中,应用程序312向模块332提供如何将通知传递给应用程序312的指示,并且模块332保存该指示。该指示可以是例如,将在接收到对于应用程序312的通知时访问的URL。模块332代表应用程序312接收到的通知以由给予模块332的指示定义的任何方式(并且以任何频率)传递给应用程序312。
对数据存储层304的变更到远程应用程序312的传递允许远程应用程序312保存其自己的数据存储层304中的web数据的副本,并且还允许远程应用程序312保存其与web数据存储层304中的web数据同步的web数据的副本。应当注意,在远程应用程序312最初期望获得对web数据的变更的通知时,数据存储层304中的所有web数据都可被视作已变更的,因为该远程应用程序312尚未接收到任何数据。在这些情况下,数据存储层304中的现有web数据通常被传递给远程应用程序312。
另外,在一个或多个实施例中,网页能够经由web浏览器应用程序310来获取对数据存储层304的访问。在这些实施例中,对象模型330允许显示网页的web浏览器应用程序310访问对象模型330。以此方式,网页能够在不安装应用程序作为应用程序310的情况下访问并利用数据存储层304中的数据和行为存储层340中的行为。
另外,API层306可控制对API和/或数据存储层304和/或行为存储层340中的不同web数据的访问。通过控制这些访问,不同的网页和/或网站可被限于不同的功能和/或web数据。作为示例,API可被分成不同的功能,诸如读功能和写功能。可准许不同的网页和/或网站访问写功能,而准许其他网页和/或网站只访问读功能。作为另一示例,特定网页和/或网站可被限于只访问特定的一个或多个项目314、特定的一个或多个集合318等。被准许的对特定网页和/或网站的特定访问可由实现平台300的计算设备的用户来标识,由此允许该用户控制对他或她的web数据的访问。
此外,在一个或多个实施例中,API层306包括web数据拾取器控制模块,其显示允许用户选择特定web数据的用户界面控件。该用户界面控件显示数据存储层304中的各种web数据中的至少某一些的标识符并且允许本地应用程序310的用户选择特定web数据来对其执行动作。例如,如果本地应用程序310显示关于集合的信息,则该应用程序310可向用户显示列出来自数据存储层304的集合的标识符的控件。这允许该用户容易地选择他或她期望显示哪一个/哪些集合。作为另一示例,如果本地应用程序310显示关于特定的结构化数据类型(例如,日历事件、位置等)的信息,则该应用程序310可向用户显示列出来自数据存储层304的该类型的不同结构化数据的标识符的控件。这允许该用户容易地选择他或她期望显示哪一个/哪些结构化数据片段。该用户界面控件在应用程序接收到操作web数据的请求时显示。用户能够以各种方式中的任一种来请求操作web数据,诸如选择屏幕上的按钮、从下拉菜单中选择项目、请求执行应用程序等。
图4示出根据一个或多个实施例的显示用户界面控件的示例用户界面。在图4中,示出了应用程序窗口400,其包括标题402和各种文本404以及图像406。窗口400还包括用户界面控件408,其列出可由用户选择的不同的web数据。在所示示例中,控件408显示项目的集合,但可以理解,可另选地显示项目本身或其他web数据。界面控件408中所显示的特定web数据可基于生成窗口400的应用程序所提供的特定功能而变化。
用户可以按各种不同的方式来从控件408中选择特定集合。在一个或多个实施例中,用户将指针或光标410导航至控件408中的标识符的上方并点击光标控制设备(例如,鼠标)上的按钮以选择该标识符。应用程序然后以执行该应用程序来操作的任何方式操作所标识的集合。
图5是示出根据一个或多个实施例的用于访问来自数据存储层的web数据的示例过程500的流程图。过程500由诸如图1的计算设备102等计算设备来执行,并可以用软件、固件、硬件、或其组合来实现。在某些实施例中,过程500由图3的web数据平台300来实现。
最初,获取web数据(动作502)。该web数据指的是例如,网页、网页集合的指示、行为、注释等。web数据可以按各种不同的方式来获取。例如,web数据可通过用户使用web浏览器来导航到网页、通过因特网或其他网络来接收文件、从可移动存储设备接收文件等来获取。或者,诸如注释和集合指示等某些web数据可通过从实现过程500的设备的用户接收文本、字符、对图标的选择或其他(例如,听觉)输入来获取。
将所获取的web数据存储在web数据存储中(动作504)。该web数据存储是例如,图3的数据存储层304。在一个或多个实施例中,在动作504中存储在动作502中获取的任何web数据。在其他实施例中,接收来自用户的存储web数据的请求,并且仅存储所请求的数据。
生成表示web数据存储中的web数据的对象模型(动作506)。在动作506中生成的对象模型包括多个对象,其各自表示来自web数据存储的web数据片段(例如,各自表示项目、集合或注释)。在一个或多个实施例中,在动作506中生成的对象模型是图3的对象模型330。在一个或多个实施例中,表示来自行为存储的行为的对象模型也在动作506中生成。
有了该对象模型,可从应用程序接收对web数据执行动作的请求(动作508)。在一个或多个实施例中,该请求是来自在与实现过程500的计算设备相同的计算设备上执行的本地应用程序的请求。如以上所讨论的远程应用程序可得到对web数据的变更的通知并且可维护其自己的web数据副本,从而允许这些远程应用程序访问其自己的web数据副本以对该数据执行动作。
将要对该web数据执行的动作可以是各种动作中的任一种,并且通常是由对象模型中的对象作为方法来展示的动作。这包括例如,由表示集合、项目、注释和行为的对象来展示的方法。该请求由调用对象模型中的对象的适当方法的应用程序来接收。
执行所请求的动作(动作510),并且过程500返回到动作506。如果该动作引起对对象模型的任何改变,则该改变本质上产生包含了该改变的新生成的对象模型。然而,可以理解,不必重新生成对象模型中未被改变的部分。
除了从应用程序接收请求之外,还可接收对web数据的更新(动作512)。这些更新是通过将先前存储的web数据与该web数据的新版本进行比较而得到的对web数据的变更。通常,这些更新从图3的引擎层302接收。将所接收到的已更新的数据存储在web数据存储中(514),并且生成表示该变更数据的新对象模型(动作506)。然而,可以理解,在动作506中不重新生成对象模型中未被改变的部分。该变更数据的通知如此处所讨论地还可被传递给一个或多个应用程序。
图6是示出根据一个或多个实施例的用于更新数据存储层中的web数据的示例过程600的流程图。过程600由诸如图1的计算设备102等计算设备来执行,并可以用软件、固件、硬件、或其组合来实现。在某些实施例中,过程600由图3的web数据平台300来实现。
在每一次检查每一个网页以查找更新时,对该网页执行过程600。更新网页的频率可以变化。在某些实施例中,对应于存储在数据存储层中的网页的项目包括标识更新网页的频率的元数据。在其它实施例中,使用其它机制来确定频率,诸如用户可输入他或她想要进行更新的频率,特定频率可以与不同的网页或具有特定结构化数据类型的网页相关联等。该检查可以按规则的时间间隔(例如,每天一次、每小时一次、每五分钟一次等),或者按可随时间变化的不规则的时间间隔。
最初,取得将要被检查更新的网页的新版本(动作602)。标识将要从中取得该新版本的位置,例如,在对应于存储在数据存储层中的网页的项目的元数据中。
然后将该网页的新版本与数据存储中的该网页的先前存储的版本进行比较(动作604)。给定该比较,检查是否存在对网页的任何变更(动作606)。对网页的变更可以是向该网页添加某些数据,从该网页中删除某些数据和/或修改该网页中的数据。尽管过程600参考检查对网页的变更来讨论,但可另选地在过程600中检查并更新对网页的仅仅一部分(例如,网页上的结构化数据)的变更。
如果不存在对结构化数据的变更,则过程600可任选地将更新检查的日期和时间记录在对应于数据存储层中的网页的项目的元数据中(动作608)。该日期和时间可以是在动作602中取得网页的新版本的日期和时间、在动作604中进行比较的日期和时间等。或者,可以不执行动作608。不管是否执行动作608,对该网页的更新过程600然后在此时完成(动作610)。或者,数据存储层将对网页的变更通知给已注册接收对web数据的变更的通知的任何应用程序(动作616)。
返回至动作606,如果存在对网页的变更,则用在动作602中取得的网页的版本来替换数据存储中的网页(动作612)。也将对结构化数据的变更通知给数据存储层(动作614)。该数据存储层可通过显式变更命令或指示符来得到变更的通知,或可另选地通过更新的网页来隐式地得到变更的通知。
也将更新检查的日期和时间记录在对应于数据存储层中的网页的项目的元数据中。该日期和时间可以是在动作602中取得网页的新版本的日期和时间、在动作604中进行比较的日期和时间等。对该网页的更新过程600然后在此时完成(动作610)。
图7示出根据一个或多个实施例的可被配置成实现web数据使用平台的示例计算设备700。计算设备700可以是例如图1的计算设备102,并且可实现例如图3的平台300。
计算设备700包括一个或多个处理器或处理单元702、可包括一个或多个存储器和/或存储组件706的一个或多个计算机可读介质704、一个或多个输入/输出(I/O)设备708、以及允许各组件和设备彼此通信的总线710。计算机可读介质704和/或I/O设备708可作为计算设备700的一部分来包括,或另选地可耦合到计算设备900。总线710表示任何若干类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各种总线体系结构的任一种的处理器或局部总线。总线710可包括有线和/或无线总线。
存储器/存储组件706表示一个或多个计算机可读介质。组件706可包括易失性介质(如随机存取存储器(RAM))和/或非易失性介质(如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件706可包括固定介质(例如,ROM、RAM、固定硬盘驱动器等)以及可移动介质(例如闪存驱动器、可移动硬盘驱动器、光盘等等)。
一个或多个输入/输出设备708允许用户向计算设备700输入命令和信息,并还允许向用户和/或其它组件或设备呈现信息。输入设备的示例包括键盘、光标控制设备(例如鼠标)、话筒、扫描仪等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等。
各种技术在此可以在软件或程序模块的一般上下文中描述。一般而言,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以是可由计算机访问的任何一个或多个可用介质。作为示例而非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁存储设备,或者任何其它可用于存储所需信息并可由计算机访问的介质。
“通信介质”通常用诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据。通信介质还包括任意信息传递介质。术语“已调制数据信号”指的是以在信号中编码信息的方式设定或更改其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
权利要求
1.一种在计算设备中实现的方法,所述方法包括
生成具有表示所述计算设备中的数据存储层中的web数据的多个对象的对象模型(506);
从在所述计算设备上执行的多个应用程序接收对所述web数据执行动作的请求(508),所述请求经由调用所述多个对象的一个或多个方法来接收;以及
对所述web数据执行所请求的动作(510)。
2.如权利要求1所述的方法,其特征在于,所述方法还包括
从在另一计算设备上执行的远程应用程序接收访问所述web数据的附加请求;
允许所述远程应用程序访问所述web数据。
3.如权利要求2所述的方法,其特征在于,所述方法还包括
标识对所述web数据的变更;以及
将所述对所述web数据的变更通知给所述远程应用程序以及所述多个应用程序中的一个或多个。
4.如权利要求1所述的方法,其特征在于,所述方法还包括
显示允许所述多个应用程序的用户选择所述数据存储层中的特定web数据的用户界面控件。
5.如权利要求1所述的方法,其特征在于,所述方法还包括
检查是否作出对所述web数据的变更;以及
如果已作出所述变更,则将所述对所述web数据的变更通知给所述多个应用程序中的一个或多个。
6.如权利要求1所述的方法,其特征在于,所述多个应用程序包括web浏览器和一个或多个其他应用程序。
7.如权利要求1所述的方法,其特征在于,所述web数据包括多个网页,其中所述数据存储层将所述多个网页中的每一个网页作为项目来存储,其中所述数据存储层还存储多个集合,并且其中所述多个集合中的每一个集合标识一个或多个项目。
8.一种或多种其上存储有指令的计算机可读介质,所述指令在由计算设备的一个或多个处理器执行时使得所述一个或多个处理器实现一应用程序编程接口层(306),所述应用程序编程接口层(306)用于允许在所述计算设备上执行的一个或多个本地应用程序(310)访问数据存储层(304)中的web数据,并且还允许在一个或多个其他计算设备上执行的一个或多个远程应用程序(312)访问所述数据存储层中的web数据。
9.如权利要求8所述的一种或多种计算机可读介质,其特征在于,所述一个或多个本地应用程序包括web浏览器和web浏览器扩展。
10.如权利要求8所述的一种或多种计算机可读介质,其特征在于,所述指令还使得所述一个或多个处理器实现一引擎层,所述引擎层用于通过将所述web数据与从取得对所述web数据的更新的一个或多个源位置获取的数据进行比较来检测对所述web数据的变更,并且将所述对所述web数据的变更保存在所述数据存储层中。
11.如权利要求10所述的一种或多种计算机可读介质,其特征在于,所述数据存储层用于在检测到对所述web数据的变更时激发事件,所述事件通知所述一个或多个本地应用程序和所述一个或多个远程应用程序已检测到所述对所述web数据的变更。
12.如权利要求11所述的一种或多种计算机可读介质,其特征在于,所述应用程序编程接口层包括同步协议模块,所述同步协议模块用于接收所述事件、维护所述对所述web数据的变更的记录并且将所述变更传递给所述一个或多个远程应用程序。
13.如权利要求8所述的一种或多种计算机可读介质,其特征在于,所述指令还使得所述一个或多个处理器使用所述计算设备的数据存储设备来实现所述数据存储层。
14.如权利要求8所述的一种或多种计算机可读介质,其特征在于,所述应用程序编程接口层包括同步协议模块,所述同步协议模块代表所述一个或多个远程应用程序来访问所述数据存储层中的web数据。
15.一种或多种其上存储有指令的计算机可读介质,所述指令在由计算设备的一个或多个处理器执行时使得所述一个或多个处理器
将具有结构化数据的一个或多个网页和不具有结构化数据的一个或多个网页存储在web数据存储中(504);
生成具有表示所述一个或多个网页的多个对象的对象模型(506);以及
允许在所述计算设备上执行的web浏览器以及在所述计算设备上执行的一个或多个其他应用程序两者经由所述对象模型来访问所述web数据存储(508、510),并且至少部分地基于所述具有结构化数据的一个或多个网页和所述不具有结构化数据的一个或多个网页来生成用户界面。
16.如权利要求15所述的一种或多种计算机可读介质,其特征在于,允许所述web浏览器和所述一个或多个其他应用程序经由所述对象模型来访问所述web数据存储是允许所述web浏览器和所述一个或多个其他应用程序通过调用所述多个对象的一个或多个方法来访问所述web数据存储。
17.如权利要求15所述的一种或多种计算机可读介质,其特征在于,所述指令还使得所述一个或多个处理器允许所述web浏览器和所述一个或多个应用程序枚举哪些行为被存储在所述计算设备的行为存储中。
18.如权利要求17所述的一种或多种计算机可读介质,其特征在于,所述行为只是与特定结构化数据类型相关联的行为。
19.如权利要求15所述的一种或多种计算机可读介质,其特征在于,所述指令还使得所述一个或多个处理器允许所述web浏览器和所述一个或多个应用程序调用存储在所述计算设备的行为存储中的行为。
20.如权利要求15所述的一种或多种计算机可读介质,其特征在于,所述指令还使得所述一个或多个处理器显示用户界面控件,所述用户界面控件允许所述计算设备的用户从所述web数据存储中的一个或多个网页中选择将由所述web浏览器或所述一个或多个其他应用程序访问的特定结构化数据片段。
全文摘要
在计算设备上实现一种应用程序编程接口(API)层。该API层允许在该计算设备上执行的本地应用程序访问数据存储层中的web数据,并且还允许在某一其他计算设备上执行的远程应用程序访问该数据存储层中的web数据。另外,该web数据可包括网页,这些网页中某一些可包括结构化数据而某一些可不包括结构化数据。web浏览器被准许经由对象模型来访问web数据存储,并至少部分地基于这些网页来生成用户界面。
文档编号G06Q50/00GK101611422SQ200880004644
公开日2009年12月23日 申请日期2008年2月12日 优先权日2007年2月12日
发明者J·T·金, W·冯科奇, S·O·林德赛, M·帕夫利契奇, W·史蒂文斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1