通过运行时类型推断的有效数据访问转让专利

申请号 : CN200510138154.8

文献号 : CN1811712B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : H·J·M·美吉尔O·V·奥巴桑乔

申请人 : 微软公司

摘要 :

提供运行时模式推断的系统和方法。推断组件接收输入数据流作为输入,并在运行时处理该输入数据流来基于其实际值开发模式。然后使用推断出的模式来创建作为输入流数据的专用表示的推断出的输出数据,然后可以有效和方便地访问输出的数据。

权利要求 :

1.一种便于数据访问的系统,包括:

输入数据流;以及

推断组件,它在运行时从所述输入数据中推断模式来创建推断出的输出数据,该推断出的输出数据是输入数据的专用表示,其中,该模式被用于基于输入数据流的实际值来生成推断出的输出数据,其中,该推断组件确定标准并用于对多个相似的数据集应用推断出的模式,接收第一输入数据集并在运行时从第一数据集推断出第一模式,接收第二数据集并在运行时使用第一推断出的模式针对第二数据集使用确认进程,如果确认不成功则从第二数据集中推断出新的模式并根据第二推断出的模式处理第二数据集,如果确认成功,则对第二数据集应用第一推断出的模式。

2.如权利要求1所述的系统,其特征在于,所述输入数据包括XML文档。

3.如权利要求1所述的系统,其特征在于,所述输入数据与上下文无关语言兼容。

4.如权利要求1所述的系统,其特征在于,所述输入数据是关系型的。

5.如权利要求1所述的系统,其特征在于,还包括便于在运行时高速缓存文档的高速缓存组件。

6.如权利要求1所述的系统,其特征在于,所述推断组件便于随时间更新所述模式。

7.如权利要求1所述的系统,其特征在于,所述推断组件便于针对新输入数据来确认所述推断出的模式。

8.如权利要求1所述的系统,其特征在于,所述推断组件在运行时在实际值上推断所述模式。

9.如权利要求1所述的系统,其特征在于,还包括人工智能组件,它使用基于概率和/或基于统计的分析来预测或推断用户想要自动执行的动作。

10.一种使用便于数据访问的系统的服务器,该便于数据访问的系统包括:

输入数据流;以及

推断组件,它在运行时从所述输入数据中推断模式来创建推断出的输出数据,该推断出的输出数据是输入数据的专用表示,其中,该模式被用于基于输入数据流的实际值来生成推断出的输出数据,其中,该推断组件确定标准并用于对多个相似的数据集应用推断出的模式,接收第一输入数据集并在运行时从第一数据集推断出第一模式,接收第二数据集并在运行时使用第一推断出的模式针对第二数据集使用确认进程,如果确认不成功则从第二数据集中推断出新的模式并根据第二推断出的模式处理第二数据集,如果确认成功,则对第二数据集应用第一推断出的模式。

11.一种便于数据访问的方法,所述方法包括:

接收输入数据流;以及

使用推断组件来处理所述输入数据,所述推断组件在运行时进程中基于实际值从所述输入数据中推断类型模式以创建推断出的输出数据,该推断出的输出数据是输入数据的专用表示,其中,该模式被用于基于输入数据流的实际值来生成推断出的输出数据,其中,使用该推断组件确定标准并用于对多个相似的数据集应用推断出的模式,接收第一输入数据集并在运行时从第一数据集推断出第一模式,接收第二数据集并在运行时使用第一推断出的模式针对第二数据集使用确认进程,如果确认不成功则从第二数据集中推断出新的模式并根据第二推断出的模式处理第二数据集,如果确认成功,则对第二数据集应用第一推断出的模式。

12.如权利要求11所述的方法,其特征在于,还包括在运行时进程中执行高速缓存操作以生成所述模式。

13.如权利要求11所述的方法,其特征在于,还包括基于关于所述输入数据的预定标准中的改变来随时间更新所述推断出的模式。

14.如权利要求11所述的方法,其特征在于,还包括在运行时进程中高缓存所述输入数据、所述推断出的模式、生成的源代码、汇编码以及反串行化信息中的至少一种。

15.如权利要求11所述的方法,其特征在于,还包括在所述运行进程中针对新输入数据来确认所述推断出的模式。

