发明的内容
本发明克服了当前的同步系统的上述不足和缺陷。例如,在能够在设备间同步数据的分布式计算机系统中,分布式计算机系统可能有一个设备在不具有相应的时间-日期字段的数据库中保存属性。在该情况下,本发明保证了将时间-日期信息与数据库中的属性值相关联。
示例实施例提供了识别对应于在保存无对应的时间-日期字段的属性的远程数据库中的远程属性值的时间-日期信息的方法。经识别的时间-日期信息使用该分布式计算机系统中的设备可进行语法分析的标准格式进行格式化。格式化的时间-日期信息被发送到远程数据库供在与远程属性值相关联的字段中存储。
其它示例实施例提供了一个分布式计算机系统,它具有一个在没有相应的时间-日期字段的数据库中存储属性的设备。格式化的时间-日期信息以用该分布式计算机系统中的设备可进行语法分析的标准格式接收,此格式化的时间-日期信息与属性值关联。此外,格式化的时间-日期信息存储在与属性值关联的数据库字段中,这样就可利用格式化的时间-日期信息消决涉及该属性值的数据冲突。
另一示例实施例还提供了解决在分布式计算机系统中的设备间数据冲突的方法。远程属性值作为远程属性被接收。同样被接收的是来自没有对应的时间-日期字段的数据库的对应的远程时间-日期信息。远程时间-日期信息以该分布式计算机系统中的设备可进行语法分析的标准格式格式化。此外,检测远程值和对应的本地属性值之间的冲突。按照标准格式对远程时间-日期信息进行语法分析以识别指明远程属性值何时变更的远程时间和日期。此外,将远程时间和日期与本地时间和日期比较,本地时间和日期指明一个或多个本地属性值的某处何时被变更。然后基于该比较的结果消解冲突。
本发明还克服了当前同步系统的其它不足和缺陷。例如,在能够在设备之间同步数据的分布式计算机系统中,示例实施例提供了确定自从远程设备和本地设备之间的属性最近被同步以来远程设备上一个属性的值是否已变更的方法。
示例实施例提供了在远程设备和本地设备之间的数据同步期间,接收远程属性的当前值和该远程属性的先前值的远程的表示。然后生成一个来自远程属性的当前值的远程属性的本地表示。据此,比较此远程表示与本地表示,并基于该比较,确定远程属性的先前值在远程表示生成后被变更了。
其它示例实施例提供了在远程设备和本地设备之间的数据同步期间,接收远程属性的远程值和远程属性的远程值的远程的表示。然后从远程属性的远程值生成远程属性的本地表示。据此,比较此远程表示与本地表示,并基于该比较,确定远程属性的远程值在远程表示生成后未变更。
本发明还克服了当前同步系统的其它不足和缺陷。例如,示例实施例提供了通过选择将被赋予用于解决同步值之间冲突的时间-日期信息的属性值,保护内存资源的方法。
示例实施例提供了从远程设备接收多重属性值的方法。来自接收到的多重属性值中的属性值的有限集合是基于远程设备的现存资源选择的。此外,识别来自多个对应于多个属性值时间-日期信息的集合。有限集合中的每个属性值对应于时间-日期信息集合的不同部分,并表示有有限集合中的每个属性值的某处何时被最后修改。然后时间-日期信息的不同部分被存储在远程设备的远程数据库中。
其它示例实施例提供了,属性值的有限集合的选择也可基于与多个属性值的修改关联的历史信息。例如,此历史信息可以是多个属性值的每一个被修改的的频率,然后可以选择被修改最频繁的属性值。或者,或这两者的组合,历史信息可以是多个属性值的时间-日期信息,然后可能会选择最近被修改的属性值。
此外其它示例实施例提供了从上述多个时间-日期信息中识别一部分时间-日期信息,使余下的属性不在属性值的有限集合之中。这部分时间-日期信息对应于一个或多个余下的属性值的某处何时被用户修改。然后被识别的部分时间-日期信息可被存储在远程数据库的一个位置,这样被识别的部分时间-日期信息对应于所有一个或多个余下的属性值。
本发明另外的的特征和优点将在随后的描述中阐明,其中一部分从描述是显而易见的,或可以通过本发明的实施掌握。本发明的特征和优点可依靠所附的权利要求中特别指出的措施及其组合实现和获得。本发明的这些和其它特征将从下面的描述和所附权利要求得以更完全明白,或可通过如下展示的发明的实施获得。
具体实施方法
本发明扩展到的方法,系统和计算机程序产品,它们为在不具有对应时间-日期字段的数据库中存储属性的装置存储和维护时间-日期信息。此外,本发明提供识别在远程设备上数据何时变更的方法。本发明也提供选择属性值的有限集合来赋予时间-日期信息,以保护被约束或限制的存储器资源的方法。本发明的实施例可包含专用或通用的计算机,包括各种计算机硬件,如下面更详细讨论的。
概括地,本发明提供分布式计算机系统它能够将时间-日期信息与数据库中的属性值关联法。此分布式计算机系统有一个在一不具有对应的时间-日期字段的数据库存中存储属性的设备,因而被称作低保真度或传统的设备。示例实施例提供了在分布式计算机系统中由一个或多个设备可进行语法分析的标准格式来识别的格式化对应于远程属性值的时间-日期信息。经格式化的时间-日期信息被发送到远程数据库,用于存储在与远程属性值关联的字段中。然后经格式化的时间-日期信息可用于消决属性值之间的冲突。
其它示例实施例提供了确定自从远程设备和本地机器的最近被同步以后,远程设备上的属性值何时变更的方法。并且,其它示例实施例提供了基于远程设备的现存资源从多个属性值中选择属性值的有限集合的方法。
现在将参考附图,其中相同的结构将被赋予相同或相似的参考标号。须理解这些图是本发明的实施例的图解表示的示例,并非意在限制或在其它方面缩小本发明的范围。
图1A例示了在分布式计算机网络100中的数个结点,用于说明连接和系统中每个节点如何与其它节点同步。例如,如分布式计算机系统100中所示,工作计算机105可与数台不同的设备,诸如电子邮件服务器110,PDA115,移动电话120,和即时消息服务器125同步。在此分布式计算机系统100中同步数据的目的时为了保证在一个或更个多用户使用的所有设备上提供最当前的信息。
需要被同步的数据可以是,如联系人信息,其中每个项将对应于有关个人,公司,企业,或任何其它相似联系人的信息。与各个联系人相关联的属性的一个示例可以是名,中间名,姓,公司名称,地址,电话号码,电子邮件地址,网站信息,等。然而,人们认识到,本地数据可能会是联系人信息以外的信息。例如,本地信息可以是日程表和/或调度表信息,文件,应用程序或任何其它,需在两个设备之间同步的信息。因此,提到联系人信息仅是用于说明性目的,而非意图限制或在其它方面缩小本发明的范围,除非在明确要求的地方。
与工作计算机105相似,家用膝上电脑130可能与即时信息服务器125,移动电话120,PDA115,和电子邮件服务器110之间同步。分布式计算机系统100可能由低保真度(如,其数据库不能存储时间-日期信息作为属性的设备)和高保真度设备组成。重要的是,从理想的情况考虑,设想每个数据库对一个项中的每个属性应有时间-日期信息,用来指示用户修改该属性的最后时间。如果是这种情况,则同步适配器将可使用“最后写入者胜”规则,让最后的时间-日期信息占据胜利位置。这将解决一些循环问题并导致最佳属性赢得每个冲突(假设分布式计算机系统100中使用的时钟也同步)。因为许多分布式计算机系统100包括至少一些低保真度或传统的客户机,仅有有限的存储器资源供保存这些时间-日期信息,并且因为需要支持这些传统的的客户机,需要其它方法在设备间消解冲突而避免潜在的无限同步循环。
图1B例示了分布式计算机系统100的一部分,包含远程设备116(诸如移动电话120或PDA115)和本地机器132(诸如家用膝上电脑130或工作计算机105)。如所示,远程设备116在远程设备116和本地机器132之间的最近被同步之后的某一点变更属性值从A到B。类似地,本地机器132在两设备116,132之间最近被同步之后变更同一属性值从A到C。因此,远程设备116有一个要求同步的箭头135,显示属性B的值应被向下同步到本地机器132。类似地,本地机器132有一个要求向上同步的箭头140,表示C的值应被向上同步到远程设备115。因为设备116,132都有要求同步的箭头,分别向下和向上同步属性值,将会导致一个冲突。
如前面提到的,如图1B中出现的这一个典型的冲突,可通过比较属性值关联的时间-日期信息得到解决。然而,当要同步的数据不包含时间-日期信息时,如在低保真度设备的情况下,通过比较时间-日期信息消解冲突,变得尤其有问题。这阻碍了计算机与其它计算机设备对属性的同步,以及放心地使用“最后写入者胜”方法的逻辑选取最当前的属性。此外,另一个与低保真度设备有关的相关问题是无法识别何时属性已经变更。因此,即使时间-日期信息可与低保真度数据关联,基于属性可能在低保真度设备已被变更的事实,这种信息或时间-日期信息具有潜在的不可靠性。
上面认识到的当前分布式计算机网络的不足和缺陷通过本发明的示例实施例被克服。例如,在一个设备存储没有对应的时间-日期字段的属性(如,低保真度设备)的场合,本发明提供了关联时间-日期信息与数据库中的属性值的方法。此外,本发明提供了确定自从属性的最近被同步之后,远程设备上的属性值何时已变更的方法,即使该远程设备是一种低保真度设备。
图2例示了按照本发明的示例实施例,具有能够为低保真度设备建立,使用,更新时间-日期信息的系统的分布式计算网络200。分布式计算系统200包括两个高保真度设备,本地机器210和远程机器220。分布式计算机系统200中也包括低保真度设备,如,远程设备205。远程设备205是低保真度的,故与远程设备205关联的数据库无法在每个属性中存储时间-日期信息。换言之,远程设备205在其数据库中存储的属性不具备对应的时间-日期字段。
尽管远程设备205在其数据库中没有属性的时间-日期字段,示例实施例提供了将时间-日期信息与远程设备205中的属性值关联并允许远程设备205用标准格式在一个不使用的字段中存储时间-日期信息的方法。例如,本地机器210可识别对应于远程设备205数据库中的远程属性值的时间-日期信息。然后被识别的时间-日期信息可以用分布式计算机系统200中的数个设备可进行语法分析的标准格式格式化。此标准格式可以是,如,统一资源标识符(URI)。例如,URI可以是同步统一资源定位器(URL)的格式,它识别属性并包括与各个属性关联的被识别的时间-日期信息。如下文关于图3中将会更详细地描述,这个同步URL格式是理想的,因为它容易被许多设备识别进行语法分析,故作为标准格式是理想的。
本地机器210可把格式化的时间-日期信息发送到远程设备205,并存储在与远程属性值关联的字段中。例如,如图2中所示,当与远程设备205同步时,本地机器210发送带有时间-日期(T/D)信息和更新的属性项1(215)。然后远程设备205存储包含时间-日期信息的项1(215)。格式化的时间-日期信息被存储在远程设备205上一个未使用的属性字段中。例如,远程设备205可将格式化的时间-日期信息存储在普通属性,隐藏属性,专用扩展属性或甚至将其附加在注释字段的末尾。应该注意,尽管其它信息可被存储在属性字段中(如,在注释字段中的文本),本发明认为这样的字段是未被使用的,因为这个字段不是被预留用于储存时间-日期信息的。因此,术语“未使用的”属性字段应解释为广泛地包含未被预留为储存时间-日期信息的任何属性字段。
示例实施例提供了格式化的时间-日期信息可被用于数种不同的目的,诸如消解冲突,或识别何时属性已变更。例如,远程设备205和远程机器220之间开始一个同步。据此,项1(215)可随同属性和格式化的时间-日期信息被下传到远程机器220。因为此时间-日期信息的格式是使用一种标准的可进行语法分析的格式,远程机器220可对远程时间-日期信息进行语法分析并识别与各个属性关联的远程时间和日期信息。此远程时间和日期信息随后可与远程机器220的时间-日期信息比较,用于消决属性值之间的任何冲突。
其它示例实施例提供了检测何时在远程设备205上一个属性何时已变更的方法。例如,项1(215)中的格式化的时间-日期信息可能包括时间-日期信息的每个片段中最近与本地机器210同步的属性值的表示。此表示可能是如以散列的形式,它是最近被同步的与时间-日期信息关联的属性值的散列值。当远程机器220接收到项1(215)用于同步时,项1(215)中接收到的属性也可使用对最近被同步的属性值进行散列编码所用的相同的标准散列函数进行散列处理。可被使用的标准散列函数包括,但不限于,SHA-1,MD5,或其它类似的散列函数。
格式化的时间-日期信息中的散列值可与远程机器220生成的散列值进行比较。如果这些值不匹配,可以推断与在远程设备205处时间-日期信息关联的属性值变更了。因此,此时间-日期信息是潜在地不可靠的并可能因此被远程机器220废弃。在这些例子中,因为此时间-日期信息是潜在地不可靠的,为了消解冲突可向用户提供一个用户界面。当然,通过该领域中常见的标准技术也存在消解冲突的其它方法。
须注意,为确定远程设备205上何时发生变更,上述散列值或属性值的表示的使用不限于格式化的时间-日期信息。例如,为确定远程设备205上何时发生变更可使用属性表示的比较,而不用时间-日期信息。这些例子将会在确定属性何时需从远程设备205被向下同步而不必比较远程机器220上存储的属性值的情况是有用的。因此,在同步URL或格式化的时间-日期信息中的散列或远程属性表示的使用,仅是用于说明的目的,并非试图限制或在其它方面缩小本发明的范围,除非另外明确申明。
图3例示了时间-日期信息是如何被格式化并存储在远程设备205的。如图3中所示,项355有多种用于联系人的字段,其包括属性标识符,属性名称和属性的初始值。当然,除了保留的时间-日期属性字段之外也存在其它项目,属性,字段,等。因而,项355联系人的信息和其中的字段的引用仅是用来说明目的,并非意图限制或在其它方面缩小本发明的范围,除了明确申明处。
图3中也显示,格式化的时间-日期信息可作为字段值350存储在属性字段375中。示例实施例提供了格式化可以是用如字段350中所示的同步URL形式。图3中也显示了字段350的被语法分析的部件分解图。字段350的第一个部分包括同步URL305。这个部分识别正在扫描项355的设备,其后的同步URL的片段包括项355中的不同属性的时间-日期信息。须注意的是,同步URL305中,通常留作定位信息的占位符315可被使用,也可不使用。
其后的每个片段可由&符340分隔并通过属性识别过程被识别,如,属性值310。同样包含在字段350中的同步URL305的每个片段中的是与属性识别关联的时间-日期信息(如,时间-日期-1 330与Prop ID-1关联)。示例实施例提供了为节约昂贵的存储资源,可使用时间-日期信息的简单表示。例如,时间-日期信息可以十六进制数储存。为节约更多的空间,时间日期信息也可用较低分辨率储存。例如,时间-日期值通常精确到千分之一秒。然而,示例实施例提供,建立格式化的时间日期信息或带时间-日期值的同步URL精确到秒或分。此外,示例实施例提供了,时间-日期信息可用一种不依赖时区的方法存储。因此,这将使在同步拓扑学中的结点处在不同的时区时,允许进行时间的比较。
同步URL305的每个片段中也提供了属性的表示,如,属性表示320。示例实施例提供了,属性表示320可以是如上文所述的散列的形式,可用于确定自属性表示320生成后属性值是否已变更。这指明了时间-日期信息330是否具有潜在的不可靠性。
除了诸如注释字段的一些字段外,留下的存储格式化的时间-日期信息的存储器是有限的。如此,为单个和每个属性存储时间-日期信息的存储器可能会缺乏或不足。因此,本发明提供了从项355中全部属性值中,确定和选择属性值的有限集合的方法。包括在本发明的同步URL305中的时间-日期信息的属性值的选择,可以是基于不同的考虑选择的。例如,该选择可能基于那些最近被变更的属性值。或者,同步URL305或格式化的时间-日期信息中,被选择的使时间-日期信息与其关联的属性值,可以是基于启发式数据,诸如特定属性值变更的频率。当然,也可提供任何其它不同的用于选择属性值使时间-日期信息与之关联的方法。因此,如何选择属性的使用方法,(如,用最近变更的属性,)仅用于说明性目的,而非意图限制或在其它方面缩小本发明的范围,除非另外明确申明。
因为空间是需考虑的事项,且通常属性的子集需进行选择以使时间-日期信息与之关联,本发明也可提供确定自从最近被同步之后,是否其它的属性已变更的方法,并在缩减的空间中,将时间-日期信息与其关联。例如,本发明提供了用简缩的格式表示剩余的属性,并将其与上界和/或下界时间-日期信息关联。例如,如图3中所示,附加在字段350中同步URL 305末尾的是带有保持剩余值的属性标识符360的片段。属性标识符360向正在扫描同步URL305的设备指出,这样没有与其关联的特定时间日期信息的属性在此片段中出现。因而,余下的属性值的属性表示365可被使用。
如前述其它属性表示,如属性表示320,剩余属性值的属性表示365可以是以所有余下的属性值的散列的形式。如此,此属性表示365可如那些前述属性表示类似的方法,用来识别自从远程机器和本地机器之间的最近被同步之后,余下的属性值中的一个或多个何时已被变更。其它示例实施例也提供了同样可与剩余属性关联的时间-日期信息370,以给出关于余下的属性值何时被变更的一个上界和/或下界。
尽管剩余片段被描述为同步URL的附加片段,人们将认识到剩余片段可在其自身的字段中被格式化。例如,在需要保留空间或存储器的地方,剩余片段可用于识别何时一个或多个整个项355中的属性已变更。因此,附加到同步URL305末尾的剩余片段的使用仅是用于说明性目的,而非意图限制或在其它方面缩小本发明的范围除非明确申明之处。
本发明也可借助包括功能性步骤和/或非功能性动作的方法描述。以下是实现本发明中可能执行的步骤或动作的描述。通常,功能性步骤借助于完成的结果描述本发明,而非功能性动作描述用于得到特定结果的更特定动作。尽管可用任何特定的次序描述或申明功能性步骤和非功能性动作,本发明不一定限于动作和/或步骤的任何特定的次序。并且,在权利要求的复述中和以下图4-8的流程图的描述中,动作和/或步骤的使用是用于表示这些术语所希望的特殊使用。
图4-8例示了本发明的各种示例实施例的示例流程图。图4-8的以下描述将偶尔涉及来自图1B,2和3的对应的部件。尽管可参考这些图中的特定部件,但这些部件仅是用于说明性目的,而非意图限制或在其它方面缩小本发明的范围,除非另外明确申明。
图4例示了在不存储具有对应的时间-日期字段的属性的远程数据库中,将时间-日期信息与一个属性值关联的方法400的示例流程图。方法400包括一个识别时间-日期信息的动作405。此时间-日期信息对应于远程数据库中的一个或多个属性值。方法400也包括一个格式化被识别的时间日期信息的动作410。此时间-日期信息使用分布式计算机系统200中,可被一个或多个设备210,220进行语法分析的标准格式格式化。此标准格式可以是诸如同步URL305的URI。同步URL305可被语法分析为由&符340分隔的片段。每个片段可包括属性识别符310,属性值320的表示和对应于该属性值的时间-日期信息330的表示。示例实施例提供了属性值320的表示,可能是特定属性值的散列。此外,时间-日期信息的表示可以是一个十六进制数和/或可被存储到秒或分和/或不依赖时区的格式。
方法400也包括发送格式化的时间-日期信息的动作420。例如,格式化的时间-日期信息可被发送到远程数据库,用于存储在与远程属性值关联的字段350中。字段350可以是,如,一个注释字段,隐藏属性,专用扩展属性,或任何其它类似的未使用字段。
其它示例实施例提供了,在字段305中将时间-日期信息与其关联的属性值,是所有的属性值的一个子集。该子集可基于与时间-日期信息关联的值选择。例如,最近的时间-日期信息可用于选择被归入该子集的属性值。或者,属性值变更的频率可被用于选择该子集。
在其它实施例中,来自所有的属性值的被余留的部分属性值可被组合在表示值365中,并使时间-日期信息与其关联370。例如,时间-日期信息370可以是对剩余属性中所有属性的最近被变更的值。或者,也可使用较低的时间-日期信息370界定,表示在属性值的余留部分中,其中的一个属性何时最早被同步的时间。并且,被组合的表示值365可采用属性值的余留部分的散列的形式。
图5例示了在数据库中用属性值接收和储存时间-日期信息的方法500,其中数据库中的属性不带对应的时间-日期字段地被存储。方法500包括一个接收格式化的时间-日期信息的动作505。时间-日期信息与属性值关联,并使用可被分布式计算机系统200中一个或多个设备210,220进行语法分析的标准格式格式化。方法500也包括一个存储格式化的时间-日期信息的动作510。被格式化的时间-日期信息可被存储在与属性值关联的数据库字段350中,使得格式化的时间-日期信息可被用于消决涉及该属性值的数据冲突。
示例实施例也考虑了识别和更新格式化的时间-日期信息。例如,当一个属性值已变更,可识别格式化的时间-日期信息为与属性值关联。然后此格式化的时间-日期信息可在数据库字段中按照变更的属性值被更新。示例实施例提供了,这可由远程设备205通过合适的应用软件完成。例如,格式化的时间-日期信息可被接收并存储在远程设备205上,远程设备的一个用户可能已作出变更。或者,本地机器210,220可能已作出变更。存储未格式化的时间日期信息作为属性的本地机器210,220与数据库中的一个或多个属性值关联,并在对应的时间-日期字段中存储此信息。换言之,本地机器210,220是高保真度设备。
图6例示了在分布式系统中消决设备之间的数据冲突的方法600。分布式计算机系统中的一个设备在不带对应的时间-日期字段的数据库中存储属性。方法600包括一个接收一个远程属性值的动作605。此远程属性作为远程属性被接收,对应的远程时间日期信息也被接收。此外,此远程时间-日期信息是以分布式计算机系统中的一个或多个设备可进行语法分析的标准格式格式化的,如,URI或同步URL格式。方法600也包括一个检测冲突的动作610。此冲突存在于远程属性值和对应的本地属性值之间。
方法600也可包括一个利用远程时间-日期信息的面向功能性的结果的步骤620。时间-日期信息可用于选择一个恰当的属性值供本地设备和远程设备之间同步。步骤620和包括一个对远程时间-日期信息进行语法分析的动作622。按照标准格式对此远程时间-日期信息进行语法分析以识别表示远程属性值何时被变更的远程时间和日期。步骤620也可包括一个将远程时间和日期与本地时间和日期比较的动作624。本地时间和日期表示本地属性值何时被变更。最后,步骤620可包括一个消解冲突的动作626。冲突的解决将基于比较的结果。
如上面提及的,标准格式可能是URI的形式。例如,此URI可能是被语法分析成片段的URL。这些片段可能包括对应远程属性值的属性识别,远程属性值的表示和时间-日期信息的表示。此外,远程属性值的表示可能是散列值且时间-日期信息的表示可能是十六进制数。
其它示例实施例提供了从远程属性值生成远程属性的本地表示的方法。然后此本地表示可与上面提及的远程表示比较,以确定是否远程属性值已变更。
图7例示了确定自从远程设备和本地机器之间的最近同步属性之后属性值何时已变更的方法700。方法700包括一个接收远程属性的当前值的动作705。此外,远程属性的先前值的远程表示也被接收。方法700也可包括一个生成远程属性的本地表示的动作710。此本地表示是从远程属性的当前值生成。方法700也包括一个将远程表示与本地表示比较的动作715。最后,方法700包括一个确认先前的远程属性被变更的动作720。该确认表示了属性值在远程表示生成后被变更。因此,若时间-日期信息与如,在同步URL305中的远程属性关联,此信息是潜在不可靠的,且可能会被废弃。
图8例示了从多个属性值中选择属性值的有限集合的方法800。对于在没有对应的时间-日期字段的数据库中存储属性的设备,此属性值将被赋予时间-日期信息。方法800包括了一个从远程设备接收属性值的动作805。方法800也包括一个选择时间-日期信息的有限集合的动作810。属性值的有限集合可基于远程设备的现有资源从多个属性值中选择。方法800也包括一个识别时间-日期信息的集合的动作815。有限集合中的每个属性值对应于时间-日期信息集合的不同部分。方法800也包括一个在远程数据库中存储时间-日期信息的不同部分的动作820。
方法800也可包括识别属性值的保留部分,并将其作为表示值存储,将其与时间-日期信息相关联。例如,对余留的属性值的一部分时间-日期信息可被识别(余留的属性值不在属性值的有限集合中)。被识别的时间-日期信息部分可被存储在远程数据库的一个位置中,使得被识别的时间-日期信息部分对应于所有余留的属性值。
本发明范围中的实施例也包括计算机可读的介质,用于携带或将计算机可执行指令或数据结构存储其上。此计算机可读介质可以是可被通用当用计算机访问的任何可得到的介质。用于示例,而非限制,此计算机可读介质可包括RAM,ROM,EEPROM,CD-ROM或其它光盘存储器,磁盘存储器或其它磁存储设备,或任何其它可用于以计算机可执行指令或数据结构的形式携带或存储所需程序代码方法的,并可被通用或专用计算机访问的介质。当信息通过网络或其它通信连接传输或提供(或有线的,无线的,或有线和无线的组合)到计算机时,计算机恰当地把此连接视作计算机可读介质。因而,任何这样的连接完全被界定在计算机可读介质范围中。以上的组合也应被纳入计算机可读介质的范围中。计算机可执行指令包括,例如,使通用计算机,专用计算机,或特殊用途运算设备实施某种功能或功能群的指令和数据。
图9和以下讨论试图为本发明提供可在其中实现本发明的合适的计算机环境的简要的,概括的描述。尽管未被要求,本发明将以计算机可执行指令的概括的语言描述,诸如正在被网络环境中的计算机执行的程序模块。一般地,程序模块包括例行程序,程序,对象,组件,数据结构,等,它们完成特定任务或实现特定抽象数据类型。计算机可执行指令,相关的数据结构,和程序模块代表公布的方法的执行步骤的程序代码方法的示例。这些可执行指令或相关数据结构的特定顺序代表为实现这些步骤中所述功能的对应动作的示例。
本领域中的熟练技术人员将意识到本发明可在具有许多类型计算机系统配置的网络计算环境中实施,这些配置包括个人电脑,手持设备,多处理器系统,基于微处理器或可编程消费类电子产品,网络PC机,小型计算机电脑,大型计算机,或类似设备。本发明也可在分布式计算机环境中实施,其中任务通过经由通信网络连接的(或通过有线连接,无线连接,或通过有线或无线连接的组合)本地和远程处理设备实施。在分布式计算环境中,程序模块可位于本地和远程记忆存储设备之中。
参考图9,实现本发明的示例系统,包括以常规计算机920形式的通用计算机设备,包括处理单元921,系统存储器922,和耦合包括系统存贮器922的各种部件到处理单元921的系统总线923。系统总线923可以是数种类型的总线结构的任意一种,包括存储总线或存储控制器,外围总线,和使用多种总线体系结构的任一种的局部总线。系统存储器包括只读存储器(ROM)924和随机存取存储器(RAM)925。基本输入/输出系统(BIOS)926,含有在诸如启动期间,在计算机920的元件之间帮助传输信息的基本例行程序,可存储在ROM924中。
计算机920也可包括用于读写硬盘939硬盘驱动器927,用于读写可移动磁盘929的磁盘驱动器928,和用于读写诸如CD-ROM或其它光介质的可移动光盘931的和光盘驱动器930。硬盘驱动器927,磁盘驱动器928,和光盘驱动器930分别通过硬盘驱动器接口932,磁盘驱动器接口933,和光盘驱动器接口934被连接到系统总线923。这些设备及其相关的计算机可读介质为计算机920提供了计算机可执行指令,数据结构,程序模块和其它数据的非易失性存储。尽管这里描述的示例实施例采用了硬盘939,可移动磁盘929和可移动光盘931,可使用其它类型的用于存储数据的计算机可读介质,包括盒式磁带,闪存卡,数字多用盘,伯努利(Bernoulli)盒式带,RAM,ROM和类似设备。
包含一个或多个程序模块的程序代码方法可被存储在硬盘939,磁盘929,光盘931,ROM924或RAM925上,包括操作系统935,一个或多个应用程序936,其它程序模块937,和程序数据938。用户可通过键盘940,定位设备942,或其它输入设备(未显示),诸如话筒,操纵杆,游戏垫,圆盘式卫天线,扫描仪,或类似设备将命令和信息输入计算机920中。这些及其它设备常通过耦合到系统总线923的串行端口接口946连接到处理单元921。或者,这些输入设备可通过其它接口连接,诸如并行端口,游戏端口或通用串行总线(USB)连接。监视器947或其它显示设备也经由诸如视频适配器948的接口连接到系统总线923。除了显示器,个人电脑一般包括其它外围输出设备(未显示),诸如扬声器和打印机。
计算机920可使用诸如远程计算机949a和949b的一个或多个远程计算机的逻辑连接,在网络化环境中运行。远程计算机949a和949b可以各自是另外一台个人电脑,服务器,路由器,网络PC机,对等设备或其它公共网络节点,一般包括许多或所有上述对于计算机920描述的元件,尽管仅有存储器存储设备950a和950b及其相关的应用程序936a和936b被例示在图9中。图9所示的逻辑连接包括出现在此处用于示例而非限制的局域网(LAN)951和广域网(WAN)952。这些网络环境在办公室内或企业内计算机网络,内联网和互联网中是很常见的。
当用于LAN网络环境中时,计算机920通过网络接口或适配器953连接到局部网络951。当用于WAN网络环境中时,计算机920可包括调制解调器954,无线链路,或其它用于在诸如互联网的广域网952范围内建立通信的装置。调制解调器954,可以是内置或外置的,经由串行端口接口946连接到系统总线923。在网络化环境中,对于计算机920示出的程序模块,或其一部分,可存储在远程存储设备中。应认识到所示网络连接是示例性的,可使用其它在广域网952范围内建立通信的方法。
本发明可以在不背离其精神或本质特征的情况下,在其它特定形式中具体化。所述实施例在所有方面仅被认为是说明性的而非限制性的。因此本发明的范围由所附权利要求表明而不是前面的描述。所有来自与权利要求相当的含义和范围的变化将被包含在其范围中。