计算环境表示
技术领域
本发明涉及数据管理,尤其涉及以一致方式跨多个设备的数据互操作。
背景
现代计算机系统包括各种各样的相关的对象,诸如文件和文件集合(例如,构成专辑的一组MP3)、应用程序、用户简档、个人数据集(例如,书签列表、联系人列表和日历)、数据高速缓存(例如,浏览器历史和“最近使用”列表)、口令和许可集(例如,公钥/私钥对、证书和数据共享信息)、以及关于系统、设备、操作外壳和应用程序的配置信息。从另一观点来看,计算机系统包括一组应用程序,每一个应用程序都管理包括以各种方式存储在计算机系统的各个位置的各种不同的数据对象的复杂数据集。
在许多计算机系统中,这些形式的数据以自组织方式安排,其中某些形式的数据以功能但任意的方式重叠(例如,配置信息可被存储在一个或多个文件文中,并且文件可以受存储在系统注册表中的数据共享许可影响)。此外,各种计算机系统可被配置成通过以各种方式共享这些对象,例如通过跨两个或更多设备同步两组类似数据,来互操作。
概述
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键因素或必要特征,也不旨在用于限定所要求保护的主题的范围。
构成计算机系统的对象的多样性和相互关系可使得许多常见操作复杂化。作为第一示例,应用于特定对象集的对象备份、复制或同步操作可能由于对象以许多形式的(诸如文件、存储在系统注册表中的配置信息、用户简档信息和受保护口令信息)以及在许多位置的表示而复杂化,某些对象表示可混合其他对象集中的对象。作为第二示例,向计算机系统查询特定种类的对象(例如,特定用户所拥有的所有对象)可涉及对许多对象存储的广泛搜索,诸如文件系统、注册表、数据高速缓存、安全特权集以及对象的方案专用部分,诸如共享地址列表中的记录。作为第三示例,与另一设备(即使是同一用户拥有)共享对象集可能由于网络通信情况(例如,设备位于哪里以及多少带宽可用来与该设备进行通信?)以及设备特性(例如,目标设备具有多少容量、和可向其发送什么种类的对象、以及应如何格式化对象)而复杂化。作为第四示例,上述考虑事项在可涉及用户的角色和安全特权的考虑事项的在各用户之间共享数据的情形中可进一步复杂化。这些问题和其他问题可能在试图跨包括相同的应用程序集(虽然针对每一个设备的能力来定制)的多个设备提供一致的计算环境时引发,尤其是在对象集分布在多个设备上、在理想上可以无缝操作并作为聚集的对象集呈现给用户的情况下。
鉴于这些考虑事项,可设计以一致的方式存储对象并集中对象管理以获得改进的一致性和更容易的管理的计算机系统。计算机系统可被设计为包括聚集的对象系统的主接入点,该对象系统存储许多类型的对象—文件和文件集、安装的应用程序、各种类型的配置信息集、用户简档和特权、数据高速缓存等—作为具有某些基本共同性的一组对象,并被安排在构成计算机系统的整个配置的分层结构中。该计算机系统因此可以跨所有对象类型以统一的方式执行诸如查询、同步和复制等操作。该计算机系统还可管理展示相同对象集的各种设备,诸如通过将这些设备配置成向用户呈现一致的用户界面和一组共同的已部署应用程序。此外,计算机系统可基于设备的能力来调整部署到该设备的对象集,例如通过将应用程序的全特征版本部署到较强大的设备并将同一应用程序的较轻便的版本部署到较不强大的设备。该计算机系统还可协调跨设备分布的数据的同步(例如,通过在聚集对象系统中映射存储在第一设备上的某些对象,以使得当第二设备试图访问该聚集对象系统时,该计算机系统可自动化并管理第一设备上的对象向第二设备的展示)。该对象系统模型的这些和其他方面促进了跨许多设备的用户体验的合一,其中每一个设备都用作对同一对象集的门户,而不管对象的多种类型和位置以及交换和同步这些设备和对象的技术性。
因此,可设计一种在单个分层结构中并根据共同语法来表示构成计算机系统的所有对象的对象系统。被配置成管理以此方式存储的对象的计算机系统还可包括用于对对象集执行诸如备份、复制、同步、查询、共享、安全、并发访问管理和以各种格式呈现等各种操作的一组服务。此外,对象集的各部分可以用根据共同语法来表示的域专用数据来扩展,并且可由管理计算机系统的服务以一致的方式来管理。该对象集还可针对不同的设备来不同地呈现,由此提供对同一对象集的访问同时还基于设备的能力来定制该设备的参与。以此方式建模的计算机系统由此以一致的方式呈现给用户,并且改进了数据交换的自动化、对象集同步以及设备配置。
为实现上述和相关目的,以下描述和附图阐述了各个说明性方面和实现。这些方面和实现仅指示可使用一个或多个方面的各种方式中的一些。结合附图阅读以下详细描述,则本发明的其他方面、优点、以及新颖特征将变得显而易见。
附图描述
图1是表示计算环境的示例性对象分层结构的图示。
图2是可用于表示对象构成对象分层结构以表示计算环境的示例性语法的图示。
图3是示出表示计算环境的示例性方法的流程图。
图4是示出用于表示计算环境的示例性系统的组件框图。
图5是示例性对象分层结构的未展开节点的某些示例性展开的图示。
图6是根据各种数据交换格式的示例性对象分层结构的某些示例性变换的图示。
图7是示出用于表示计算环境的另一示例性系统的组件框图。
图8是计算环境主机与各计算环境呈现设备的示例性交互的图示。
图9示出了其中可实现此处所阐述的原理中的一个或多个的示例性计算环境。
详细描述
现在参考附图来描述所要求保护的主题,所有附图中使用相同的附图标记来指代相同的元素。在以下描述中,为解释起见,阐明了众多具体细节以提供对所要求保护的主题的全面理解。然而,很明显,所要求保护的主题可以在没有这些具体细节的情况下实施。在其他情况下,以框图形式示出了公知的结构和设备以便于描述所要求保护的主题。
现代计算机系统包括大量且各种对象。许多计算机系统表征文件存储,该文件存储包含用于配置该计算机系统的文件(包括可执行文件、类库、配置信息集和资源)以及由一个或多个用户生成或接收的用户文件。许多计算机系统还包括包含计算机系统硬件和软件的各种各样的配置信息,包括计算机系统的硬件和设备、操作系统、外壳用户界面、以及该外壳用户界面中可用的应用程序的配置。还可存在各种用户简档和帐户,前者包括描述特定用户或用户类的信息(姓名、外壳用户界面偏好、主目录等),而后者包括描述用户或类的特权(文件所有权、读/写特权、对各种设备的访问权等)的信息。诸如口令、证书、公钥/私钥对、以及访问控制列表等受保护的安全信息可被存储在操作系统可对其施加管制访问的安全对象中。可以存在一个或多个数据高速缓存,诸如浏览器高速缓存和历史、应用程序或浏览器文本框中的最近输入、以及最近使用的文件和对象列表。各种应用程序可创建应用程序或任务专用档案,诸如包含各种文件夹和消息的电子邮件档案以及包含由各个系统用户从各个源接收到的并在用户定义的组中组织的联系人信息的共享地址簿。最后,计算机系统可被配置成与其他计算机、用户和设备交换特定信息集,诸如要同步的对象以及可以在各种条件下授予对其的访问权(读/写特权、所有权、定额等)的对象集。这些对象类型通常由各种管理系统(例如,文件系统、系统注册表存储、用户帐户管理系统、以及电子邮件系统)在计算机系统中以自组织方式来管理,但访问方法或对象组织的一致性或标准化极少。
构成计算机系统的这些大量各种对象造成了计算机系统的使用和管理方面的许多问题。作为第一示例,这一计算机系统的备份操作可能非常困难,因为它涉及将用户数据与系统专用信息区分开。该区分可能不是简单的;例如,应用程序配置数据可能是由用户(该用户可能期望保存该配置)或由应用程序安装程序创建的,并且关于对象所有权的信息(该所有权信息是用户可能希望保存的)可以按照由计算机系统建模的用户简档和帐户来定义。作为第二示例,用户可能希望向计算机系统查询匹配特定描述的对象,诸如在前七天中创建或改变的对象,但处理该查询可涉及许多对象存储(例如,各个存储设备上的一个或多个文件存储、系统注册表、浏览器高速缓存和历史、存储在浏览器书签集中的书签、以及由电子邮件系统管理的电子邮件消息)。这些对象存储可作为数据竖井来管理,每一个数据存储都由具有特定(并且通常是专有的)界面且在对象之间具有极少共同性的不同的系统来管理。作为第三示例,计算机系统的对象集可以分布在若干设备上,但提供对这些对象集的一致访问可能由于设备的各种配置、每一个设备的网络能力、以及每一个设备用来交换数据的线格式的不兼容性(例如,第一设备可被配置成根据XML模式来交换数据,而第二设备可被配置成根据JSON来交换数据)而复杂化。
计算机系统对象的自组织安排的难点的更详细的情形涉及以设备无关方式呈现计算机系统。例如,用户可能希望诸如通过蜂窝电话、通过第二计算机系统(诸如同一用户所拥有的笔记本计算机)以及通过第三计算机系统(诸如公共访问终端)上的浏览器来在许多类型的设备上访问主计算机系统。用户可能希望访问由该主计算机系统呈现的相同对象存储,利用在该主计算机系统上安装并可用的相同应用程序,并体验与配置在主计算机系统上相同的用户界面。
主计算机系统系统中的对象的自组织安排在该情形中可造成许多困难。第一,蜂窝电话设备可具有非常少的计算资源,诸如处理能力和系统存储器,并且只能够存储构成计算机系统的对象集的一小部分。此外,蜂窝电话设备无法运行安装在主计算机系统上的强大应用程序,并且用户可能必须手动安装同一应用程序针对蜂窝电话的版本。第二,笔记本计算机可能只具有与主计算机系统的零散网络通信。用户可能期望笔记本计算机诸如通过安装相同的应用程序并且在计算机系统之间同步对对象集的变更来反映主计算机系统。然而,通过许多对象系统将许多类型的对象存储在许多位置可使该同步过程复杂化,并且通过大量有意识的工作(例如,两个机器之间的用户驱动的文件同步),用户只可实现跨两个机器的对计算机系统的部分镜像。用户还可能必须与主计算机系统分开地安装和配置笔记本计算机的操作系统和应用程序,从而导致管理工作的重复以及在配置差异情况下的可能的计算机系统不一致性。第三,第三计算机系统的浏览器可能无法操作主计算机系统的对象,并且可能无法执行安装在主计算机系统上的应用程序。
一种提供一致的用户体验的方法涉及将设备配置成瘦客户机,其中主计算机系统将用户界面的输出(包括显示和声音输出)发送到一设备,并且该设备将用户输入(包括键盘和定点输入)发回主计算机系统。虽然瘦客户机方法可改进通过多个设备展示的用户界面的一致性,但该方法呈现了若干缺点。第一,体验经常受到网络容量的限制;例如,通过瘦客户机界面播放电影可涉及尝试用跨网络的实时性能来流传输电影,这可能是不可行的。该困难是由电影在瘦客户机设备上的本地不可用性而引起的,该瘦客户机设备仅仅是对主计算机系统的图形界面的可视门户。第二,每一次用户交互的网络等待时间降低计算体验。每当用户希望访问对象,甚至重复访问同一对象时,瘦客户机设备向主计算机系统传递请求以获得响应。的确,许多瘦客户机被配置成每一键击从瘦客户机设备被发送到主计算机系统,该键击被接收,并在该设备可获得键击的视觉结果之前该键击被处理、并且该结果向用户显示。网络等待时间引起对象访问和用户输入实现的滞后,这快速降低瘦客户机用户体验的性能。第三,可能难以基于瘦客户机设备的资源来定制用户体验。例如,具有有限的屏幕分辨率的蜂窝电话可能无法显示主计算机系统的本机、较大的桌面空间。此外,主计算机系统可能不知道瘦客户机设备的限制(的确,主计算机系统可以为了用户体验一致性而努力在设备上呈现相同的用户界面和应用程序),并且可能无法将应用程序配置成在瘦客户机设备上适当地表现(例如,通过将在主计算机上运行的web浏览器配置成以移动友好方式呈现页面,诸如无线应用协议)。第四,该方法在不可用或零散网络连接上是困难的或维持不住的。用户可能不愿意接受对主计算机系统的间歇性访问,尤其是在瘦客户计算机系统具有同等系统资源(诸如,具有与主计算机系统类似的能力的笔记本计算机)并且能够在与主计算机系统类似地配置并且本地地存储对象的镜像副本的情况下提供相同的用户体验的情况下。
提供一致的用户界面的第二方法涉及漫游简档,包括将用户设置传送到改进定制用户界面的演示的若干类似地配置的设备。连接到漫游简档服务器的设备因此可接收用户简档,并且(例如)对默认系统配置应用自定义配置。虽然漫游简档可能有助于改进定制用户界面在许多设备上的部署,但存在限制漫游简档方法对一致的用户界面访问的实用性的若干缺点。第一,漫游简档通常被限于系统配置(例如,应用程序和外壳设置)和用户信息(例如,用户的姓名和安全特权),并且未被结构化为包括诸如分层组织的文件、应用程序二进制代码和安全令牌等对象。第二,因为漫游简档被指定为要应用于设备的本机配置的一组配置参数,所以该方法只对以类似方式配置的设备可行。高性能工作站、笔记本型设备和蜂窝电话通常被非常不同地配置,并且针对一个这样的设备的漫游简档对于其他设备可能具有有限用途,并且可能由于误配置而导致其他问题。例如,特定用户偏好(例如,表示双击的定点设备点击之间的时间阈值)可能随不同的设备而变化,但漫游简档可能不合乎需要地将一个用户偏好应用于所有这样的设备以促进统一用户体验。此外,针对工作站配置的漫游简档可能反映关于Dvorak键盘构造的用户偏好,但对蜂窝电话应用其中所包含的配置信息可能导致以不可用方式重新安排文本输入。第三,漫游简档是通过只读机制来部署的,并且未被设计成接受通常在计算会话期间发生的对计算机环境的许多变更。第四,漫游简档最多只可实现设备和其中存储的数据的松聚集,并且可能难以指定设备相互关系的特定方面(例如,蜂窝电话的数据存储应当在日常基础上被备份到网络)。由此,虽然漫游简档可促进以更统一的方式配置若干类似设备,但该方法不提供各种互连设备之间的统一用户体验。
与这些方法相反,此处所提供的方法涉及以可被传递至设备的方式表示计算环境以供根据设备的能力来呈现。该表示包括根据对象分层结构来组织并根据共同语法来表示的一组对象。这些对象包括计算机系统的数据对象,诸如用户文件和用户创建的数据。这些对象还包括构成操作系统组件的可执行二进制代码和类库,诸如外壳以及其中提供的应用程序。该对象还包括指定计算环境的用户界面的信息,包括外壳偏好(例如,视觉主题、应用程序启动菜单、以及双击阈值)、用户帐户及特权、安全信息(例如,口令、安全令牌、以及证书)、应用程序二进制代码和配置信息、用户数据和元数据(例如,文件共享信息)、以及数据高速缓存(例如,最近使用的文件列表和浏览器历史)。尽管这些对象具有各种性质和用途,但这些对象在对象分层结构中是以共同的方式来表示的,并且可在该分层结构中任意组织。因此,与包括各自包含一种类型的对象的一组隔离数据存储(例如,包含文件的文件系统、包含配置信息的注册表、以及包含浏览器历史的数据高速缓存)的以往系统相反,该方法中的对象分层结构在对象分层结构中以共同的方式组织所有这些对象。
以此方式表示的计算环境可被传递到任何设备并以适于该设备的能力的方式来呈现。例如,主工作站可作为稳健且通用的计算环境来呈现信息,而公共工作站可以通过web浏览器呈现不同的计算环境体验(例如,作为可在用户的会话结束时丢弃的虚拟机),并且蜂窝电话可提供具有对蜂窝电话相关信息(例如,联系人、日历、以及导航数据)的更快访问的更瘦的界面。此外,对该信息集的更新(例如,偏好改变和对其中包含的数据文件的更新)可被应用于该信息集的主源,并且因此被传播到该信息集被传递到的所有其他设备。同样,共享该计算环境的设备可以通过该共享信息集来集成,使得一个设备可以与在该信息集中标识的其他设备进行交互;例如,存储在第一设备上的数据可由第二设备访问,并且第一设备可由第二设备通过通信管道来控制。该信息集因此可以标识共享该计算环境的设备的集合,以及每一设备的角色、能力、以及资源,以便跨可能大量各种设备来提供集成计算体验。
图1示出了可包括诸如此处所公开的计算环境表示的示例性对象分层结构10的一部分。由示例性对象分层结构10的所示部分表示的计算环境包括诸如文字处理程序和电子邮件客户端等应用程序、一组用户简档、诸如文档和图像等一组用户数据、联系人、日历条目、以及其上可表示和表达计算环境的一组设备。这些对象包含具有不同语义特性的不同类型的数据,但被组织成单个树状分层结构中的对象。此外,可以混合对象类型;例如,构成应用程序(诸如文字处理器应用程序26)的对象可包括某些可执行二进制代码28、应用程序图标30、某些字典集32、以及关于特定用户的配置信息34。这种对象类型的混合在对象分层结构方法中可以比在其他方法中更容易实现;例如,在常规文件系统中,这些组件可能是分布式的,其中可执行二进制代码28位于汇编高速缓存中,应用程序图标30和字典集32位于文件系统的各个位置中,而配置信息34位于系统注册表中。
将构成计算环境的对象表示为诸如图1所示的对象分层结构呈现了许多优点。作为第一示例,该分层结构允许单独地定位每一个对象,并且以与对计算环境中的其他对象类似的方式操作这些对象。作为第二示例,可访问对象分层结构的任何设备都可呈现包含以相同方式组织的相同数据的类似地呈现和配置的计算环境。作为第三示例,可设计以类似方式操作构成计算机系统的对象中的任一个或全部的服务。例如,可使用对象同步服务来同步两个对象分层结构(诸如在存储在对象分层结构服务器上的对象分层结构和其上已加载并且稍后更改对象分层结构的设备之间)。该同步因此可统一两个对象分层结构中所表示的所有对象—不仅仅是文件和类似数据对象,而且还有对应用程序、用户简档和安全令牌的变更。因此,可以就像与文件存储中的一组文档一样容易地且通过与文件存储中的一组文档相同的机制来在两个设备之间共享一组用户简档。作为第四示例,计算环境中的对象可由用户通过向对象集添加对象来用任何任意数据来扩展。例如,图1的示例性对象分层结构10中的若干对象涉及计算机系统的用户正在开发的班级项目。用户由此可将这些对象与“学校关系”对象36相关联,该对象36可作为学校项目对象的从属来存储在示例性对象分层结构10中。对计算环境的后续查询可揭示“学校关系”对象36以及包含这些对象的对象的位置,由此使联系人集18中的联系人、用户数据集20中的文件、以及日历集22中的约会相关。该对象分层结构所表示的对象集的扩展性因此可准许用户设计新属性并对由此表示的计算环境应用这些新属性。
可由这个性质的计算环境表示实现的优点中的某一些涉及以标准方式表示对象,以使得可以在对象分层结构中一起表示对象。然而,如果对象根据具有特定结构约束的对象格式来表示,则可能难以根据该对象格式来表示特定种类的对象。例如,可设计其中每一个对象都具有指定其名称的串的对象格式。然而,某些对象可以是匿名的,而其他对象可包括无法被归纳为单个串的多个名称。然而,如果对象不共享共同性,则它们只能用纯二进制格式来表示,诸如在典型的文件系统中那样。此外,可能难以串行化使用此方式的对象表示来进行通信。例如,每一个对象都用诸如uuencode等二进制代码到文本编码机制来编码,但所得对象可能低效地较大并且难以操纵,除了原始二进制代码对象之外。或者,对象可根据诸如典型的面向对象编程平台等明确类型的系统来表示。然而,该方法限制对象分层结构的可扩展性,因为自定义对象只能在根据类型系统来定义的情况下存储并且这些定义可能不可用。
一种用于以共同但内容不可知方式表示对象的替换方法涉及使用简单语法,其中对象的分量可以按基本方式表示。例如,可以认识到,对象通常包含三种类型的数据元素:原子(单个数据单元,诸如数字或字符)、记录(一起操作的单个数据单元的集合)以及序列(元素的聚集)。记录一般表示不可分割地一起用作表示的一组元素,诸如数字7、4和1776一起表示日期1776年7月4日;而序列表示一组可分割项目,诸如2、3、5和7构成质数的子集。此外,可以递归地设计语法,这可准许嵌套特定种类的元素(例如,序列的序列、或包含序列作为记录的一个元素的记录)。
图2示出了指定对象将被表示为原子的记录的序列的示例性语法40。该示例性语法40准许递归,以使得对象可指定另一原子记录序列,而不是指定原子,从而使得序列可包含子序列,如在深度结构化对象中可能经常发生的那样。该性质的语法因此针对组织构成对象的数据单元,并且不指定或约束其中所表示的数据项的类型。该语法因此可定义可递归基本表示格式,其中以此方式表示的对象可以按内容不可知方式来存储,但具有根据简单但共同的结构来改进对象分层结构中的对象统一性的某些共同性。
构成对象分层结构的对象的这一语法表示的第一重要优点涉及该组织的内容不可知特性。许多常规计算机系统被组织成包含类似类型的对象的数据竖井(例如,包含注册表项的系统注册表、包含可执行二进制代码的汇编高速缓存、包含文件的文件系统、以及包含浏览器历史高速缓存记录的浏览器历史高速缓存),而由图2的示例性语法40表示的对象分层结构不受到这样的约束。因此,对象可根据用户的语义选择来分组,而不是通过系统体系结构的任意技术组织。例如,常规系统中的应用程序可能被组织成通过汇编高速缓存访问的可执行二进制代码、通过文件系统访问的某些补充程序文件、以及通过系统注册表访问的用户配置信息。然而,如图1的示例性对象分层结构10所示,这些不同类型的对象可被一起存储和表示在对象分层结构中。由此可减少根据对象类型的计算环境的人工划分。
构成对象分层结构的对象的语法表示的第二重要优点涉及计算环境表示的可扩展性。在许多情况下,用户可能希望向对象分层结构添加定制数据和对象,并且可能希望诸如通过用户定义的元数据来扩展与一个或多个对象相关联的信息。作为第一示例,各个用户可设计全新类型的对象并插入到对象分层结构中。只要对象根据可递归基本表示格式(例如,图2的示例性语法40中所实现的可递归序列/记录/原子组织)来表示,对象就可以甚至在不指定这些对象旨在遵照的更详细的、内容专用模式的情况下被存储在对象分层结构中。此外,诸如备份和同步服务等应用于对象分层结构的服务将自然兼容并且准备好以与其他对象相同的方式管理新的自定义对象。作为第二示例,用户可能希望将元数据与对象相关联以指示对象具有语义关系。图1示出了一个这样的情形,其中各种类型的若干对象与班级项目相关联,并且该关系可通过制定自定义对象(“学校关系”对象36)并将该对象作为每一个相关对象的从属节点来插入到对象分层结构中来表示。这样的元数据用对用户有价值的信息来补充对象分层结构的对象,并且不干扰对象或对其应用的服务的表示。
图3示出了以上讨论的技术和方法的一个实施例,该实施例被设计成表示计算环境的示例性方法50。该示例性方法50在52处开始并涉及在对象分层结构中表示54计算环境的对象,其中各个对象根据可递归基本表示格式(诸如图2的示例性语法40)来表示。在实现了将计算环境表示为根据可递归基本表示格式来结构化并且位于对象分层结构中的一组对象后,示例性方法50实现了根据此处所讨论的技术来表示计算环境,并由此在56处结束。
图4示出了以上讨论的技术和方法的另一个实施例,该实施例被设计成表示计算环境的示例性系统60。示例性系统60包括被配置成存储构成计算环境的对象的计算环境对象存储62。示例性系统60还包括计算环境表示组件64,该组件被配置成在对象分层结构中表示计算环境的对象,其中各个对象根据可递归基本表示格式(诸如图2的示例性语法40)来表示。示例性系统60还包括计算环境服务集66,该服务集又包括被配置成操作计算环境的对象的至少一个计算环境服务。以此方式配置的组件由此产生用于根据此处所讨论的技术来表示计算环境的示例性系统60。
如此处所描述的计算环境表示在若干方面可以有所不同,并且某些变体对于这些和其他技术的其他变体可呈现附加优点和/或减少缺点。在诸如图3的示例性方法50和图4的示例性系统60等这些技术的许多实施例中,可以单独地或组合地结合这些变体。
可随这些技术的实现而变化的第一方面涉及根据可递归基本表示格式的结构化对象表示。如图2的示例性语法40的描述中所提到的,对象可根据构成对象的数据单元的结构来被表示为例如原子的记录的可递归序列。该结构化表示准许构成对象的数据单元的内容不可知组织,而不涉及指定数据单元的性质(例如,类型、名称和确认)。该结构化表示也有利于提供这些对象到诸如各种XML、JSON、YAML、二进制代码或文本串行化等任何表示格式的容易变换。然而,可设计其他可递归基本表示格式,其中某些格式可提供诸如某些已定义的原语类型等更相干的结构(但可能以牺牲可由此表示的对象的多样性为代价),而其中某些格式可提供更大的灵活性(但可能以牺牲服务可操作的对象的表示共同性为代价)。本领域的普通技术人员可设计其中对象可以在计算环境中根据此处所讨论的技术来表示的许多可递归基本表示格式。
可随这些技术的实现而变化的第二方面涉及对象分层结构的组织。作为一个示例,并且如图1的示例性对象分层结构10所示,对象的结构化格式化可包括常规树结构,包括包含其他节点的根节点,这些其他节点可包含还有一些其他节点等。该对象分层结构组织模型将每一个对象限于对象分层结构中的单个位置,这可有利于一致地标识对象(例如,位于对象分层结构中的不同位置的两个对象可被认为包括两个不同的对象)以及通过递归地遍历树结构的节点来枚举对象分层结构中的对象。该对象分层结构组织模型还可反映与诸如XML和JSON等公知表示格式的相似性,并且可使得能够将对象分层结构容易地转换成这些表示格式(同样不管其中组织的对象的性质)。然而,其他对象分层结构组织模型可以与此处所讨论的技术兼容,并且可以在特定方面合乎需要。作为第一示例,对象分层结构可被组织成有向无环图,以使得作为节点位于图中的对象可以在该图中具有多于两个父节点。该组织可减少树结构的某些优点(例如,对象可通过整个图中的多个分层路径来标识,由此位于对象分层结构的不同位置的两个对象可以不被认为包括两个不同的对象)。然而,该组织可准许对象存在于多个位置,这可有利于某些对象集合,并且可避免单个对象在多个位置的冗余存储。作为第二示例,对象分层结构可被组织成部分无向图,诸如其中同一级的两个节点可以兄弟般地(fraternally)相关。例如,在图1的示例性对象分层结构10中,被组织在单个节点之下的对象可以相关以形成对象组;例如,存储在题为“The Beatles”的媒体文件夹中的音频对象中的某一些可以相关地链接以表示专辑。许多对象分层结构组织模型可由本领域的普通技术人员设计并在此处所讨论的技术的各实施例中利用。
可随这些技术的实现而变化的第三方面涉及表达计算环境表示的不同方式。计算环境表示通常可被表达为构成计算环境的整个对象分层结构的对象的全集。然而,可调整该表达,诸如通过添加或移除细节、重新安排或省略对象分层结构的各部分,并将该表示变换成除可递归基本表示格式之外的表示格式。
计算环境表示变换的第一示例涉及计算环境表示中所提供的细节量。系统可被配置成存储构成计算环境的对象分层结构的所有对象(诸如在图4的示例性系统60的计算环境对象存储62中),但在特定情况下,该系统可以只表示对象分层结构的一部分和其中组织的对象的子集。
许多情形可激发这一部分表示。作为第一情形,可以理解,构成计算环境的对象的较大数量、大小和多样性可涉及相当多的存储空间量。许多设备可能不具有足够的容量来存储完整表示,诸如特征为有限的固态存储量的蜂窝电话设备。因此,在计算环境被表示到设备的情况下,该表示可根据该设备的能力来调整。
作为第二情形,请求计算环境的设备可以简单地不需要对象分层结构中的某些对象,这些对象可以为了方便起见省略。例如,代表蜂窝电话设备的图1的示例性对象分层结构10的表示可省略诸如工作站二进制代码和浏览器二进制代码等为其他类型的设备配置的应用程序二进制代码。
作为第三情形,设备可通过有限带宽的通信信道来与存储完整表示的系统进行通信。实际上,甚至相比较快的网络连接也可能无法以及时的方式传送计算环境的完整表示。例如,通过具有理论最大值6.75兆字节/秒传输速率(不考虑网络开销)的能力的802.11g无线连接来传送100千兆字节计算环境表示可能需要超过四小时的专用、完全饱和带宽。
作为第四情形,可代表不可信用户(诸如访客或只具有对计算环境的有限访问权的用户)或者在不可信设备(诸如公共终端)上表示计算环境。可能期望将访问限于对象分层结构的特定对象或部分。由此,对象分层结构的各部分可由于授权不足而被标识为拒绝访问,或者可被模糊以使得无法检测到拒绝访问,并且对象分层结构的对象和省略部分仅仅不可见。因此,表示根据用户来调整。
作为第五情形,对象分层结构的一部分可以不由主存计算环境表示的系统来存储,而可被存储在别处。例如,构成对象分层结构的对象中的某一些可被存储在各个设备上,并且可从设备中检索并被包括在表示中(当可到达存储这些对象的设备并且可与这些设备通信时)。例如,计算环境可被表示为包括存储在蜂窝设备上的一组联系人(例如,图1的示例性对象分层结构的联系人集18)的对象分层结构。这些对象可以是(或可以不是)可检索的,但在作出检索请求之前,计算环境表示可省略对象分层结构中的这些对象和这些节点,并且可引用这些对象位于其上并且可以在请求时检索的对象存储。
在这些和其他情形中,计算环境可以按划分方式表示,只包括对象分层结构的一部分以及其中组织的对象的子集。一种实现该划分的方式是通过将对象分层结构中的一个或多个节点表示为未展开节点,该节点的对象以及该节点的从属(子)节点被省略。未展开节点可以在表示中如此指示。作为第一示例,在代表具有诸如设备存储能力等能力的设备表示计算环境的情况下,该计算环境可以用至少一个未展开节点来表示以将所表示的计算环境的大小限于不超过设备存储容量。作为第二示例,在代表用户表示计算环境的情况下,该计算环境可指定用户的用户帐户,并且该计算环境指定用户帐户对该计算环境的对象的访问特权。在这种情况下,计算环境表示可通过用至少一个未展开节点来表示计算环境来调整,该至少一个未展开节点表示对象分层结构中根据用户帐户的访问特权来对用户限制的一部分。
此外,未展开节点可被指示为在请求时可用,并且主存计算环境的完整表示的系统可被配置成接收并处理展开未展开节点的请求。例如,图4的示例性系统60可被配置成在接收到展开未展开节点的请求时提供未展开节点的对象。该系统还可通过表示对象分层结构的从属节点来展开节点。或者,该系统可通过将该节点的某些从属(子)节点表示为可随后请求展开的未展开节点来展开节点,来响应这一请求。作为第二替换方案,例如,如果节点由于对对象分层结构的未展开部分的受限访问而以未展开方式表示,则该系统可拒绝展开该节点。作为第三替换方案,在未展开节点引用其上存储对象的对象存储(例如,另一设备)的情况下,可向该对象存储发出对未展开节点的对象的请求;如果可到达该对象存储并且该对象存储提供省略的对象,则在接收到来自该数据存储的对象时,可响应于该请求来提供这些对象以补充对象分层结构并展开未展开节点。
图5示出了示例性计算环境表示72的示例70,该计算环境表示具有三个未展开节点:由于大小考虑而省略的第一未展开节点74、由于访问特权不足而省略的第二未展开节点76、以及由于对象及其从属节点在被包括在计算环境中的设备(在这种情况下是蜂窝电话设备)上的分布式存储而省略的第三未展开节点78。在第一对象表示72中,未展开节点被指示为未展开,并且可被请求展开。第二示例性计算环境表示80示出了请求展开第一未展开节点74的结果,产生更全面地表示的计算环境。然而,第一未展开节点74的某些从属节点仍旧被表示为未展开节点(出于未指定原因),并且随后可被请求展开。第三示例性计算环境表示82示出了请求展开第二未展开节点76的结果,其中该展开由于访问特权不足而被拒绝。主存该计算环境的系统可以(如图5所示)返回诸如异常等错误指示符,并且可以简单地拒绝展开该节点,和/或可将该节点表示为空且无从属节点。第四示例性计算环境表示84示出了请求展开第三未展开节点78的结果,导致向主存该第三未展开节点78的对象存储(即,蜂窝电话设备)发出请求并且用所返回的对象来补充该计算环境表示。该请求可由主存该计算环境表示的系统,或由请求展开第三未展开节点78的设备来作出。后一请求可基于由主存计算环境表示的系统授予的许可的指示,和/或安全地将作出请求的设备或用户标识为安全许可断言的请求的认证,并且主存第三未展开节点78的设备可以在提供第三未展开节点78的对象之前检查并验证这些安全凭证。本领域的普通技术人员能够设计用于表示对象分层结构中的未展开节点的许多情形,以及用于接收、处理和响应展开未展开节点的请求的许多技术,同时实现此处所讨论的技术。
计算环境表示的调整的第二示例涉及根据数据交换格式来表达表示。已经并且可以设计用于表达对象分层结构中的对象的许多协议,诸如XML、JSON、YAML、二进制代码串行化、以及文本串行化。这些和其他数据交换格式提供了各种优点和缺点,诸如可扩展性、易于模式变换、紧凑性、用各种服务(例如,XPath查询和XSL变换)来补充、与其他数据交换格式(例如XHTML)的互兼容性、以及各种语言(例如,Python和Perl)的支持度。此外,大多数数据交换格式能够表示根据递归基本表示格式的最少原理来组织的嵌套对象(例如,被组织成原子、记录和序列的数据单元的表示)。
图6示出了从递归基本表示格式到以下两种数据交换格式的两个这样的变换:XML和JSON。图6的示例90开始于包括用于文字处理器应用程序的数据项的示例性对象分层结构92的一部分,包括应用程序二进制代码、应用程序图标、字典、以及特定用户的配置文件。与图1的示例性对象分层结构10相反,该表示是根据序列/记录/原子递归基本表示格式来示出的,其中原子被表示为框、记录被表示为原子聚集(由虚线分隔)、而序列被表示为对象分层结构的树表示中的序列封装元素的从属节点。由于示例性对象分层结构92的元素的序列/记录/原子组织,可应用变换以便用各种数据交换格式来表示相同的组织概念。可应用第一变换以将示例性对象分层结构92格式化为XML表示94,其中记录被表示为封装作为空节点的记录的原子(<原子/>)的封闭元素(<记录>和</记录>),而序列被表示为封装序列的元素(<二进制代码>…,<二进制代码>…,<字典>…,等)的封闭元素(<序列>和</序列>)。类似地,可应用第二变换以便根据JSON约定来将示例性对象分层结构92格式化为JSON表示96,该JSON约定用方括号来表示记录(“二进制代码”:[…])并用大括号来表示序列(“应用程序”:{…})。可形成其他变换以自动化对象分层结构从递归基本表示格式到另一数据交换格式的变换,而不丢失信息或对于对象分层结构的内容的复杂性。本领域内的普通技术人员可设计用于将递归基本表示格式变换成其他格式的许多技术,同时实现此处所讨论的技术。
计算环境表示的调整的第三示例涉及产生根据平台表示来结构化的类实例,其中这些类实例被表示在对象分层结构中。许多计算平台支持类定义,该类定义可指定各个成员项、方法、事件、接口、以及关于类成员的安全/访问细节。被配置成在这些平台上操作的计算环境可将这些类的实例封装在所表示的对象分层结构中,并且可能期望从对象分层结构中生成类实例。例如,图1的示例性对象分层结构10包括联系人集,并且计算平台可以为联系人定义包括对应于联系人的姓名、电子邮件地址和各个电话号码的字段的联系人类。示例性对象分层结构10因此可被呈现为联系人类的两个类实例:一个对应于名为Monica的联系人,一个对应于名为Loreto的联系人。因此,这些技术的一实施例(诸如图3的示例性方法50或图4的示例性系统60)可包括将计算环境的对象编组为平台表示格式的至少一个类的实例。该编组可由计算环境表示的主机来执行,但是然后要串行化这些类实例以便跨通信信道传递至构成平台表示的设备。或者,该编组可以在主存其中定义类的平台的设备上执行;这可通过准许计算环境的主机以平台不可知方式传递计算环境表示并将类实例的编组委托给主存该平台的设备来呈现优点。本领域的普通技术人员能够参考此处所讨论的技术来设计类实例编组的许多用途。
可随这些技术的实现而变化的第四方面涉及表示的更改。在许多情况下,设备上的计算环境会话可导致计算环境的更改,诸如创建对象或对象分层结构的新部分,更新对象或对象分层结构的一部分、或删除对象或对象分层结构的一部分。实际上,对计算环境的大量更改甚至可以在较短的正常使用会话期间作出,其中计算环境包括常用高速缓存,诸如浏览器历史和最近使用的项目列表。这些更改可被本地地存储在设备中,但是直到更改被传播至计算环境表示的主机,这些更改才可对其他设备可见(除了例如对象分层结构的已更改部分被委托存储在设备的对象存储中的情况)。
因此,这些技术的各实施例能够接收更改并对计算环境表示应用更改。例如,被配置成存储计算环境表示的系统(诸如图4的示例性系统60)可包括被配置成接收至少一个计算环境更改,并根据该计算环境更改来更改对象分层结构的计算环境更改组件。作为第一示例,在更改指定删除计算环境中所表示的对象(例如,文件)的情况下,其上执行删除的设备可将该删除向主存计算环境表示的系统通知,并且该系统可从对象分层结构中移除已删除的对象。作为第二示例,可操作主存平台的设备以基于该平台所定义的类来创建新类实例(例如,基于联系人类来创建新联系人实例)。该设备可串行化该新类实例并将其传递至主存计算环境表示的系统,该系统可在对象分层结构中将新对象插入到对应于包括该类实例的数据中。在该示例中,根据递归基本表示格式来将类实例变换成与对象分层结构中的其他对象的表示一致的对象表示可以是有利的。该变换可以在设备,或主存计算环境表示的系统等上执行。本领域的普通技术人员能够设计更改对象分层结构以反映计算环境中的变更的许多方式,同时实现此处所讨论的技术。
可随这些技术的实现而变化的第五方面涉及可应用于构成计算环境的对象和对象分层结构的服务。计算环境表示中所包括的各种对象可跨越多方位的多样性,包括诸如图像等数据文件、用户简档信息、口令、应用程序二进制代码、以及各种数据高速缓存。然而,因为对象环境中的对象是根据可递归基本表示格式来存储的,所以可应用一组服务以便以类似方式操纵计算环境中的对象。例如,可设计同步服务以便将一个对象分层结构(诸如由负责主存计算环境的服务器存储的对象分层结构)的一部分或全部与另一对象分层结构(诸如存储在设备上并在该设备上操作的计算环境会话期间更改的对象分层结构)的一部分或全部同步。该同步可以按许多方式执行,诸如单向(使一个对象分层结构匹配另一个对象分层结构)、基于更新日期的双向、基于用户选择的双向等。可设计备份服务以生成对象分层结构的完整或区别图像并将其存储在诸如磁带驱动器等归档设备上。可设计查询服务以标识对象分层结构中与特定描述相匹配的对象(例如,在图1的示例性对象分层结构10中定位包含“学校关系”对象36的所有对象并由此被表示为与班级项目相关;该查询导致标识“Loreto”联系人对象、“班级项目”文件夹对象、以及2009年1月1日班会约会对象)。可设计共享服务以将对对象分层结构的各部分的各种类型的访问扩展至各种类型的用户和设备;例如,可以与操作任何种类的设备的任何游客用户用只读访问公开共享某些对象。而某些其他对象可由操作一组认证设备的一组认证用户用读/写访问来访问。可设计对象事件报告服务以记录和报告对对象分层结构的一部分或全部的更改,例如,存储在特定文件夹中的新的、已改变的和已删除的文件。
因为这些服务操作根据可递归基本表示格式来表示的对象,所以这些服务可被配置成以统一的方式应用于非常不同类型的对象;例如,通过同步服务来在各个设备之间同步用户简档可以按与在各个文件存储之间同步文件相同的方式来执行。因此,这些技术的各实施例(诸如图3的示例性方法50和图4的示例性系统60)可包括计算环境服务集,该计算环境服务集可包括对象备份服务、对象查询服务、对象同步服务和对象事件报告服务中的至少一个。这些服务可以在主存计算环境表示的系统上提供,并且可被配置(自动和/或手动)成为了维护、安全、终端用户服务提供等来对对象分层结构应用各种操作。
也可组合地实现上文中所讨论的各方面的变体以提供若干优点并减少上文中所讨论的若干缺点。一种这样的组合在图7中示出,图7示出了用于表示计算环境的示例性系统110。示例性系统110包括被配置成存储构成计算环境的对象的对象分层结构114的计算环境对象存储112,其中各个对象根据包括原子记录的可递归序列的可递归基本表示格式来表示。构成对象分层结构114的对象可由示例性系统110中诸如工作站126等各种组件来访问,以呈现示例性系统110所表示的计算环境并与其交互。
为了方便这一访问,该性质的系统(诸如图7的示例性系统110)包括计算环境表示组件116,该组件被配置成接收(例如,从工作站126)对指定数据交换格式的计算环境的请求,将对象分层结构114从可递归基本表示格式变换成数据交换格式,并响应于该请求来提供经变换的对象分层结构。示例性系统110还包括计算环境节点展开组件118,该组件被配置成在接收到展开表示对象分层结构114中的对象的未展开节点的请求时提供该对象。示例性系统110还包括计算环境外部对象存储访问组件120,该组件被配置成在接收到展开表示对象分层结构114中的对象的未展开节点的请求并引用外部对象存储(诸如蜂窝电话设备128)时向外部对象存储128请求对象,并在接收到来自外部对象存储128的对象时响应于该请求来提供该对象。示例性系统110还包括计算环境更改组件122,该组件被配置成接收至少一个计算环境更改,根据可递归基本表示格式来将计算环境更改中所表示的对象变换成对象表示,并根据计算环境更改来更改对象分层结构。示例性系统110还包括计算环境服务集124,包括被配置成在计算环境中的对象上操作的至少一个计算环境服务(例如,对象查询服务、对象镜像服务以及对象同步服务)。以此方式配置的系统从而可向各种设备提供可部署、一致的、且可扩展计算环境表示。然而,本领域的普通技术人员能够设计许多这样的系统,同时实现此处所讨论的技术。
鉴于上述技术和变体,可以理解,对象分层结构的这种制定和管理启用了以一致的方式在各种设备上操作的可部署计算环境。图8示出一个这样的场景130,其中计算环境可由计算环境主机132主存,计算环境主机132可以存储并管理对象分层结构134。计算环境主机132还可以代表各种设备(如蜂窝电话设备136、个人笔记本计算机140、以及公共工作站144)并且还代表具有不同访问特权的不同类型的用户,以不同的方式呈现对象分层结构134。该计算环境的呈现因此反映了跨展示相同的应用程序、用户简档、外壳配置、用户数据对象等的所有设备的一致计算环境。因此,用户可以通过高性能笔记本计算机访问该计算环境的全特征版本142、在低功率蜂窝电话设备136上访问该计算环境的精简版本138、以及通过公共终端144的web浏览器146访问该计算环境的可兼容浏览器并且面向隐私版本148。就每一这样的设备的能力支持该计算环境的呈现而言,由于根据每一设备的能力调整了对象分层结构134的呈现,所以可以呈现一致的用户界面和数据集。对计算环境的更新可以传播回计算环境主机132,并且可以与其他设备自动进行同步。各设备还可以通过与其他设备共享存储在本地的数据并且通过控制其他设备或由其他设备控制来进行协作。因此,可将该计算环境设计并呈现为云计算体系结构,包括表达为跨形成同一计算环境的各协作门户(具有设备专用属性)的网格的所有设备(“客户机”)的一致呈现的设备无关表示(“云”)。此外,计算环境主机132可以将服务应用于构成对象分层结构134的各个对象,并且基于对象的分层组织和可递归基本标识格式可以便于这些服务的一致可用性和应用,而不论向其应用这些服务的对象的性质如何。本领域的普通技术人员可以理解,与大型计算机、台式自组织计算机、客户机/服务器、以及瘦客户机体系结构相比,该云计算体系结构提供若干优点和减少的缺点。
图9和以下讨论提供了对用于实现此处所阐述的设备中的一个或多个的各实施例的合适的计算环境的简要、概括描述,诸如图8的计算环境主机132或诸如个人笔记本计算机140等被配置成呈现计算环境的设备。图9的操作环境只是合适的操作环境的一个示例,并不旨在对该操作环境的使用范围或功能提出任何限制。示例计算设备包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境等等。
尽管并非必需,但各实施例在由一个或多个计算设备执行的“计算机可读指令”的一般上下文中描述。计算机可读指令可通过计算机可读介质来分发(在以下讨论)。计算机可读指令可被实现为执行特定任务或实现特定抽象数据类型的程序模块,如函数、对象、应用程序编程接口(API)、数据结构等等。通常,计算机可读指令的功能可按需在各个环境中组合或分布。
图9示出了包括被配置成实现此处所提供的一个或多个实施例的计算设备152的系统150的示例。在一种配置中,计算设备152包括至少一个处理单元156和存储器158。取决于计算设备的确切配置和类型,存储器158可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。该配置在图9中由虚线154来示出。
在其他实施例中,设备152可以包括附加特征和/或功能。例如,设备152还可以包括附加存储(例如,可移动和/或不可移动),其中包括但不限于磁存储、光存储等等。这样的附加存储在图9中由存储160示出。在一个实施例中,用于实现此处所提供的一个或多个实施例的计算机可读指令可以在存储160中。存储160还可以储存实现操作系统、应用程序等其他计算机可读指令。可以在存储器158中加载计算机可读指令以便由例如处理单元156来执行。
此处所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器158和存储160都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可用于存储所需信息并且可由设备152访问的任何其他介质。任何这样的计算机存储介质都可以是设备152的一部分。
设备152还可包括允许该设备152与其他设备进行通信的通信连接166。通信连接166可包括但不限于,调制解调器、网络接口卡(NIC)、集成网络接口、射频发射机/接收机、红外线端口、USB连接、或用于将计算设备152连接到其他计算设备的其他接口。通信连接166可以包括有线连接或无线连接。通信连接166可以发送和/或接收通信媒体。
术语“计算机可读介质”可以包括通信介质。通信介质通常以诸如载波或其他传输机制等“已调制数据信号”来体现计算机可读指令或其他数据,并包括任何信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。
设备152可包括输入设备164,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外照相机、视频输入设备和/或任何其他输入设备。设备152中还可包括输出设备162,诸如一个或多个显示器、扬声器、打印机和/或任何其他输出设备。输入设备164和输出设备162可以通过有线连接、无线连接或其任何组合来连接到设备152。在一个实施例中,来自另一计算设备的输入设备或输出设备可用作计算设备152的输入设备164或输出设备162。
计算设备152的组件可以通过诸如总线等各种互连来连接。这些互连可包括诸如PCI Express等外围部件互连(PCI)、通用串行总线(USB)、火线(IEEE 1394)、光学总线结构等。在另一实施例中,计算设备152的组件可以通过网络互连。例如,存储器158可由位于通过网络互连的不同物理位置的多个物理存储器单元组成。
本领域技术人员会认识到,用于存储计算机可读指令的存储设备可分布在网络上。例如,可以通过网络168访问的计算设备170可以存储实现此处所提供的一个或多个实施例的计算机可读指令。计算设备152可以访问计算设备170并下载部分或全部计算机可读指令来执行。或者,计算设备152可以按需下载计算机可读指令的片断,或者某些指令可以在计算设备152处执行而某些则在计算设备170处执行。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上文所描述的具体特征和动作是作为实现权利要求的示例形式来公开的。
如在本申请中所使用的,术语“组件”、“模块”、“系统”、“接口”等一般旨在表示计算机相关的实体,该实体可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在控制器上的应用程序和控制器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程中,并且组件可以位于一个计算机内和/或分布在两个或更多计算机之间。
此外,所要求保护的主题可以使用产生控制计算机以实现所公开的主题的软件、固件、硬件或其任意组合的标准编程和/或工程技术而被实现为方法、装置或制品。在此使用的术语“制品”旨在涵盖可以从任何计算机可读设备、载体或介质访问的计算机程序。当然,本领域的技术人员将会认识到,在不背离所要求保护的主题的范围或精神的前提下可以对这一配置进行许多修改。
此处提供了各实施例的各种操作。在一个实施例中,所描述的操作中的一个或多个可以组成储存在一个或多个计算机可读介质上的计算机可读指令,这些指令如果被计算设备执行则使得计算设备执行所描述的操作。描述一些或全部操作的顺序不应被解释为暗示了这些操作必须要依赖于顺序。从本说明书获益的本领域技术人员应理解替换的排序。此外,应该理解并非所有的操作都必须存在于此处所提供的每一实施例中。
此外,在此使用词语“示例性”意指用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定被解释为比其他方面或设计有利。相反,使用词语“示例性”旨在以具体的方式呈现各个概念。如本申请中所使用的,术语“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或从上下文可以清楚,否则“X使用A或B”意指任何自然的包括性排列。即,如果X使用A;X使用B;或X使用A和B两者,则在任何以上情况下,都满足“X使用A或B”。另外,本申请中和所附权利要求书中所使用的冠词“一”和“一个”一般可被解释为是指“一个或多个”,除非另有指定或从上下文可以清楚指的是单数形式。
同样,虽然参考一个或多个实现示出并描述了本发明,但本领域技术人员基于对本说明书和附图的阅读和理解可以想到各种等效替换和修改。本发明包括所有这些修改和替换并且只由所附权利要求书来限定。特别地,对于由上述组件(例如,元素、资源等)执行的各种功能,除非另外指明,否则用于描述这些组件的术语旨在对应于执行所描述的执行此处在本发明的示例性实现中所示的功能的组件的指定功能(例如,功能上等效)的任何组件,即使这些组件在结构上不等效于所公开的结构。另外,尽管可相对于若干实现中的仅一个实现来公开本发明的一个特定特征,但是这一特征可以如对任何给定或特定应用所需且有利地与其它实现的一个或多个其它特征相组合。此外,就在说明书或权利要求书中使用术语“包含”、“具有”、“含有”和“带有”及其变体而言,这些术语旨在以与术语“包括”相似的方式为包含性的。