16.如权利要求11所述的方法,其特征在于,所述输入数据是XML文档、上下文无关语言以及关系数据中的至少一种。

17.一种便于数据访问的系统,包括:

用于接收输入数据流的装置;

用于使用推断组件处理所述输入数据的装置,所述推断组件基于实际值在运行时进程中从中推断类型模式以创建推断出的输出数据,该推断出的输出数据是输入数据的专用表示,其中,该模式被用于基于输入数据流的实际值来生成推断出的输出数据,其中,该用于使用推断组件处理所述输入数据的装置确定标准并用于对多个相似的数据集应用推断出的模式,接收第一输入数据集并在运行时从第一数据集推断出第一模式,接收第二数据集并在运行时使用第一推断出的模式针对第二数据集使用确认进程,如果确认不成功则从第二数据集中推断出新的模式并根据第二推断出的模式处理第二数据集,如果确认成功,则对第二数据集应用第一推断出的模式;以及用于在运行时进程中执行高速缓存操作以生成所述模式的装置。

18.如权利要求17所述的系统,其特征在于,还包括用于基于关于所述输入数据的预定标准中的改变来随时间更新所述推断出的模式的装置。

19.如权利要求17所述的系统,其特征在于,所述用于高速缓存的装置还包括用于在运行时进程中高速缓存所述输入数据、所述推断出的模式、生成的源代码、汇编码以及反串行化信息中的至少一种的装置。

说明书 :

通过运行时类型推断的有效数据访问

技术领域

[0001] 本发明涉及数据处理技术,尤其涉及基于输入数据集的类型推断。

背景技术

[0002] 类型推断是编译器在假设不可避免地缺乏完整类型信息时试图确定表达式和变量的类型的过程。编译器基于输入数据流的上下文信息推断丢失的类型信息。在例如同一语法用于整数和浮点算术运算时,算术运算符可能存在困难。这对类型推断造成了问题,因为不可能明确地为诸如fn n=>n+n的函数重构类型信息。该过分简化的函数是二义的,因为无法告知该加法运算是整数还是浮点加法。例如,该表达式可以被解释为以下缩写:类型int->int的fn n:int=>n+n,或者是类型real ->real的fn n:real=>n+n。
[0003] 在某些情况下,周围的上下文被用来确定意义。相关的困难根源是记录的“尖锐”符号表示。由于上下文中缺乏信息,因此不能确定使用这些符号表示的函数的类型。从而,该函数将作为二义的而被拒绝,因为不存在足够的信息来确定该函数的域类型。
[0004] 上述示例示出了二义性导致困难的情形;然而,不能断定类型推断会失败,除非丢失的类型信息可以是被唯一确定的。在众多情况下,不存在推断省略的类型信息的唯一方式;然而,可以存在一种最好的方式。
[0005] XML(可扩展标记语言)的一种主要的优点是可以无需对文档精确模式的先验知识而处理文档。然而,操纵诸如C#或Java等语言迫使程序员使用冗长的、解释性的且计算上低效的编程模型来访问这样的无类型文档,如以下代码所表示的。
[0006] XmlDocument b=new XmlDocument();b.Load(...);
[0007] string s=b.GetElementsByTagName(″Title″)[0].value;
[0008] 如果值的模式或类型已知,期望提供对该值的各部分的更有效的访问,即,可期望假设类型信息来编译访问模式。不假设模式信息,则必须使用某种形式的通用表示来表示值,且访问必须是解释性的。当在编译时已知文档的模式时,可以生成对应于该模式的一组类,该文档可以被反串行化成对象图,并以简明、强类型化的且计算上高效的方式对该文档进行编程,如以下代码表示。
[0009] Book b=new Xmlserializer(typeof(Book)).Deserialize(...);
[0010] string s=b.Title;
[0011] 然而,这是有缺点的,因为在众多情况下,在编译时没有模式可用,所以必须使用解释性的方法。数据库以及如C#和Java等当代编程语言难以处理非静态类型。诸如Perl、Python、Ruby、PHP、Groovy等脚本语言能较好地处理动态类型,但是是以对大型软件系统不是健壮的且不能较好地缩放为代价的。因此,在现有技术中存在对提供跨动态和静态类型化语言的改进的数据访问的机制的基本上未被满足的需求。

