呈现同步对象的可用性状态的制作方法

文档序号:7924404阅读:175来源:国知局

专利名称::呈现同步对象的可用性状态的制作方法呈现同步对象的可用性状态
背景技术
:在计算领域内,许多情况涉及对象集合中对象(比如文件系统中文件、数据库中的记录或电子邮件邮箱中的电子邮件消息)的同步。同步可以用于例如提升(promote)对象集合的多个副本之间的一致性,所述对象集合比如是存储冗余地部署的数据库中的文件或记录的镜像集合的多个设备上的文件系统。一些这样的对象集合可以在分布式客户端集合之中被集中管理,该分布式客户端集合比如是包括由网格(mesh)主机管理的网格的设备集合,该网格主机存储对象集合的规范描述符(例如标识对象集合中的对象和其位置的数据结构的原本(mastercopy)),该网格主机指导客户端中对象的同步(例如,当第一客户端在对象集合中创建新对象时,网格主机可以通知存储对象集合的部分的其他客户端存在新对象,并且可以使对象从第一客户端到其它户端的传输便利),和/或该网格主机调停版本化(versioning)冲突(例如通过评估对象的多个版本以确定优先级并选择对象的权威版本)。
发明内容
发明内容被提供以引入下文的具体实施方式中进一步描述的简化形式的概念的选择。该
发明内容不旨在标识要求保护的主题的关键因素或必要特征,也不旨在用于限制要求保护的主题的范围。在涉及同步的对象集合的情况中,特定对象的同步可以是比较复杂的过程。例如,对象可能由于许多原因而尚未存在于同步的状态中。例如该对象可能处于正被从远程设备接收的过程中;可能已被完全接收,但可能正在等候诸如完整性检验、病毒扫描或关于对象的先前版本锁定的释放之类的处理任务的完成;或者可能已经遇到与对象集合中已经存在的对象的不同版本的版本化冲突。该复杂性对可能不能够确定为什么在特定客户端上特定对象不存在于同步状态中的用户而言会是令人受挫的。例如文件可能存在于第一设备的文件系统中,但是可能不存在于镜像该文件系统的第二设备的文件系统中,因为该文件可能处于传输中;因为第二设备不能接触第一设备;或者因为锁或版本化冲突正阻挡将文件的完全接收的版本重定位到第二设备的文件系统中的适当位置。本文提出用于促进向用户呈现在两个或更多个客户端之间同步的对象集合中对象的状态的技术(比如在经由网络连接的两个或更多设备上操作的同步服务)。这些技术涉及考虑到可能的同步状态的范围而分析对象的状态。当用户请求关于对象的同步状态的信息时,客户端可以评估该对象以确定其状态,并且可以向用户呈现信息(informative)可用性状态,比如可用状态、搜索状态、接收状态、重定位状态和丢失状态。在一些实施例中,可以通过跟踪对象集合中相应对象的元数据使该评估便利,该元数据比如是可用性状态信息在表示对象的对象描述符中的存储。该可用性状态可以响应于各种事件(例如,识别和接触容纳(hosting)对象的一个或多个客户端;从主机接收对象的一部分;接收使该对象完整的最后部分;以及将对象移动到对象集合中的规范位置)而被更新,并且该元数据可以用于识别和告知用户对象的同步状态的理由。为了完成前述和相关的目的,下文的描述和附图阐明了某些说明性方面和实现方式。这些仅仅指示了可以使用一个或多个方面的各种方式中的一些。本公开的其他方面、优点和新颖特征将在结合附图考虑时根据下文的详细描述而变得清楚明白。图1是特征在于在客户端集合之中包括对象集合的对象的同步的示范性情况的图示。图2是特征在于在对设备集合起作用的客户端之中包括由对象服务器管理的对象集合的对象的同步的示范性情况的图示。图3是特征在于在客户端集合之中包括对象集合的对象的同步的另一个示范性情况的图示。图4是根据本文所提出的技术向用户呈现对象集合中相应对象的可用性状态的图示。图5是图示向用户呈现对象集合中对象的可用性状态的示范性方法的流程图。图6是图示用于向用户呈现对象集合中对象的可用性状态的示范性系统的组件框图。图7是包括被配置成实施本文所阐明的指配(provision)的一个或多个的处理器可执行指令的示范性计算机可读介质的图示。图8图示了示范性计算环境,其中可以实现本文所阐明的指配的一个或多个。具体实施例方式现在参照附图描述要求保护的主题,在附图中相似的参考数字总是用于指代相似的元件。在下面的描述中,为了解释的目的,许多特定细节被阐明,以便提供对要求保护的主题的透彻理解。然而,可能显然的是,要求保护的主题可以在没有这些特定细节的情况下被实施。在其他情况下,结构和设备以框图形式示出以便利于描述要求保护的主题。在计算领域内,许多情况涉及包括对象集合的同步对象集合,其中两个或更多个客户端的每一个存储对象集合的至少一部分(例如对象的子集),并且其中由第一客户端添加或改变一个或多个对象导致这种新的或更新的对象向其他客户端的自动化传播。例如,两个设备中每一个可以存储文件系统的相同副本,并且当一个设备添加、修改或删除对象时,另一个设备的文件系统被自动更新以反映文件系统的变化。该同步可以例如由对每个设备起作用的同步服务执行,该同步服务向对其他设备起作用的对应的同步服务发送变化的通知,并且在另一个设备上接收到这种变化的通知时,该同步服务协商(negotiate)以接收和应用适当的数据来更新对象集合的本地存储的版本。图1呈现特征在于客户端集合12被配置用于对象集合16中的对象16的自动同步的示范性情况10的图示。在该示范性情况10中,对象集合14可以表示存储在每个客户端的存储设备中的文件系统,其中各种客户端的文件系统的一些或所有被自动同步,以便将由一个客户端接收的文件系统变化传播到其它客户端的文件系统。如该示范性情况10中进一步图示,对象集合14以分层方式构造,比如包含零个或更多个文件和子文件夹的文件夹集合。因此,根据包含对象16的文件夹的嵌套集合,每个对象16可以通过对象集合14中的与众不同的名称识别。而且,每个客户端12被配置用于使对象16和/或对象集合14的变化自动与其他客户端12同步,例如在检测到存储在“文档”最高级别文件夹中的名为“实验室报告.xlsx”的特定对象16的变化时,客户端12可以接触其他的客户端12并且可以通过向其他客户端递送对象16的名称和内容来执行同步18。每个客户端12也可以被配置成从其他客户端12接收各种对象16的变化,并且将这种变化应用到对象集合14的本地存储的版本。以此方式,客户端12可以被配置成利用其他客户端14传播对象集合14的变化(包括新文件的创建、文件的修改、文件的删除和对象16的重定位、拷贝或重命名),而不涉及用户的人工干预。对象集合14中的对象16的同步在许多情况下可能是有用的。例如,用户的计算环境可以包括应用集合(比如,操作系统、办公生产性套件、web浏览器、电子邮件客户端和一个或多个媒体应用)、媒体对象集合(例如,照片、音乐和电影)和文档集合以及其他由用户创建、获取、改变和/或消费(consume)的文件。该计算环境也可以包括可能对用户有用的其他类型的数据和计算概念,比如一个或多个应用的配置设置;诸如因特网之类的网络上用户可能感兴趣的各种位置的书签;可以被用户用来声明他或她的身份或检验另一个个体的身份的安全凭证,比如认证证书;或可以用于与其他用户以及与面向安全的网站交换加密数据的密钥。该计算环境也可以涉及各种概念,比如可以访问计算机环境和/或具有数据或对象的所有权的一个或多个用户的集合,以及可以由用户操作的一个或多个设备的表示(例如保持文件系统的工作站设备;存储相同文件系统的镜像部分的诸如笔记本之类的便携式计算机;以及手机设备和便携式音乐播放器,其中每一个存储文件系统的与每个设备的能力相关的部分)。为了使该计算环境便利,可以设计表示对象的广义的和不同的集合的对象集合,比如文件、数据对象、数据库记录、电子邮件邮箱、应用、各种应用的应用设置、地址簿中的联系人、各种用户的用户账号、可以通过其访问计算环境的设备、书签、身份认证凭证、密钥等。所有这些不同类型的对象可以建模在对象集合中,并且对象集合的相关部分可以被部署到用户通过其访问计算环境(例如,设备的“网格”)的各种设备。该情况可以促进跨设备的一致的计算环境。作为第一实例,设备可以知道计算环境中表示的用户的网格的所有其他设备,并且可以能够以便利的方式与其通信。而且,如果每个设备被配置成利用相同的对象集合,则可以跨设备实现更一致的计算体验;例如每个设备提供对以相同方式配置的相同应用集合的访问,并且暴露用户可访问的数据对象的相同集合。图2呈现了一个这种情况,其中用户的计算环境被表示为被部署到计算机和设备的集合并且由对象服务器集中管理的可部署计算环境。为了降低包括现代计算环境的数据对象的复杂性变化和分散化,可以设计计算环境的可部署表示,其中可以在数据对象集合中组织包括计算环境的数据对象,该数据对象集合可以由对象服务器容纳(host)。如果数据对象以统一方式表示并且被数据对象系统以一致方式管理,则可以设计服务集合以应用到计算环境的所有数据对象。该数据对象集合可以被递送到各种设备以表示相同的计算环境(包括相同的用户简档、应用、数据文件等),并且每个设备可以以一致方式再现计算环境而非基于设备的能力定制(例如用于从附接到工作站的键盘设备接收数据录入的硬键盘接口,和用于从手机设备接收数据录入的触摸屏软件键盘接口)。也可能有利的是,配置至少一个服务器以管理所述表示内一个或多个数据对象,并且接受要被应用到这种数据对象的操作集合(例如创建、读取、更新和删除操作的集合)。可部署计算环境的用户因此可以以平台独立和设备独立的方式与可部署计算环境交互。图2图示了一个这种情况20,其中计算环境可以由对象服务器22容纳,该对象服务器可以存储并管理可部署计算环境。对象服务器22还可以代表诸如手机设备21、个人笔记本计算机和公共工作站之类的各种设备24、且还代表具有不同访问特权的不同类型的用户以不同方式再现可部署的计算环境。因此,计算环境沈的再现反映了跨暴露相同应用、用户简档、外壳配置、用户数据对象等的所有设备的一致计算环境。因此,用户可以通过高性能笔记本计算机设备M访问计算环境沈的完整特征版本,在低功率手机设备M上访问计算设备沈的剥离版本,并且通过公共工作站设备M的web浏览器访问计算环境沈的浏览器兼容的和面向保密的版本。在每个设备M的能力支持再现计算环境26的程度上,一致的用户接口和数据集合可以被呈现,这是因为针对每个设备M的能力调节可部署计算环境的再现引起的。对计算环境26的更新可以被传播回到对象服务器22,并且可以自动地与其他设备M同步。因此,包括设备M和对象服务器22之中的对象集合14的对象16的自动化同步可以便于计算环境26向用户的便利呈现。然而,在这个和其他涉及对象集合14中的对象16的同步的情况下,特定对象16的同步可能是比较复杂的过程。尽管可能期望向用户呈现完全同步的对象集合,但是该同步过程的复杂性可以延迟一些对象16的发现或对其的改变或在特定设备上对所发现的对象的接收。例如,当对象16在计算环境(例如,由用户操作的设备的网格)中的第一设备M上被创建时,第一设备可能必须通知对象服务器22,并且随后可能必须通过网络(其可以是低带宽或间歇的)将对象16发送到对象服务器22。对象服务器22随后可能必须通知创建对象16的计算环境中表示的第二设备24。该通知可以不立即发生;例如,对象服务器22可以仅周期性地通知设备M对象集合14的变化以便节约网络和计算资源。此外,对象服务器22可能必须将对象16发送到第二设备M(且再一次,该传输也可以通过低带宽或间歇的网络发生)。可替代地,对象16可以在计算环境沈内简单地被表示,但是对象服务器22可以向第二设备M指示对象16被存储在第一设备M上,并且第二设备M可以(立即或以自组(adhoc)网方式,例如当对象16被用户使用时)努力接触第一设备M以获得对象16。而且,第二设备M可以在临时数据区域(比如文件系统的工作文件夹)中接收对象16,并且可能必须例如通过验证对象16的完整性和/或在对象16上执行恶意软件扫描来处理所接收的对象16。最后,第二设备M可能必须将对象16从临时数据区域重定位到对象集合14中的规范位置。直到完成该潜在漫长的过程,第二设备M可以不呈现对象集合14中的对象16,或可以呈现对象16但可能不能许可访问对象16(例如,对象16可以表现为第二设备M的文件系统内的文件,但是第二设备M可能不能允许用户访问对象16,直到它被完全接收和处理)。由于这些和其他原因,从第一设备M到第二设备M的对象16同步可以不立即发生,并且可以涉及明显的延迟。此外,该过程的一些复杂性可以使得所述同步失败和/或需要用户的注意以解决特定问题。作为第一实例,对象16可以存在于第一设备M上,但是第二设备M通过网络接触第一设备M可能有困难。例如由于防火墙限制、网络分成服务于第一设备M的第一网络部分和服务于第二设备M的第二网络部分、或第一设备M的网络断开,该困难可能出现。作为第二实例,对象16可以存在于第一设备M上,但是在对象16可以完全被第二设备M接收之前,第一设备M的表示可以从对象集合14移除,以使得第二设备M不能接触第一设备对以获得对象16。作为第三实例,第二设备M可能能够接触第一设备M以请求对象16,但是第一设备M可以临时不能发送对象16,例如如果对象16由第一设备M的用户排他地锁定并且一段时间不能被读取。作为第四实例,第二设备M可以完全获得对象16,但是在试图将对象16从临时数据区域重定位到对象集合14的规范位置(例如到文件系统中存在对象16的位置)时,第二设备M可以以锁定方式(例如,文件可能被用户使用中)找到存储在规范位置中的现有对象16,使得第二设备M不能利用新近接收的对象16重写现有对象16。作为第五实例,第二设备M可能发现对象16不能被重定位到规范位置,例如这是由于缺乏存储空间或不足的访问(例如,用户可能不具有访问特权以将对象16写到第二设备M上的规范位置)。作为第六实例,第二设备M可以完全获得特定版本的对象16,但是在试图将对象16重定位到对象集合14中的规范位置时,可能发现对象16的可替代版本已经存在,其导致版本化冲突(例如第一用户可以编辑第一设备对上的对象16,而第二用户同时编辑第二设备M上的对象16),并且第二设备M可能不能在没有用户干预的情况下确定保持对象16的哪个版本。由于这些和其他原因,对象16的同步可能失败,或者可能不能在没有用户涉及的情况下以安全的方式完成。鉴于所述同步过程的这些复杂性,可以理解,特定对象16的同步可能被延迟,可能失败,和/或可能需要用户的干预。然而,对用户而言,确定特定对象16的同步状态可能是困难的。例如,设备M可以简单地向用户呈现当前现有的完全同步的对象16的集合,并且还未完全同步的对象16可以在计算环境沈内简单地不可见,或者可以以较旧版本存在(例如,对象16的第一对象版本可以在计算环境沈内呈现给用户,直到第二对象版本完全被设备M接收和处理)。然而,用户可以知道特定对象16存在于对象集合14中(例如对象16在另一个设备M上可以是可见的),或者存在于不同的版本内,但是对象16或对象版本在设备M的计算环境内可以不显现给用户,直到所述同步过程完成,并且用户可能不能确定为什么该同步过程还未完成。此外,如果设备M不能完成同步过程(例如,由于文件锁),则用户可能不能确定为什么所述同步没有完成,并且可能不能干预以在没有该信息的情况下解决该故障。这些缺陷可以导致跨用户网格设备M的对象集合14的呈现中的不期望的不一致。图3呈现了特征在于对象集合14的对象16的同步中的各种类型的复杂性的示范性情况30,其可以降低不同设备M上对象16的可用性。在该示范性情况30中,三个客户端12(例如对三个不同设备M起作用的同步服务)努力响应于对象集合14的第一客户端12上对象16的变化使对象16同步。例如,在名为“工作”的文件夹内,可以创建两个对象16名为“客户端列表.xlsx"的第一文档和名为“客户端信件.docx"的第二文档。(可替代地,这些对象16可以已经以完全同步的状态存在于客户端12之中,但是用户可以改变这两个对象16)。在接收这些对象16时,第一客户端12可以努力使这些对象16与其他客户端12同步。因此,同步18可以在第一客户端12与用于每个新(或被更新的)对象M的每个其他客户端12之间执行。然而,在该示范性情况30中,由于不同的原因,每个同步18可能尚未完成,或者可能失败。作为第一实例,第一对象16可以仍然处于从第一客户端12到第二客户端12的传输36的过程中;这可以是漫长的过程,例如如果对象16较大和/或如果第一客户端12与第二客户端12之间的网络连接是低带宽和/或间歇的。作为第二实施例,第一对象16可以已经完成从第一客户端12到第二客户端12的传输34,但是取代放置在对象集合14的规范位置中(例如在第二客户端12的文件系统的“工作”文件夹内),第二客户端12可能必须执行各种类型的处理36,比如完整性检验(例如,用于验证对象16已被完全接收而没有数据误差的校验和比较)和/或恶意软件扫描。因此,对象16可以存在于第二客户端12的数据存储器32内(例如,系统存储器内,或诸如硬盘驱动器之类的存储设备的临时数据区域内),但是可能尚未存在于对象集合14中。作为图3的示范性情况30中所示的同步复杂性的第三实例,第一对象16可以已经完成从第一客户端12到第三客户端12的传输34,第三客户端可以已经将第一对象16存储在数据存储器32中,并且可以已经完成第一对象16的处理36。然而,当第三客户端12努力将第一对象16重定位到对象集合14中的其规范位置时,第三客户端12可能发现尽管所接收的第一对象16以特定版本(例如,版本“A”)存在,但是第一对象16的可替代版本(例如,版本“B”)存在于规范位置处。第三客户端12可能不能选择哪个版本具有优先权(例如,如果版本“A”由第一用户创建,而版本“B”由第二用户创建),并且版本冲突38因此可能出现,这不能由第三客户端12在没有用户干预的情况下解决。作为第四实例,第二对象16可以已经完成从第一客户端12到第三客户端12的传输34,第三客户端12可以已经将第二对象16存储在数据存储器32中,并且可以已经完成第二对象16的处理36。然而,当第三客户端12努力将第二对象16重定位到对象集合14中的其规范位置时,第三客户端12可能发现第二对象16的先前版本存在于规范位置处,但是被锁定以防写入。即使第二对象16的第一对象版本可以用第二对象版本安全地重写,第三客户端12也可能不能执行该重写,这是因为在规范位置处对象16的第一对象版本的锁定,从而导致锁定的文件故障40。由于图3的示范性情况30中所示的原因和各种其他原因,对象16的同步可能失败。然而,在所有四种情况下,第二客户端12和第三客户端12可被配置成向用户仅呈现针对其已经完成同步的对象16(和其版本)。第一对象16和第二对象16因此可以不向用户显现在第二客户端12和第三客户端12的对象集合14中,或者可以显现为这种对象16的更旧的版本,并且该用户可能不能确定计算环境的客户端12之中不一致呈现的对象集合14的原因。本文中提出用于向用户呈现对象集合14的对象16的可用性状态的技术。这些技术涉及评估对象16以确定对象16是否是可用的且已被完全同步,并且如果否,则确定缺乏同步的原因。该评估可以包括对其他客户端12(例如经由通信网络或进程间通信信道)的连接状态和可用性、与对象服务器22的通信和/或容纳客户端12的设备的数据存储器32的状态的评估。随后,对象集合14的各种对象16的可用性状态可以被例如作为列表或作为一个或多个所选对象的特性呈现给用户。图4呈现了涉及本文所提出的用于识别各种对象16的同步状态以及将该信息向客户端12的用户52呈现M的技术的应用的示范性情况50。该客户端12可以包括被配置成存储各种对象16的数据存储器32(例如,包括存储文件集合的文件系统的存储设备),在此数据存储器32内,客户端12可以存储包括与其他客户端12同步的对象集合16的对象集合14。其他对象16可以被存储在数据存储器32中,但是可以不是对象集合14的一部分;例如,客户端12可以存储设备特定的对象16,比如包括操作系统的文件集合、用于设备的硬件组件的硬件驱动器集合,和可以使客户端12的执行便利的高速缓存中的条目集合。这些对象16可以仅涉及特定客户端12和/或容纳客户端12的设备,并且可以因此不与其他客户端12同步。而且,根据本文所提出的技术,对象集合14的相应对象16可以与指示对象16的可用性状态56的对象描述符58关联。在接收到创建对象集合14中的对象16的通知时,客户端12可以创建用于对象16的对象描述符58,或者可以从对象服务器22接收对象描述符58。客户端12随后可以在检测到与对象16的同步相关的各种事件时更新对象描述符58,所述各种事件比如从另一个客户端12接收对象16;将对象16重定向到对象集合14中的规范位置(例如,从文件系统中的临时存储位置到文件的规范位置);通知要被应用以便将对象16更新为当前版本的对象16的修改;或者版本化冲突。在图4的该示范性情况50内,用户52可以请求由设备存储的且与客户端12同步的所有对象或这些对象16的子集合(例如,最近同步的对象)的同步状态的呈现M。用户52还可以指定特定对象16或对象16的集合,比如特定文件或包括应用的文件集合,并且可以请求其可用性状态56。根据本文所提出的技术,客户端12可以执行对对象16的分析,比如检查对象集合14以确定对象16的可用性;检查数据存储器32以确定对象16的存在性(例如,尚未被完全处理且尚未在对象集合14中可用的对象16的接收);以及对象16的两个版本之间的版本化冲突的存在性。对象16的分析还可以包括检查对象16的对象描述符58,该描述符可以包括与对象16的可用性状态56相关的信息且其可以不通过检查对象16本身来确定。该信息因此可以包含在对象16的可用性状态56向用户52的呈现M中。例如,在图4的示范性情况50中,六个对象16被表示为存在于对象集合14中,第一对象16可以在对象集合14中是可用的。客户端12可以已经接收到第二对象16存在的通知,但是可以处在接触正存储第二对象16的另一个客户端12的过程中(例如,通过向另一个客户端12发送传输第二对象16的请求62)。第三对象16可以处在正被从另一个客户端12向客户端12传输(例如通过网络)的过程中,并且尽管客户端12可以不将第三对象16表示为在对象集合14中是可用的,但是客户端12可以正将第三对象16的所接收的部分存储在数据存储器32中(例如在临时位置中,其中来自挂起的下载的数据可以被临时存储)。第四对象16可以已经被客户端12完全接收,但是可以处在正被重定位到对象集合14中的规范位置的过程中(例如,来自第一存储设备的数据的移动,其中第四对象16的数据在传输期间被存储到第二存储设备,其中根据对象集合14,第四对象16属于第二存储设备)。第五对象16可以已被完成接收,并且可以存储在数据存储器32中,但是在努力将第五对象16重定位到规范位置时,客户端12可能已遭遇锁定问题,比如规范位置处存在第五对象16的较早期版本被用户使用中且因此被锁定以防重写。类似地,第六对象16的第一对象版本(例如,“版本A”)也可以已经被完全接收,且可以存在于文件存储器32中,但是在努力将第六对象16移动到对象集合14的规范位置时,客户端12可能已遭遇版本化冲突,比如在规范位置处存在第六对象16的可替代版本(例如,“版本B”),其中不同版本的版本化优先级不能自动确定。例如,用户52可能已经在修改第六对象16的初始版本以生成第一对象版本,而另一个用户52可能已经在修改第六对象16的初始版本以生成第二对象版本。对于客户端12而言,可能难以以自动化方式调和(reconcile)同时发生的改变和所得的第六对象16的版本,特别是如果这样的变化是互斥的(例如,其中第一对象版本改变文档的一段,而第二对象版本删除该段)。在该示范性情况50中,且根据本文所提出的技术,客户端12可以通过检查作为相应对象16的可用性状态56的决定性的各种因素来呈现相应对象16的可用性状态56。例如,客户端12可以检查数据存储器32和/或对象集合14中的对象16的可用性、存储对象16的一个或多个客户端12的计算环境中的所述表示、对象16是否当前正被从一个多个主机接收。客户端12还可以确定各种冲突是否存在,比如锁定冲突或版本化冲突。在一些这样的实施例中,且在该示范性情况50中,客户端12可以监视与用于相应对象16的这些可用性状态56相关联的事件,并且在检测到用于对象16的这种事件时,可以将对应的信息存储在对象16的对象描述符58中。当用户52请求一个或多个对象16的可用性状态M时,客户端12可以检查对象16的对象描述符56(除了对象16的其他属性之外),以便确定可用性状态56。客户端12随后可以为用户52生成特征在于可用性状态56的呈现M。以此方式,客户端12可以履行用户52的查询,这可以满足用户52的好奇心、允许用户52预期对象16的可用性、和/或解决可能干扰对象16的可用性的冲突。图5呈现图示为向客户端12的用户52呈现包括至少一个主机的计算环境内对象集合14中的对象16的可用性状态56的示范性方法70的这些技术的第一实施例。该示范性方法70可以例如在具有处理器的设备M上执行,并且可以实现为被存储在设备M的存储器组件(例如,系统存储器、硬盘驱动器、固态存储设备或磁盘或光盘)中且可在处理器上执行的软件指令集合。示范性方法70在72处开始并且涉及在处理器上执行74被配置成执行本文所提出的技术的指令。特别地,所述指令被配置成当接收76向用户52呈现对象16的可用性状态56的请求时,首先确定78对象16在数据存储器32中是否可用。当确定80对象16在数据存储器32中可用时,示范性方法70涉及确定82对象16是否在对象集合14中可用。如果是这样84,则示范性方法70向用户52呈现86可用状态(指示对象16是可用的),且随后在104处结束。反之,如果对象16被确定为在对象集合14中不是可用的88,则示范性方法70涉及向用户52呈现90重定位状态,且随后在104处结束。然而,如果对象16最初被确定为在数据存储器32中不是可用的92,则示范性方法70涉及确定94对象16是否正被从主机(例如,另一个客户端12和/或容纳对象16的设备对,包括对象服务器22)接收。如果是这样96,示范性方法70涉及呈现98接收状态,并且随后在104处结束;但是如果不是这样100,则示范性方法70涉及呈现102请求状态,且随后在104处结束。以此方式,示范性方法70确定对象16的可用性。附加的变化(包括本文所提出的那些变化)可以呈现更详细的信息,比如对与对象16相关联的锁定冲突和/或版本化冲突的检测。图6呈现被图示为示范性系统118的这些技术的第二实施例,该示范性系统118被配置成向具有处理器114和数据存储器32的设备M上的客户端12的用户52呈现包括至少一个主机116的计算环境内对象集合14中的相应对象16的可用性状态56。该示范性系统可以例如实现为包括互操作软件组件集合的软件架构,每个互操作软件组件在设备24的存储器组件(例如,系统存储器、硬盘驱动器、固态存储设备或磁盘或光盘)中,且每个互操作软件组件执行与可用性状态56的呈现M相关的一个或多个任务。示范性系统114包括对象状态确定组件120,其被配置成针对对象集合14的相应对象16选择可用性状态56。对象状态确定组件120可以通过检查对象16的各种属性(在一些实施例中包括存储在对象16的对象描述符56中的信息)确定对象16的可用性状态56。例如,当确定了对象16在数据存储器32中和在对象集合14中是可用的时,对象状态确定组件120可以选择可用性状态,但是当确定对象16在数据存储器32中是可用的但在对象集合14中是不可用的时,可以选择重定位状态。反之,当确定对象16在数据存储器32中是不可用的但正被从主机116接收,则对象状态确定组件120可以选择接收状态;且当确定对象16在数据存储器32中是不可用的且没有正在被从主机116接收时,对象状态确定组件120可以选择请求状态。示范性系统118还包括对象状态呈现组件122,其被配置成针对对象集合14的相应对象16向用户52呈现所选的可用性状态。以此方式,示范性系统118的组件互操作以向用户16告知对象集合14.1的相应对象16的可用性状态56。又一个实施例涉及包括被配置成应用本文所提出的技术的处理器可执行指令的计算机可读介质。图7中图示了可以以这些方式设计的示范性计算机可读介质,其中实现方式130包括计算机可读介质132(例如,⑶-R、DVD-R或硬盘驱动器的盘片(platter)),其中计算机可读数据134编码在该计算机可读介质上。该计算机可读数据134继而包括被配置成根据本文所阐述的原理操作的计算机指令集合136。在一个这种实施例中,处理器可执行指令136可以被配置成执行向用户呈现对象集合中的对象的可用性状态的方法,例如图5的示范性方法70。在另一个这种实施例中,处理器可执行指令136可以被配置成实现用于向用户呈现对象集合中对象的可用性状态的系统,比如图6的示范性系统118。该计算机可读介质的一些实施例可以包括非瞬时(nontransitory)计算机可读存储介质(例如硬盘驱动器、光盘或闪存设备),其被配置成存储以此方式配置的处理器可执行指令。许多这种计算机可读媒体可以由本领域普通技术人员设计,这些计算机可读媒体被配置成根据本文所提出的技术操作。本文所讨论的技术可被设计成在许多方面具有变化,并且一些变化可以相对于这些和其他技术的其他变化呈现附加优点和/或减少缺点。而且,一些变化可以以组合方式实现,并且一些组合可以通过协同合作体现(feature)附加的优点和/或减少的缺点的特征。所述变化可以被并入各种实施例(例如图5的示范性方法70和图6的示范性系统118)从而给这样的实施例赋予单独的和/或协作的优点。可以在这些技术的各实施例之间变化的第一方面涉及其中可以利用这样的技术的情况。图2呈现第一示例情况20,其中这些技术可以用于呈现对象集合14中对象16的同步和可用性,对象集合14中的对象16由包括网格的设备M集合中的对象服务器22管理。这样的设备M可以以客户端-服务器协议和/或点对点(peer-to-peer)交换协议排他地与对象服务器22通信或者彼此通信。然而,其他情况也可以适合于本文所提出的技术的应用。例如,所述技术可以用于在没有对象服务器22的情况下呈现在两个或更多设备M中同步的对象16的可用性,比如通过点对点交换协议共享的对象16,或者由被一个或多个其他客户端12镜像的第一客户端12存储(例如在冗余的数据存储或文件服务情况中)的对象16。作为第二实例,许多类型的对象16的可用性可以以此方式呈现,所述许多类型的对象包括文件系统中的文件、分布式和/或镜像的数据库中的数据库记录、对象系统(比如CORBA冲面向对象的对象、和电子邮件共享系统中的电子邮件消息。作为第三实例,许多类型的客户端12可以包含在这种同步中,这些客户端类型包括被配置成管理数据存储器32的硬件驱动器、被配置成管理对象16的同步的操作系统组件或被配置成管理和/或呈现对象集合14中的同步对象16的应用。这样的客户端12还可以包括对相同设备M起作用的多个软件进程。作为第四实例,对象16可以在客户端12之间通过许多类型的网络而被同步,所述网络包括设备到设备通信信道,如红外通信信道;有线或无线局域网;个人区域网,比如蓝牙网络;区域网,比如蜂窝网络;广域网,比如互联网;两个或更多个客户端12之间的虚拟网络;进程间通信信道;以及硬件总线。本领域普通技术人员可以设计许多其中可以利用本文所提出的技术的情况。可以在这些技术的各实施例之间改变的第二方面涉及可以呈现的可用性状态124的类型。根据这些技术的若干实施例,客户端12可以被配置成发送可用性状态124,包括,可用的状态、重定位状态、请求状态和接收状态。然而,一些实施例也可以被配置成检测各种对象16的附加的可用性状态124,该附加的可用性状态可以提供关于对象16的附加细节,这可以便于用户52确定对象16何时变得可用、为什么对象16当前不是可用的、和/或为减轻对象16的不可用性可以采取的动作。作为第一实例,对象16的请求状态可以包括关于对象16的请求的附加细节。例如,客户端12可以确定对象16被存储在计算环境内所表示的主机116(例如,由用户52操作的设备的“网格”内所表示的设备)上,并且可以因此将请求状态呈现为搜索状态,其指示客户端12正在搜索主机116。可替代地或此外,客户端12可以确定在计算环境内没有主机116存储对象16,并且可以因此向用户52呈现丢失状态,其指示只有来自已经从网格中移除的一个或多个主机116的对象16是可用的。而且,在附加实施例中,搜索状态(指示来自计算环境中所表示的至少一个主机116的对象16是可用的)可以指示客户端12接触主机116的进展。例如当确定存储对象16的主机116是不可达到的时(例如,在网格中被表示但当前不是可访问的,比如由于网络断开或下电(powered-down)的设备),客户端12可以向用户52呈现主机不可用状态;但是如果至少一个主机116是可达到的(例如,经由通信网络),客户端12可以向用户52呈现主机连接状态,其指示客户端12正努力连接到主机116。作为该第二方面的第二实例,这些技术的一个实施例可以被配置成检测干扰对象16的重定位的各种类型的冲突。第一个这种冲突涉及锁定冲突。例如,对象16作为第一对象版本存在于对象集合14中,并且对象16的替代对象版本可以已经完全被接收且被存储在数据存储器32中;但是当客户端12努力通过重写第一对象版本将对象16的替代对象版本重定位到对象集合14时,客户端12可以发现第一对象版本已经被锁定以防重写(例如用户52可能正在观看第一对象版本),比如图3的示范性情况30中的锁定文件故障40。该锁定冲突可以干扰对象16的后续对象版本到对象集合14的部署,但是用户52可能不理解该干扰的性质。因此,当检测到用于用户52已经请求针对其的可用性状态124的对象16的锁定冲突时,客户端12可以向用户52呈现锁定冲突状态。第二个这种冲突涉及版本化冲突,其中对象16作为第一对象版本存在于对象集合14中,并且其中对象16的第二对象版本对象被接收并被存储在数据存储器32中,但是其中客户端12不能自动确定对象16的哪个对象版本替代其他对象版本,比如在图3的示范性情况30中的版本冲突38中。因此,该版本冲突可以干扰对象16的第二对象版本到对象集合14的部署(用户52可以将该版本认为是替代对象版本,但是客户端12可能不能自动解决它),并且用户52可能不理解该干扰的性质。因此,当检测到用于用户52已经请求可用性状态124的对象16的版本化冲突时,客户端12可以向用户52呈现版本化冲突状态。本领域普通技术人员可以设计描述对象集合14的对象16同时实现本文所提出的技术的许多类型的可用性状态124。可以在这些技术的各实施例之间改变的第三方面涉及评估对象16以选择精确的可用性状态124的方式。这些技术的一些实施例可以完全基于自组(adhoc)执行评估,例如通过完全检查与每个对象16的可用性相关的所有原因且报告对应的可用性状态124。然而该评估可能是复杂的,所以这样的实施例可能是不希望的慢,特别是如果许多对象16的可用性状态可以被请求的话。因此,取代相应对象16的可用性的完全自组的评估,这些技术的实施例可被配置成检测在客户端12的普通操作期间与相应对象16的可用性相关的事件;记录这种用于相应对象16的事件的发生;以及响应于后续接收的报告其可用性状态124的请求使用所记录的信息加快对象16的可用性的评估。例如,对于对象集合14的相应对象16,一个实施例可以存储对象描述符58,其特征在于与对象16的可用性相关的至少一个对象元数据(例如,可以基于对影响对象16的可用性的各种事件的检测针对对象16设置或清除的标记数组)。该实施例可以利用这些对象元数据检测对象16的可用性状态IM的一些或所有方面。在这些技术的不同实施例中,这些对象元数据可以提供充足的信息以识别对象16的任何可用性状态124,使得对象16的可用性的评估可以完全基于对象16的对象描述符58来执行;而在其他实施例中,对象描述符58的检查可以与其他评估技术组合以识别对象16的可用性状态124。该第三方面的第一实例涉及包含管理客户端12上的对象16的可用性的对象服务器22的情况(例如,管理设备M集合中对象集合14的可用性的网格主机)。在这样的情况中,对象服务器22可以被配置成当对象16或现有对象16的新版本由相同的客户端12或由另一个客户端12在对象集合14中创建时向客户端12发送对象描述符58。对象描述符58可以指示例如对象16的规范位置、可以正在存储对象16的一个或多个主机116(例如网格中可以当前存储对象16的一个或多个设备M)、与对象16相关的完整性检验信息(例如哈希码)、和/或可能在检测和/或解决版本化冲突中有帮助的用于对象16的版本化信息。而且,对象服务器22可以在检测到对象16的创建时向客户端12发送对象描述符58,即使对象16尚未被传输到客户端12和/或对象服务器22,并且对象16或其对象版本向客户端12的传输可以随后被发起(例如,当客户端12具有空闲处理时间和/或备用带宽时,或当对象16被用户52访问时)。客户端12可以因此被配置成在从对象服务器22中接收到对象描述符58时将对象描述符58存储在数据存储器32中。该第三方面的该第一实例的若干变化可被设计。在第一个这种变化中,与对象16的接收相关的各种事件(如由对象服务器22引导)可以被检测并被存储在对象描述符58中,并且稍后用于识别对象16的精确的可用性状态124。例如,客户端12可以从对象服务器22接收在数据存储器22中不可用的对象16的对象描述符58,并且其中对象描述符58识别正存储对象16的至少一个主机116。一个实施例可以被配置成在接收到对象描述符58时从一个或多个主机116请求对象16并且将请求元数据存储在对象描述符58中。当从主机116接收到对象16的至少一个对象部分时,该实施例可以被配置成用指示对象16当前正被接收的接收元数据取代对象16的对象描述符58中的请求元数据。这些元数据随后可以用于在请求用户52时确定对象16的可用性状态124;例如当将对象16识别为在数据存储器32中不可用时,该实施例可以通过在对象16的对象描述符58中分别识别接收元数据或请求元数据来确定对象16当前是否正从至少一个主机116被接收。作为在可用性状态124的确定中另一水平的细节,从主机116请求对象16可以涉及当首先从对象服务器22接收对象描述符58时,努力接触至少一个主机116,并且可以同时将搜索元数据存储在对象描述符58中(其指示客户端12正在搜索主机116但是尚未成功地从主机116请求对象16);以及当接触至少一个主机116且从主机116请求对象M时,该实施例可以用请求元数据取代对象描述符58中的搜索元数据。因此,如果对象16的可用性状态IM在这期间被请求,则该实施例可以被配置成在识别已被请求可用性状态124的对象16的对象描述符58中的搜索元数据时,向用户呈现搜索状态,其指示客户端12正在搜索从其请求对象16的一个或多个主机124。作为该第三方面的该第一实例的第二变化,对象描述符58可以存储与存储对象16的主机116的可访问性相关的信息。例如,当主机116从对象集合14中移除时(例如,当设备M从网格中移除时),对象服务器22可以被配置成向客户端12发送主机移除通知。当接收到这种通知时,这些技术的一个实施例可以被配置成识别对象集合14中在数据存储器32中不可用且不再被对象集合14中所表示的任何主机116存储的对象16。对于这样的对象,该实施例可以在对象16的对象描述符58中存储丢失元数据,其指示对象16不再可用;且当识别已经请求可用性状态1的对象16的对象描述符58中的丢失元数据时,该实施例可以向用户52呈现丢失状态。该第三方面的该第一实例的第三变化涉及可以在同步情况内出现的假否定结果的特定情况。在一些情况中,对象16的新的或被更新的对象版本可以被报告为不可用,直到从主机116接收对象16(或对象版本),但其中对象16(或对象版本)实际上在对象集合14中已经是可用的。该情况可以例如在用户52独立于客户端12使对象16同步的情况下出现,比如在同步过程之外通过将对象16的新的或被更新的版本拷贝到数据存储器32的对象集合22内对象16的规范位置处,使得同步过程不被告知该拷贝和可用性。因此,客户端12可以随后从对象服务器22接收用于对象16的对象描述符58,并且可以继续将对象16报告为不可用,直到接收为止。根据该第三变化,这种不精确可以通过在接收时验证每个对象描述符58(比如通过在将对象16报告为不可用之前验证对象集合14中对象16的可用性)来减少。而且,直到对象描述符58被验证,对象16(或被更新的对象版本)可以被客户端12忽略。因此,这些技术的一个实施例可以被配置成当从对象服务器22接收到对象16的对象描述符58时,在对象16的对象描述符58中存储未经验证的对象元数据,其指示对象描述符58尚未被验证。当随后验证对象16在数据存储器32中是不可用的时,该实施例可以用不可用元数据取代对象16的对象描述符58中未经验证的对象元数据;但是当确定对象58在数据存储器32中是可用的时,该实施例可以用可用的元数据取代对象16的对象描述符58中未经验证的对象元数据。然而,如果对象16的可用性状态IM在这期间被请求,则该实施例可以简单地忽略未经验证的对象描述符58的存在,并且可以报告对象或对象版本不存在于文件系统中。以此方式,可以通过在接收时验证对象描述符58且通过忽略在这期间的这种对象描述符58来减少对象集合14内对象16的不可用性的不精确报告。该第三方面的第二实例涉及使用对象16的对象描述符58来识别各种可用性状态124(比如请求状态、接收状态和可用状态)的方式。例如,这些技术的一个实施例可以被配置成当接收到对象16的对象描述符58时,在对象16的对象描述符58中存储请求元数据。该实施例可以进一步被配置成当接收到至少一个缺失对象部分仍然缺失的对象16的对象部分(例如其中对象16仅部分已经被接收)时,利用接收元数据取代对象16的对象描述符58中的搜索元数据;以及,当接收到没有缺失对象部分的对象16的对象部分(例如完全接收的对象16)时,利用可用元数据取代对象16的对象描述符58中的接收元数据。该实施例还可以被配置成通过在对象16的对象描述符58中分别检测接收元数据、请求元数据或可用元数据来评估作为接收、请求或可用的对象的可用性状态124。在另一个实施例中,可以例如通过当接收到没有缺失对象部分的对象16的对象部分时在对象16的对象描述符58中存储重定位元数据、并且在将对象16插入到对象集合14中时利用可用元数据取代对象16的对象描述符58中重定位元数据来添加可用性细节的附加水平;以及通过在对象16的对象描述符58中识别重定位元数据来确定对象16在数据存储器32中是可用的但在对象集合16中是不可用的。以此方式,这些技术的一个实施例可以检测并记录与对象16的可用性相关的事件和/或作为可用性状态58的一部分可以通知用户52从一个或多个主机116请求和接收对象16的过程。作为该第三方面的第三实例,对象描述符58可以包含在对象16的对象版本中版本化冲突的检测、呈现和/或解决中。例如在对象集合14的对象16被第一用户52修改以生成第一对象版本且被第二用户52修改以生成第二对象版本的情况下可以出现版本化冲突。在这样的情况中,客户端12可能不能确定如何解决该版本化冲突,比如是否任一对象版本替代另一个对象版本,修改是否将被合并等等。在同步的对象集合16的对象16的背景中,这种版本化冲突可以在如下情况中被检测到当对象16的第一对象版本被客户端12接收并且被存储在数据存储器32中,但是当客户端12试图将对象16重定位到对象集合14内的规范位置时,对象16的第二对象版本被发现存在于规范位置处。在这样的情况中,这些技术的一个实施例可以在对象16的对象描述符58中存储版本化冲突元数据,其指示对象16的版本化冲突的存在;且当被请求呈现对象16的可用性状态56时,一个实施例可以在识别对象16的对象描述符58中的版本化元数据时呈现关于对象16的冲突状态。该版本化冲突可以例如通过比较可以指示每个对象16的对象版本的一个或多个对象版本标识符来检测。这种对象版本标识符的对象版本标识符集合可能是可用的,且可以包括例如对象哈希码、对象修改日期、对象版本指示符(例如存储在对象16中或与之相关联的版本号)。该实施例因此可以通过检测对象16的第一对象版本中的一个或多个对象版本标识符且随后将这些对象版本标识符与对象16的第二对象版本的对应的对象版本标识符进行比较来识别版本化冲突。而且,随版本不同的对象版本标识符可以连同对象16的可用性状态56(例如,冲突状态)向用户呈现。作为该第三方面的另一个第三实例,这些技术的另一个实施例可以辅助解决版本化冲突。例如,该实施例可以允许用户52选择对象16的一个对象版本(所选的对象版本)替代对象16的另一个对象版本(未被选择的对象版本)。如果用户52选择数据存储器32中可用的但在对象集合14中不可用的对象版本(例如,最近接收到的对象版本),则该实施例可以被配置成通过拷贝所选的对象版本覆盖(over)未被选择的对象版本来解决版本化冲突。相反地,如果用户52选择在对象集合14中可用的对象版本,则该实施例可以通过简单地删除最近已经接收到的未被选择的对象版本来解决版本化冲突。在上述两种情况的任意一种情况下,在解决版本化冲突时,该实施例可以利用可用元数据取代对象16的对象描述符58中的冲突元数据以指示版本化冲突的解决。可替代地或此外,该实施例可以简单地告知用户52所述版本化冲突,并且当检测到对象16的版本解决(例如由用户52手动地实现或由应用自动地实现)时,该实施例可以利用可用元数据取代冲突元数据。以此方式,这些技术的实施例可以跟踪、报告和辅助解决对象集合14的对象16的版本化冲突。本领域普通技术人员在实现本文所提出的技术的同时可以设计检测和跟踪对象16的可用性并向用户52报告其可用性状态56的许多方式。尽管已经以特定于结构特征和/或方法动作的语言描述了本主题,但是应当理解,所附权利要求中定义的该主题不一定被限于上文描述的特定特征或动作。相反,上述特定特征和动作是作为实现权利要求的实例形式而被公开的。本申请中所使用的术语“组件”、“模块”、“系统”、“接口”等等一般地旨在指计算机相关实体、硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于,运行在处理器上的进程、处理器、对象、可执行(executable)、执行的线程、程序和/或计算机。通过图示,运行在控制器上的应用和该控制器二者都可以是组件。一个或多个组件可以存在于执行的进程和/或线程内,并且组件可以定位在一个计算机上和/或可以分布在两个或更多个计算机之间。而且,要求保护的主题可以被实现为方法、装置或制造业产品,其使用标准的编程和/或工程技术来产生软件、固件、硬件或其任意组合以控制计算机实现所公开的主题。本文所使用的术语“制造业产品”旨在包含可从任意计算机可读设备、载体或媒体访问的计算机程序。当然,本领域技术人员将认识到可以对该配置进行许多修改而不脱离要求保护的主题的范围或精神。图8和下面的讨论提供了对用于实现本文所提出的一个或多个指配(provision)的实施例的适当的计算环境的简要、总体的描述。图8的操作环境仅是适当的操作环境的一个实例,并且不旨在暗示关于操作环境的使用或功能的范围的任何限制。实例计算设备包括但不限于,个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子产品、迷你计算机、大型计算机、包括上述系统或设备中任意一个的分布式计算环境,等等。尽管不要求,但是实施例在正由一个或多个计算设备执行的“计算机可读指令”的总体背景中描述。计算机可读指令可以经由计算机可读媒体(下文所讨论的)分布。计算机可读指令可以被实现为执行特定任务或实现特定抽象数据类型的程序模块,比如函数、对象、应用编程接口(API)、数据结构等等。典型地,计算机可读指令的功能可以在各种环境中如所期望地组合或分配。图8图示了包括被配置成实现本文所提供的一个或多个实施例的计算设备142的系统140的实例。在一个配置中,计算设备142包括至少一个处理单元146和存储器148。根据计算设备的确切配置和类型,存储器148可以是易失性的(比如RAM)、非易失性的(比如ROM、闪存等)或这二者的某种组合。该配置在图8中用虚线144示出。在其他实施例中,设备142可以包括附加的特征和/或功能。例如,设备142还可以包括附加的存储装置(例如可移除的和/或不可移除的),其包括但不限于磁性存储装置、光存储装置等等。这种附加的存储装置在图8中通过存储装置150示出。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置150中。存储装置150还可以存储用于实现操作系统、应用程序等等的其他计算机可读指令。例如,计算机可读指令可以被加载到存储器148中以便通过处理单元146执行。本文所使用的术语“计算机可读媒体”包括计算机存储媒体。计算机存储媒体包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失1性和非易失性、可移除和不可移除媒体。存储器148和存储装置150是计算机存储媒体的实例。计算机存储媒体包括但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁性存储设备、或可以用于存储期望的信息并且可以被设备142访问的任何其他介质。任何这种计算机存储媒体可以是设备142的一部分。设备142还可以包括允许设备142与其他设备通信的通信连接156。通信连接156可以包括但不限于,调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或用于将计算设备142连接到其他计算设备的其他接口。通信连接156可以包括有线连接或无线连接。通信连接156可以发送和/或接收通信媒体。术语“计算机可读媒体”可以包括通信媒体。通信媒体典型地包含诸如载波或其他传输机构之类的“已调制的数据信号”中的计算机可读指令或其他数据并且包括任何信息传送媒体。术语“已调制的数据信号”可以包括一种信号,其具有其特性集合的一个或多个或以在信号中编码信息的方式被改变。设备142可以包括输入设备154,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外摄像机、视频输入设备和/或任何其他输入设备。设备142中还可以包括输出设备152,比如一个或多个显示器、扬声器、打印机和/或任何其他输出设备。输入设备巧4和输出设备152可以经由有线连接、无线连接或其任意组合连接到设备142。在一个实施例中,来自另一个计算设备的输入设备或输出设备可以用作计算设备142的输入设备IM或输出设备152。计算设备142的组件可以通过诸如总线之类的各种互连而被连接。这种互连可以包括外围组件互连(PCI)、比如高速PCI、通用串行总线(USB)、火线(IEEE1394)、光总线结构等等。在另一个实施例中,计算设备142的组件可以通过网络互连。例如,存储器148可以包括通过网络互连的位于不同物理位置中的多个物理存储器单元。本领域技术人员将认识到用于存储计算机可读指令的存储设备可以跨网络分布。例如,可经由网络158访问的计算设备160可以存储用于实现本文所提供的一个或多个实施例的计算机可读指令。计算设备142可以访问计算设备160并且下载一部分或所有计算机可读指令以供执行。可替代地,计算设备142可以根据需要下载多条计算机可读指令,或者一些指令可以在计算设备142处执行并且一些指令可以在计算设备160处执行。本文提供了实施例的各种操作。在一个实施例中,所描述的操作的一个或多个可以构成存储在一个或多个计算机可读媒体上的计算机可读指令,如果这些计算机可读指令被计算设备执行,则将使计算设备执行所描述的操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必定是顺序相关的。知道该说明书的益处的本领域技术人员将会理解可替代的排序。而且,应当理解,不是所有操作都必定存在于本文所提出的每个实施例中。而且,词语“示范性的”在本文中用于意指充当实例、例证或说明。如本文描述为“示范性的”的任何方面或设计不一定被解释为优于其他方面或设计。相反,词语示范性的使用旨在以具体方式提出概念。本申请中所使用的术语“或”旨在意指包含性的“或”而非排除性的“或”。即,除非另外指定,或从上下文中清楚,“X使用A或B”旨在意指任意自然的包含性的置换。即,如果X使用A;X使用B;或X使用A和B二者,则“X使用A或B”在任何前述情形下被满足。此外,本申请和所附权利要求中使用的冠词“一”通常可以被解释为意指“一个或多个”,除非另外指定或从上下文清楚是针对单数形式。而且,尽管已经相对于一个或多个实现方式示出和描述了本公开,但是本领域其他技术人员基于阅读并理解本说明书和附图将会想到等效改变和修改。本公开包括所有这样的修改和改变并且仅由下面的权利要求的范围限制。特别是考虑关于由上述组件(例如元件、资源等)执行的各种功能,用于描述这样的组件的术语旨在对应于(除非另外指示)执行所描述组件的指定功能的任何组件(例如其是功能等效的),即使不是在结构上等效于所公开的结构(其执行本文图示的本公开的示范性实施方式中的功能)。此外,尽管本公开的特定特征可以已经相对于若干实施方式中仅一个被公开,但是这种特征可以与如可以对任何给定或特定应用期望和有利的其他实现方式的一个或多个其他特征组合。而且,就术语“包含”、“具有”、“带有”或其变形用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包括”相似的方式成为包含性的。权利要求1.一种在具有处理器(114)和数据存储器(32)的设备(112)上向客户端(12)的用户(52)呈现包括至少一个主机(116)的计算环境内对象集合(14)中的对象(16)的可用性状态(124)的方法(70),该方法(70)包括在处理器(112)上执行(74)指令,指令被配置成在接收到向用户(52)呈现对象(16)的可用性状态(IM)的请求时在确定(80)对象(160)在数据存储器(32)中可用时在确定(84)对象(16)在对象集合(14)中可用时,向用户(52)呈现(86)可用状态;以及在确定(88)对象(16)在对象集合(14)中不可用时,向用户(52)呈现(90)重定位状态;以及在确定(92)对象(16)在数据存储器(32)中不可用时在确定(94)对象(16)正从主机(116)被接收时,向用户(52)呈现(96)接收状态;在确定(98)对象(16)未正从主机(116)被接收时,向用户(52)呈现(100)请求状态。2.权利要求1的方法,对象集合中具有对象描述符的相应对象包括至少一个与对象的可用性相关的对象元数据。3.权利要求2的方法由对象服务器管理的对象集合被配置成,当在对象集合中存储对象时,将对象描述符发送到客户端;以及所述指令被配置成,当从对象服务器接收到对象集合中所表示的对象的对象描述符时,将对象描述符存储在与对象相关联的数据存储器中。4.权利要求3的方法所述对象描述符识别正存储对象的至少一个主机;确定对象在数据存储器中不可用并且未正从主机被接收包括在对象的对象描述符中识别请求元数据;确定对象在数据存储器中不可用并且正从主机被接收包括在对象的对象描述符中识别接收元数据;以及所述指令被配置成在从对象服务器接收到在数据存储器中不可用的对象的对象描述符时从主机请求对象,以及将请求元数据存储在对象的对象描述符中;在从主机接收到对象的至少一个对象部分时,用接收元数据取代对象的对象描述符中的请求元数据。5.权利要求4的方法从主机请求对象包括在从对象服务器中接收到对象描述符时,在对象描述符中存储搜索元数据;接触至少一个主机;以及在接触至少一个主机时从主机请求对象;以及用请求元数据取代对象描述符中的搜索元数据;以及向用户呈现对象的请求状态包括在对象的对象描述符中识别搜索元数据时,向用户呈现对象的搜索状态。6.权利要求4的方法所述指令被配置成,在从对象服务器接收到指示从对象集合移除主机的主机移除通知时对于在数据存储器中不可用的且未被对象集合中所表示的主机存储的对象的相应对象描述符,在对象的对象描述符中存储丢失元数据;以及向用户呈现对象的请求状态包括在对象的对象描述符中识别丢失元数据时,向用户呈现对象的丢失状态。7.权利要求3的方法所述指令被配置成在从对象服务器接收到对象的对象描述符时,在对象的对象描述符中存储未经验证的对象元数据;在验证对象在数据存储器中不可用时,用不可用元数据取代对象的对象描述符中的未经验证的对象元数据;以及在确定对象在数据存储器中可用时,用可用元数据取代对象的对象描述符中的未经验证的对象元数据;以及确定对象在数据存储器中不可用包括在对象的对象描述符中识别不可用元数据。8.权利要求2的方法,所述指令被配置成在接收到对象的对象描述符时,在对象的对象描述符中存储请求元数据;在接收到具有至少一个缺失对象部分的对象的对象部分时,用接收元数据取代对象的对象描述符中的搜索元数据;在接收到没有缺失对象部分的对象的对象部分时,用可用元数据取代对象的对象描述符中的接收元数据;确定对象在数据存储器中不可用且正从主机被接收包括在对象的对象描述符中识别接收元数据;确定对象在数据存储器中不可用且未正从主机被接收包括在对象的对象描述符中识别请求元数据;以及确定对象在数据存储器中可用包括在对象的对象描述符中识别可用元数据。9.权利要求8的方法所述指令被配置成在接收到没有缺失对象部分的对象的对象部分时,在对象的对象描述符中存储重定位元数据;在将对象插入对象集合中时,用可用元数据取代对象的对象描述符中的重定位元数据;以及确定对象在数据存储器中可用且在对象集合中不可用包括在对象的对象描述符中识别重定位元数据。10.权利要求8的方法所述指令被配置成,在接收到没有缺失对象部分的对象的第一对象版本的对象部分时在识别其中对象以第二对象版本存在于数据存储器中的版本化冲突时,在对象的对象描述符中存储版本化冲突元数据;以及确定对象在数据存储器中可用包括在对象的对象描述符中识别版本化冲突元数据时,向用户呈现版本化冲突状态。11.权利要求10的方法具有至少一个选自对象版本标识符集合的对象版本标识符的对象的相应版本包括对象哈希码;对象修改日期;以及对象版本指示符;以及所述指令被配置成通过识别不同于第二对象版本的对应的对象版本标识符的第一对象版本的对象版本标识符来识别版本化冲突。12.权利要求11的方法,向用户呈现冲突状态包括向用户呈现第一对象版本的对象版本标识符和第二对象版本的对应的对象版本标识符。13.权利要求12的方法,所述指令被配置成,在从所选的对象版本覆盖(over)未被选择的对象版本的用户选择接收时如果所选的对象版本包括数据存储器中可用的且对象集合中不可用的对象版本,则拷贝所选的对象版本覆盖未被选择的对象版本;如果所选的对象版本包括对象集合中可用的对象版本,则删除数据存储器中可用的且对象集合中不可用的未被选择的对象版本;以及用可用元数据取代对象的对象描述符中的版本化冲突元数据。14.权利要求13的方法,所述指令被配置成,在检测到对象的第一对象版本和第二对象版本的版本解决时,用可用元数据取代冲突元数据。15.一种用于在具有处理器(114)和数据存储器(32)的设备(112)上向客户端(12)的用户(52)呈现包括至少一个主机(116)的计算环境内对象集合(14)中的对象(16)的可用性状态(IM)的系统(118),该系统(118)包括对象状态确定组件(120),被配置成对于对象集合(14)的相应对象(16)通过以下方式选择可用性状态(IM)在确定对象(160)在数据存储器(32)中可用时在确定对象(16)在对象集合(14)中可用时,选择可用状态;以及在确定对象(16)在对象集合(14)中不可用时,选择重定位状态;以及在确定对象(16)在数据存储器(32)中不可用时在确定对象(16)正从主机(116)被接收时,选择接收状态;在确定对象(16)未正从主机(116)被接收时,选择请求状态;以及对象状态呈现组件(122),其被配置成对于对象集合(14)的相应对象(16)向用户(52)呈现可用性状态(1对)。全文摘要可以跨许多客户端使对象集合中的对象同步(例如,各种设备可以使镜像文件系统的文件同步)。然而,对象的同步可能是复杂的,并且对象由于许多原因可能在客户端的对象集合中未被同步,所述原因例如对象的不完全接收、来自当前可达到主机的对象的不可用性和与对象集合中相同对象的不同版本的版本化冲突。为了通知用户对象集合中对象的可用性,可以执行对象的可用性状态的分析(例如通过跟踪对象集合的相应对象的对象描述符中存储的元数据,并且随后检查相应对象的元数据),并且所选的可用性状态可以被呈现给用户。文档编号H04L29/08GK102413168SQ201110291988公开日2012年4月11日申请日期2011年9月30日优先权日2010年9月30日发明者K.波普金R.,曼特里S.申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1