发明内容

[0012] 以下呈现了本发明的简化的概述,以提供对本发明的某些方面的基本理解。该概述不是本发明的广泛的概观。它既不旨在标识本发明的关键或重要的元素,也不描绘本发明的范围。该概述的唯一目的是以简化的形式呈现本发明的某些概念,作为之后呈现的更详细描述的序言。
[0013] 本发明通过在运行时使用在实际值上的模式推断来连接纯粹动态和纯粹静态类型化的语言之间的差距,并使用该模式来创建可以被有效且方便地访问的数据的专用表示。假定对于对象的后期绑定访问(例如,在Visual Basic、以及诸如ECMAScript、Python以及Perl等脚本语言中),本发明通过使用非类型化的文档访问的灵活性的对象串行化来组合早期绑定访问的效率。
[0014] 此处所揭示和要求保护的本发明的一方面包括含有接收输入数据流作为输入的推断组件的系统。推断组件在运行时处理输入数据流来开发基于其实际值的模式。然后使用该推断出的模式来创建作为输入流数据的专用表示的推断出的输出数据,之后能有效其方便地访问该输出数据。
[0015] 本发明的另一方面,提供了一种通过使用在进程的所有或所选点处的高速缓存来优化运行时推断进程的方法。该方法包括一高速缓存管理器,它通过将输入数据和/或中间数据和/或代码高速缓存至高速缓存存储器中,以在运行时进程中提供在所有或所选点处的高速缓存。
[0016] 在本发明的又一方面,提供了一种根据本发明处理XML文档的运行时类型推断的方法。
[0017] 在本发明的再一方面,提供了一种在运行时优化相似输入数据的处理的方法。在连续加载若干个文档的情况下,该方法提供针对之前推断出的模式的对下一文档的确认,如果确认成功,则不必推断新的模式。例如,当运行时推断出第一模式之后,接收到第二数据集,使用针对第二数据集比较模式的成功(或失败)的度量。如果成功低于该标准,则从第二数据集中推断出新的模式,以此类推。否则,对第二数据集继续应用第一模式。
[0018] 在其另一方面,提供了一种根据本发明通过随时间精炼推断出的模式来优化运行时推断进程的方法。只要加载另一文档,就可以随时间精炼推断出的模式。更精确的类型提供更有效的访问。
[0019] 在其又一方面,提供了一种使用基于概率和/或基于统计的分析来预测或推断用户想要自动执行的动作的人工智能组件。
[0020] 为了达到以上和相关目的,此处结合以下描述和附图描述了本发明的某些说明性方面。然而,这些方面仅指示了可在其中使用本发明的原理的各种方式中的几种,而本发明旨在包括所有这样的方面以及其等效实现方式。结合附图阅读本发明的以下详细描述,本发明的其它优点和新颖的特征将变得明显。

附图说明

[0021] 图1示出了根据本发明在运行时推断模式的类型推断系统。
[0022] 图2示出了根据本发明提供运行时类型推断的方法。
[0023] 图3示出了根据本发明运行时类型推断的概括方法。
[0024] 图4示出了根据本发明处理XML文档的运行时类型推断的方法。
[0025] 图5示出了根据本发明通过使用高速缓存运行时推断进程的所有或所选点来优化该进程的方法。
[0026] 图6示出了根据本发明在运行时优化相似输入数据的处理的方法。
[0027] 图7示出了根据本发明通过随时间精炼已推断出的模式来优化运行时推断进程的方法。
[0028] 图8示出了根据本发明使用便于自动化一个或多个特征的人工智能组件的系统。
[0029] 图9示出了可用来执行所揭示的体系结构的计算机的框图。
[0030] 图10示出了根据本发明的示例性计算环境的示意性框图。

具体实施方式

[0031] 现在参考附图描述本发明,在全部附图中,同样的参考标号指的是同样的元素。在以下描述中,为说明起见,描述了众多具体细节,以提供对本发明的全面理解。然而显然,本发明可以无需这些具体细节而实现。在其它实例中,公知的结构和设备以框图形式示出,以便描述本发明。
[0032] 如在本申请中所使用的,术语“组件”和“系统”等指的是计算机相关的实体,它们或者是硬件、硬件和软件的组合、软件或者是执行中的软件。例如,组件可以是,但不限于,运行在处理器上的进程、处理器、对象、可执行代码、执行的线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行中的线程内,且组件可以位于一台计算机上和/或分布在两台或多台计算机之间。
[0033] 如此处所使用,术语“推断”和“推论”一般指的是从通过事件和/或数据而捕捉到的一组观察值中推出或推断系统、环境和/或用户的状态的过程。推论可以例如被用来标识特定的上下文或动作,或者可以生成状态的概率分布。推论可以是概率性的,即,基于对数据和事件的考虑对所关心的状态的概率分布的计算。推论也可以指的是用于从一组事件和/或数据中组成更高级的事件的技术。这样的推论导致从一组观察到的事件和/或存储的事件数据中构造出新的事件或动作,而不论原先的事件是否在时间上紧密相关,也不论原先的事件和数据是来自一个还是若干个事件和数据源。
[0034] 最初参考附图,图1示出了根据本发明在运行时推断模式的类型推断系统100。本发明的主要方面是在运行时在实际值上使用模式推断,并使用该模式来创建可以被有效且方便地访问的数据的专用表示。
[0035] 继续以上示例,并假定对类型对象的值的后期绑定访问(例如,在Visual Basic中),可以使用以下伪代码来表示该新颖机制:
[0036] XmlDocument b=new XmlDocument();b.Load(...);
[0037] Type T=InferschemaAndGenerateCode(b);
[0038] object b=new Xmlserializer(T).Deserialize(...);
[0039] object s=b.Title;
[0040] 实际文档实例d可以被用来生成运行时类型T,该类型T然后用于将文档T反串行化为动态类型T的对象图。因为T不已知为静态的,可以仅以后期绑定方式来针对文档编程(假定它含有静态类型object)。此处,由于进行正常对象处理的能力,将文档(XmlDocument b)加载至对象表示,然后访问该标题要有效得多。代码object b=new Xmlserializer(T).Deserialize(...);以及object s=b.Title;定义了对于对象的后期绑定访问,因为当编写类型b为何的代码时,该对象不已知为静态。然而,仍旧期望访问该对象。
[0041] 参考背景技术一节的第二个示例,根据本发明,运行之前不需要定义类型Book。
[0042] 存在若干方式来提高该进程的效率。首先,可以在InferschemaAndGenerateCode算法中执行各种高速缓存策略。在连续加载若干文档的情况下,例如,可能期望首先针对之前推断出的模式来确认下一文档,如果成功,则不必推断新的模式,且生成新的类型。或者,只要加载了另一文档,就可以随时间精炼最初推断出的模式。更精确的类型提供更有效的访问。以下描述这些优化。
[0043] 为支持这一方面,提供了包括接收数据流作为输入的推断组件102的系统100。推断组件102基于输入数据的实际值在运行时处理输入数据流来推断模式104。模式104然后被用于创建作为该输入流数据的专用表示的推断出的输出数据,然后可以有效且方便地访问该输出数据。
[0044] 图2示出了根据本发明提供运行时类型推断的方法。尽管为说明的简明性起见,此处例如以流程图形式示出的一个或多个方法被示出或描述为一连串动作,但是可以理解和领会,本发明不受动作顺序的限制,因为根据本发明,某些动作可以按与此处示出和描述的不同的顺序发生和/或与其它动作同时发生。例如,本领域的技术人员可以理解和领会,方法可以替换地被表示为诸如状态图中的一连串互相关联的状态或事件。而且,并非所有示出的动作都是实现根据本发明的方法所必需的。
[0045] 在200处,系统接收输入数据流。该输入数据可以是,仅举几个示例,XML(可扩展标记语言)文档形式、与由上下文无关语法描述的语言兼容的数据、以及由关系模式描述的关系表形式的数据。在202处,推断组件处理输入数据以在运行时从中推断模式。在204处,该模式被用于基于输入数据流的实际值来生成推断出的输出数据。
[0046] 现在参考图3,示出了根据本发明运行时类型推断的概括方法。接收输入数据流300作为对该运行时进程的输入。在302处,在运行时为该输入数据推断模式。在304处,从推断出的模式生成源代码。在306处,源代码被编译成汇编码,汇编码可以是可执行代码。在308处,针对输入数据300的类型处理汇编码,并且将生成的类加载至存储器中。在
310处,类被用于对原始数据输入流300反串行化来生成新创建和加载的类的实例312。然后可以有效并方便地访问实例312。
[0047] 图4示出了根据本发明处理XML文档402的运行时类型推断的方法400。在XML和对象串行化的情况下,模式可以用于使用例如由微软公司提供的.NET架构中的现有xsd.exe工具来生成源代码,使用C#编译器编译该源代码,将汇编码加载至存储器中,并将原始文档反串行化为刚创建和加载的类的实例。然而,存在众多其它的方式来从推断出的模式中生成类,诸如Reflection.Emit或运行时代码生成的更轻便形式。.NET架构的Reflection名字空间便于在运行时查看汇编元数据以及创建汇编码。Reflection允许代码例如在运行时进行类型发现、查看汇编元数据以及动态地调用汇编码。
[0048] 从而,提供了使得接收XML文档402作为对运行时进程400的输入数据的方法。在404处,基于XML文档402的实际值在运行时推断模式。在406处,从已推断出的模式中生成源代码。在408处,源代码使用例如C#编译器被编译成汇编码,汇编码可以是可执行代码。在410处,使用汇编码来处理XML文档402的类型以生成被加载至存储器中的类。在
412处,类被用于对原始数据输入流的反串行化,来创建新创建和加载的类的实例414。然后,可以有效并方便地访问实例414。
[0049] 再次参考图1的示例伪代码,注意到,一旦推断出模式,不必使用一般的XML串行化器来将XML文档反串行化成对象图。而是,通过提供Iserializable界面的自定义实现,可以为串行化和反串行化均生成类型专用的代码。
[0050] 尽管该示例是就XML文档和模式而言的,但是该机制同样能良好地应用于其它领域,诸如由上下文无关语法描述的语言、由关系模式描述的关系表等。另外,代替反串行化成对象,本发明中描述的机制同样良好地应用于使用模式信息生成专用的任何表示(例如,模式专用DOM(文档对象模型)或分析树)。例如,XML
[0051] DOM是XML文档的编程接口,并定义了可以访问和操纵XML文档的方式。称为XML分析器的程序可以被用来将XML文档加载至计算机的存储器中。当文档被加载时,可以通过访问DOM来检索和操纵文档信息。DOM表示XML文档的树视图。
[0052] 图5示出了根据本发明通过使用高速缓存运行时推断进程500的所有或所选的点来优化该进程的方法。该方法包括高速缓存管理器502,它通过将输入数据504和/或中间数据和/或代码高速缓存至高速缓存存储器506中以在运行时进程500期间提供在所有或所选点处的高速缓存。在508处,数据输入流504在作为对该运行时进程的输入接收时,可以被高速缓存来提供更快速的访问,以生成运行时模式。在510处,可以为更快速访问和处理高速缓存模式以生成源代码。在512处,源代码被编译为汇编码,汇编码可以是可执行代码。可以为更快速访问而高速缓存源代码。在514处,可以为更快速访问和针对输入数据类型处理来高速缓存可执行汇编码以生成加载至处理存储器的类。在516处,可以高速缓存类类型,以准备针对原始数据输入流的反串行化进程。在518处,可以高速缓存作为新创建和加载的类的实例520的反串行化的输出。这提供了对实例520的更有效和方便的访问。
[0053] 现在参考图6,示出了根据本发明在运行时优化相似输入数据的处理的方法。例如,在一行中连续加载若干文档的情况下,可能期望首先针对之前推断出的模式来确认下一文档,如果确认成功,那么不需推断新的模式。例如,在运行时推断出第一模式之后,接收第二数据集,使用针对第二数据集比较模式的成功(或失败)的度量。如果成功低于标准,那么从第二数据集推断出新模式,以此类推。否则,继续对第二数据集应用第一模式。
[0054] 从而,在600处,标准被确定并被用于对多个相似的数据集应用推断出的模式。在602处,接收第一输入数据集。在604处,在运行时从第一数据集推断出第一模式。在606处,接收第二数据集。在608处,在运行时使用第一推断出的模式针对第二数据集使用确认进程。如果如在610处所检查的确认不成功,流程至612处,在那里从第二数据集中推断出新的模式。在614处,根据第二推断出的模式,并根据之前描述的进程的开发源代码、编译、反串行化等处理第二数据集。或者,在610处,如果确认成功,则如616处所示,对第二数据集应用第一推断出的模式。该进程然后返回至600来处理下一数据集。
[0055] 该进程不限于两次迭代。例如,如果不使用前两个模式,可以导出第三推断模式,以此类推。然而,应该存在对当使用基本上相似的输入数据时可以推断出的模式的数量或深度的限制;否则,可能影响系统性能。
[0056] 图7示出了根据本发明通过随时间精炼推断出的模式来优化运行时推断进程的方法。只要加载另一文档,就可以随时间精炼所推断出的模式。更精确的类型提供更有效的访问。从而,在700处,设置标准以应用推断出的模式来从输入数据类型中导出类。例如,如果该标准设得相对较高,且针对输入数据处理的推断出的模式产生低于该标准的输出,则可以精炼推断算法,使得输出的推断出的模式最终将达到所期望的标准。在那一点处,将不再进行精炼。
[0057] 在702处,接收第一输入数据集用于运行时的推断处理。在704处,通过基于输入数据的推断进程导出模式。在706处,进行检查来确定所推断出的模式是否是根据预定标准执行的。如果是,那么过程返回至706处来接收下一数据集。如果该执行不满足所期望的标准,那么流程从708处到710处以在运行时更新或精炼现有模式。流程然后返回至706处来接收下一数据集用于处理。或者,使得推断出的模式不能满足标准的同一输入数据集可以使用经更新的模式来重新处理,以确保在运行时使用最优输出。
[0058] 图8示出了根据本发明使用便于自动化一个或多个特征的人工智能(AI)组件802的系统800。本发明(例如,关于推断)可以使用各种基于AI的模式来执行本发明的各方面。例如,可以通过自动分类器系统和进程来促进用于确定何时精炼与更新推断出的模式相关联的预定标准或者该推断出的模式的进程。
[0059] 分类器是将输入属性向量x=(x1,x2,x3,x4,xn)映射至该输入属于一个类的置信度的函数,即f(x)=confidence(class)。这样的分类可以使用基于概率和/或基于统计的分析(例如,分解为分析效用和成本)来预测或推断用户想要自动执行的动作。
[0060] 支持矢量机(SVM)是可以使用的分类器的一个示例。SVM通过寻找可能输入的空间中的超曲面来操作,其中超曲面试图从非触发事件中分裂出触发标准。直观上,这使分类对于接近但不同于训练数据的测试数据是正确的。可以使用其它有向或无向的模型分类方法包括,例如单纯贝叶斯、贝叶斯网络、决策树、神经网络、模糊逻辑模型、以及提供不同的独立模式的概率分类模型。此处所用的分类也包括用于开发优先级模型的统计回归。
[0061] 可以通过本说明书容易地理解,本发明可以使用显式训练(例如,通过普通训练数据)以及隐式训练(例如,通过观察用户行为、接收外部信息)的分类器。例如,可以通过分类器构造器和特征选择模块内的学习或训练阶段来配置SVM。这样,分类器可以用于自动学习和执行多个功能,包括但不限于,根据预定标准确定何时更新或精炼之前推断出的模式、基于处理数据的类型(例如,财政对于非财政,个人对于非个人...)拉紧推断算法上的标准、以及一天中什么时间实现较严格的标准控制(例如,在较少影响系统性能的晚上)。
[0062] 现在参考图9,示出了用来执行所揭示的体系结构的计算机的框图。为了向本发明的各个方面提供额外的环境,图9及以下讨论旨在提供其中可实现本发明的各方面的合适的计算环境900的简要概括描述。尽管以上在一台或多台计算机上运行的计算机可执行指令的通用语境中描述了本发明,但是本领域的技术人员可以认识到,本发明也可以结合其它程序模块和/或作为软硬件的组合来实现。
[0063] 一般而言,程序模块包括例程、程序、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。而且,本领域的技术人员可以理解,本发明方法可以使用其它计算机系统配置来实现,包括单处理器或多处理器计算机系统、小型机、大型机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,它们中的每一个都可以操作上耦合至一个或多个相关联的设备。
[0064] 本发明所示方面也可以在分布式计算环境中实现,在分布式计算环境中,某些任务是由通过通信网络链接的远程处理设备来执行的。在分布式计算环境中,程序模块可以位于本地或远程存储器存储设备中。
[0065] 计算机一般包括各种计算机可读介质。计算机可读介质可以是可由计算机访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其它介质。
[0066] 通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
[0067] 再次参考图9,示出了用于实现本发明各方面的示例性环境900,包括计算机902,计算机902包括处理单元904、系统存储器906和系统总线908。系统总线908将包括但不限于系统总线906在内的系统组件耦合至处理单元904。处理单元904可以是各种市场上可购买的任何处理器。双微处理器和其它多处理器体系结构也可以作为处理单元904使用。
[0068] 系统总线908可以是若干类型总线结构中的任一种,它可进一步与存储器总线(带有或不带有存储器控制器)、外设总线和使用各种市场上可购买的总线体系结构中任一种的局部总线互连。系统存储器906包括只读存储器(ROM)910和随机存取存储器(RAM)912。基本输入/输出系统(BIOS)存储在诸如ROM、EPROM、EEPROM等非易失性存储器910中,它包含有助于诸如启动时在计算机902中元件之间传递信息的基本例程。RAM 912还可以包括诸如静态RAM等用于高速缓存数据的高速RAM。
[0069] 计算机902还包括内部硬盘驱动器(HDD)914(例如EIDE、SATA),其中内部硬盘驱动器914也可被配置为在合适的机箱(未示出)中供外部使用;磁软盘驱动器(FDD)916(例如读写可移动盘918)以及光盘驱动器920(例如读CD-ROM盘922,或者读写诸如DVD等其它高容量光介质)。硬盘驱动器914、磁盘驱动器916和光盘驱动器920可以分别通过硬盘驱动器接口924、磁盘驱动器接口926和光盘驱动器接口928连接到系统总线908。用于外部驱动器实现的接口924包括通用串行总线(USB)和IEEE 1394接口技术中的至少一个或两者。
[0070] 驱动器及其相关联的计算机可读介质提供数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机902,驱动器和介质容纳以合适的数字格式的任何数据的存储。尽管以上计算机可读介质的描述涉及HDD、可移动磁盘和诸如CD或DVD等可移动光介质,但本领域的技术人员应该理解,计算机可读的其它类型的介质,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等,也可以在示例性操作环境中使用,而且,任何这样的介质可以包含用于执行本发明的方法的计算机可执行指令。
[0071] 多个程序模块可存储在驱动器和RAM 912中,包括操作系统930、一个或多个应用程序932、其它程序模块934和程序数据936。操作系统、应用程序、模块和/或数据的全部或部分也可以高速缓存在RAM 912中。可以理解,本发明可以使用各种市场上可购买的操作系统或操作系统的组合来实现。
[0072] 用户可以通过一个或多个有线/无线输入设备,例如键盘938和诸如鼠标940等定点设备来向计算机902输入命令和信息。其它输入设备(未示出)可包括麦克风、IR遥控器、操纵杆、游戏垫、指示笔、触摸屏等。这些和其它输入设备通常通过耦合至系统总线908的输入设备接口942连接到处理单元904,但可以由其它接口连接,诸如并行端口、IEEE
1394串行端口、游戏端口、USB端口、IR接口等。
[0073] 监示器944或其它类型的显示设备也通过接口,诸如视频适配器946连接至系统总线908。除监示器944之外,计算机一般包括其它外围输出设备(未示出),诸如扬声器、打印机等。
[0074] 计算机902可使用通过有线和/或无线通信至一个或多个远程计算机,诸如远程计算机180的逻辑连接在网络化环境中操作。远程计算机948可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它常见的网络节点,并且一般包括相对于计算机902描述的多个或全部元素,但是为了简明起见,仅示出存储器存储设备950。所示逻辑连接包括至局域网(LAN)952和/或较大网络,例如广域网(WAN)954的有线/无线连接。这样的LAN和WAN网络环境在办公室和公司中是常见的,且促进诸如内联网等企业范围网络,它们全部都可连接至例如因特网的全球通信网络。
[0075] 当在LAN网络环境中使用时,计算机902通过有线和/或无线通信网络接口或适配器956连接至局域网952。适配器956可促进至LAN 952的有线或无线通信,LAN 925也可包括部署在其上的用于与无线适配器956通信的无线接入点。
[0076] 当在WAN网络环境中使用时,计算机902可以包括调制解调器958,或者连接至WAN 954上的通信服务器,或者具有用于通过诸如因特网等WAN 954建立通信的其它装置。调制解调器958可以是内置或外置的和有线或无线设备,它通过串行端口接口942连接至系统总线908。在网络化环境中,相对于计算机902所述的程序模块或其部分可以存储在远程存储器/存储设备950中。可以理解,所示的网络连接是示例性的,且可使用在计算机之间建立通信链路的其它手段。
[0077] 计算机902可以用于与操作上部署在无线通信中的任何无线设备或实体通信,例如,打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签(例如公共电话亭、报亭、休息室)相关联的任何设备部分或位置、以及电话。这至少TM包括Wi-Fi和Bluetooth (蓝牙)无线技术。因此,通信可以是使用常规网络的预定义结构,或仅仅是至少两个设备之间的特别通信。
[0078] Wi-Fi或无线保真允许从家里的睡椅、旅馆房间中的床或工作单位的会议室无线地连接至因特网。Wi-Fi是类似于蜂窝电话中使用的技术的无线技术,它使得例如计算机等设备能够在户内外基站范围内的任何地方收发数据。Wi-Fi网络使用称为IEEE 802.11(a、b、g等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可以用于将计算机彼此连接、连接至因特网、以及连接至有线网络(使用IEEE 802.3或以太网)。Wi-Fi网络在非特许的2.4和5GHz无线电波段中例如以11Mbps(802.1a)或54Mbps(802.11b)数据速率运行,或者带有包括两种波段(双波段)的产品,因此网络可以提供类似于在许多办公室中使用的基本10BaseT有线以太网网络的真实性能。
[0079] 现在参考图10,示出了根据本发明的示例性计算环境1000的示意框图。系统1000包括一个或多个客户机1002。客户机1002可以是硬件和/或软件(例如,线程、进程、计算设备)。客户机1002可以例如,通过使用本发明容纳cookie和/或相关联的上下文信息。
[0080] 系统1000也包括一个或多个服务器1004。服务器1004也可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器1004可以例如,通过使用本发明容纳执行变换的线程。客户机1002与服务器1004之间的一种可能的通信可以是以适用于在两个或多个计算机进程之间传输的数据包的形式。数据包可以包括,例如cookie和/或相关联的上下文信息。系统1000包括通信架构1006(例如,诸如因特网等全球通信网络),它可以用于促进客户机1002与服务器1004之间的通信。
[0081] 可以通过有线(包括光纤)和/或无线技术来促进通信。客户机1002操作上连接至可以用于存储对客户机1002本地的信息(例如,cookie和/或相关联的上下文信息)一个或多个客户机数据存储1008。类似地,服务器1004操作上连接至可使用来存储对服务器1004本地的信息的一个或多个服务器数据存储1010。
[0082] 以上描述包括本发明的示例。当然,不可能为描述本发明而描述每个可想象的组件或方法的组合,但是本领域的普通技术人员可以认识到,还可能有本发明的众多其它组合和排列。从而,本发明旨在包括落入所附权利要求书精神和范围内的所有这样的变更、修改和变化。而且,就或者在详细描述中或者在权利要求书中使用的术语“包括”而言,当被用作权利要求书中的过渡词时,这样的术语旨在是包含性的,类似于解释术语“包含”的方式。