专利名称::模式打包、分布和可用性的制作方法模式打包、分布和可用性非旦冃尿计算系统中的技术进步针对日益增加的数据通用性,从而允许机器之间的共享、兼容性和互操作性。例如,众所周知,通常,用户可能在一个设备上具有数据,并期望与不同的设备和/或应用程序共享该数据。今天,只要系统被预配置成接受特定数据格式和类型,计算器就可在应用程序和用户之间共享数据。然而,这些常规系统不是可扩展的。换言之,如果在目的地设备上没有正确的模式可用,则数据不能被传送。而且,为了维护自由数据交换,未在目的地位置(例如,服务器/客户端)安装相同的添加和/或修改的情况下,用户不能在原始位置(例如,客户端/服务器)处添加或修改类型。换言之,目的地位置(例如,服务器/客户端)必须配备(例如,维护必要的模式信息)来接受来自不同的设备和/或应用程序的传入数据。计算系统的发展涉及采用利用数据库技术优势的平台。通常,这些发展将这些优势结合到文件系统中。然而,这些系统却都有上述的相同模式兼容性缺点。因此,当今,为了有效地传送和共享数据,文件系统中的数据必须遵循预定义的通用模式。当然,模式可被预定义为描述数据形式(例如,结构)的声明性方式。在新兴的文件系统中,对象可被存储在数据库(例如,文件系统)中,从而可由适用的模式描述。这些文件系统中的数据是特定模式和类型的实例;诸类型在定义数据的形状(例如,结构)的模式中定义。如果期望将新的类型添加到系统,例如系统可与其一起工作的一组新的对象或一新形式的数据,则开发员需要在其中创建模式及类型。接着,可向类型添加属性。存在数据必须被保存到尚未安装所需模式/类型的文件系统存储(或其它数据库)的多种情况。这被称为"存储下级(storedown-evel)"问题。在常规系统中,只有系统管理员和/或具有专门授权的人员才能安装模式信息。发明概述以下呈现了本发明的简化概述以提供对本发明的某些方面的基本理解。该概述不是本发明的详尽的概观。它不旨在标识本发明的关键/重要元素,也不勾画本发明的范围。其唯一目的是以简化形式呈现本发明的某些概念,作为稍后呈现的更详细描述的序言。在其一个方面中,此处描述的本发明可便于在客户端程序集内包括模式包作为资源。其它方面可包括模式包作为附属(satellite)程序集或作为单独的文件。可以理解,可在称为模式包的文档中收集模式定义。在示例性情形中,系统可便于构造和分布允许客户端与存储就未安装的模式进行交互所需的模式包和信息。为了支持模式的运行时安装,可向存储呈现经签署的模式包以便安装。尽管模式包提供多个优点,但如果包不易于安装,则这些优点将无济于事。在其一方面中,本创新涉及构造和分布模式包以便确保安全和按时的可用性的系统和方法。根据一方面,在模式包的构造期间,可采用强名字签署操作。其它方面可采用模式包的认证码签署、压縮和/或加密。模式包可作为提供模式实现的客户端程序集的一部分而被纳入。客户端程序集可用公知名字标识,且可在可程序性使用模式的所有地方由API使用。换言之,无论何时当客户端应用程序实例化模式化类型的实例以便保存在存储中时,客户端就能够访问模式包。在再一方面中,如果所需模式在存储中不可用,则可在呈现数据之前将模式包安装到存储中。为了实现前述和相关目的,在此结合以下描述和附图对本发明的某些说明性方面进行描述。然而,这些方面仅指示可采用本发明的原理的各种方式中的少数几种,而本发明旨在包括所有这样的方面及其等效方式。结合附图,从本发明的以下详细描述,本发明的其它优点和新颖特征将变得显而易见。附图简述图l是根据本发明的一方面,促进模式的打包、分布和可用性的系统的框图。图2示出了根据本发明的一方面、采用强名字签署组件来签署模式数据的系统的框图。图3示出了根据本发明的一方面、可任选地采用认证码、压縮和/或加密组件的系统的示例性框图。图4示出了根据本发明的一方面、采用模式包和客户端程序集的相同密码签署的系统。图5示出了根据本发明的一方面、实现模式的强名字签署的方法的示例性流程图。图6示出了根据本发明的一方面、实现对强名字签署的模式解密的方法的示例性流程图。图7示出了根据本发明的一方面、采用发现组件和加载组件来实现模式分布的系统的框图。图8示出了可用于执行所公开的体系结构的计算机的框图。图9示出了根据本发明的示例性计算环境的示意性框图。详细描述现在参照附图描述本发明,在全部附图中,类似的附图标记用于指代类似的元素。在以下描述中,出于说明目的,描述了众多具体细节,以提供对本发明的透彻理解。然而显然,本发明可以在没有这些具体细节的情况下实现。在其它实例中,公知的结构和设备以框图形式示出,以便于描述本发明。如在本申请中所用,术语"组件"和"系统"是指计算机相关的实体,它们或者是硬件、硬件和软件的组合、软件,或者是执行中的软件。例如,组件可以是,但不限于,运行在处理器上的进程、处理器、对象、可执行代码、执行线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和服务器本身都可以是组件。一个或多个组件可以驻留在进程和/或执行中的线程内,且组件可以位于一台计算机本地和/或分布在两台或多台计算机之间。如此处所用,术语"推断"和"推论"一般指的是从经由事件和/或数据捕获的一组观察结果中推理或推断系统、环境和/或用户的状态的进程。例如,推论可以被用来标识具体的上下文或动作,或者可以生成状态上的概率分布。推论可以是概率性的,S卩,基于对数据和事件的考虑对所关心的状态上的概率分布的计算。推论也可以是指用于从一组事件和/或数据中组成更高级的事件的技术。这样的推论导致从一组观察到的事件和/或所存储的事件数据中构造新的事件或动作,而不管这些事件在时间上是否紧密相关,也不管这些事件和数据是来自一个还是若干个事件和数据源。首先参考图l,示出了促进模式的打包、分布和可用性的系统100。通常,系统100可包括模式打包组件102和模式分布组件104。如上所述,系统100可实现适当模式的可用性而同时维护系统100的安全性和可靠性。通常,用户在计算机上具有数据,并想要在应用程序和用户之间共享该数据。然而,在某些情况中,必要的信息(例如,模式)可能不可用于实现数据的共享。对于常规系统实现数据共享的方式存在多个问题。如上所述,常规系统不可扩展。例如,因许可和访问性问题通常难以添加类型。文件系统通常采用利用数据库优势并将其构建到存储文件系统中的平台。这样,文件系统中的数据可遵循预定义或预安装的模式^~即,描述数据形式的声明性方式。在新兴文件系统中,对象可被存储在数据库(例如,文件系统)中,并由专门的模式描述。这些文件系统中的数据是特定模式的类型的实例——这些类型在定义数据的形状的模式内定义。尽管此处所述的各示例和方面针对数据库模式情况,但可以理解,存在此处所述的新颖功能的其它情况和实现,从而适用的模式可描述其它文档。这些替换方面旨在被包括在本公开和所附权利要求书的范围之内。本创新使得数据能够不受禁止地从一台机器传送到另一台机器,同时使得无论何时数据到达第二台机器,相关于该数据所需的元数据已经存在于第二台机器。此外,本创新在各组件之间协调模式信息,同时维护关于模式信息的安全性。再次参照图1,本发明的各方面针对促进模式的安全打包、分布和可用性的系统100(和/或方法)。在一个方面中,可提供模式打包组件102来定义模式安装的单元一一描述数据的结构的模式包或简称为包(例如模式文档)。可由系统100解决的一个问题是如果两个模式是独立开发的,则重要的是确保模式不会意外冲突。换言之,重要的是确保两种类型的文档不会在目的地机器上意外地表现为相同的文档。为了支持如前述相关应用中所述的模式的运行时安装,模式打包组件102可生成可向存储呈现的唯一签署的模式包以用于安装。模式包提供多个优点,但如果包不易于安装,则这些优点将无济于事。分布组件104可促进安装的可用性。模式打包组件102和模式分布组件104的新颖功能将在下文中更详细描述。通常,在其一个方面中,本创新针对向非管理员或非授权代理给予将模式注入存储以便于将数据存储到存储中的能力。更具体地,本创新允许这种情况达到如此程度模式对于它自身的所有者是授权的且该模式不与由不同所有者生成的模式冲突。根据此处所述的新颖功能,如果一个用户生成一模式,另一用户可采用该模式并确定该模式对于其原始所有者是授权的。而且,用户可保证,如果该模式被注入到存储中,则它不会对现有模式或另一用户生成的模式产生负面影响。可以理解,另一关键的新颖概念是模式包与客户端程序集之间的关系。该关系可使模式包在所有时间都可为客户端程序集使用。该创新组合多种技术来实现上述新颖的授权和非冲突的功能。本发明的各方面描述如何构造和分布模式包,以便确保其可用性。如从以下附图的讨论将显而易见的,本创新的一方面的一新颖特征是密码签署的模式包可被链接到客户端程序集,例如作为资源被包括在客户端程序集内。现在参照图2,示出了系统100的替换体系结构框图。根据新颖的模式打包、分布和可用性系统的各方面,经由模式打包组件102进行的模式包的构造可采用强名字签署组件202来实现强名字签署操作。强名字签署是指在所有其它模式中唯一地定义模式以提供篡改检查并保护版本血统的能力。从而,对于强名字签署,每一模式可具有与模式定义本身紧密耦合的唯一名字。因此,模式必须是唯一的,因为任何其它模式将具有不同的定义和/或签名。与用其原始形式发送模式相反,模式可由模式打包组件102来"打包"以便给予其某些期望的特性同时保存其内容。在一个方面中,模式包可以是具有强名字的模式定义语言(SDL)文档(例如,可扩展标记语言(XML))。此外,可以理解,模式包不包含任何定制或可执行代码。从而,这一模式是模式安装的唯一单元。如图2中所示,在一个方面中,强名字可包括模式的昵称、版本、文化背景和用于签署模式的密码密钥对中的公钥部分。现在参照图3,示出了促进模式的打包、分布和可用性的替换系统300。如图所示,除强名字签署组件202以外,模式打包组件102可任选地采用认证码组件302、压縮组件304和/或加密组件306作为模式包构造的一部分。认证码签署组件302可将特定的强名字模式附连于特定的单个或一组个体。从而,该模式不仅可相对于其强名字而被授权,而且它也相对于其物理真人或组织作者而被授权。因此,认证码提供者可保证经由签署的强名字与作为模式作者的认证码实体之间的映射。压縮组件304可使得传输更容易且更高效。例如,在随可能与存储通信的客户端装运或在从存储中取出数据以用于备份或用于导入/导出操作、复制操作或同步时随该数据装运的代码中包括模式包时,压縮尤其有用。在所有情况中,当模式被附连于数据时,将模式压縮以减少随数据传输的模式的开销是尤其有利的。该压縮可任选地经由压縮组件304来实现。而且,加密可任选地经由加密组件306来采用。该加密可促进当模式随数据传送时的安全性。因为,存在保持模式专用性尤其有用的情况,所以可采用加密机制。从而,模式定义将被隐藏,而不可在输运时或可检查模式包的任何其它时间査看。以上讨论根据一方面定义了模式包,并描述模式包的属性,在该方面中包是包括以上属性中的一个或多个(例如,认证码、压縮、加密)的强名字签署的模式。一旦构造之后,本发明的一个新颖特征是包括模式包来作为客户端程序集中允许实现模式的一部分(或与之相关)。而且,可用公知名字来标识模式,且模式可在该模式可程序性使用的所有场合由应用程序编程接口(API)使用。可以理解,上述系统300确保无论何时客户端应用程序实例化模式化类型的实例以便保存在存储中,该客户端就能访问模式包。如果当前所需模式在存储中不可用,则可发现模式包并经由模式分布组件104使之可用,最终在将数据呈现给存储之前将其安装(例如,经由前述相关应用中所述的模式安装组件)到存储中。换言之,模式包可被包括在客户端程序集内(或与之链接),该程序集是创建和/或操纵数据并与存储通信的应用程序。在一个特定方面中,客户端程序集可包括模式的定义作为资源。或者,模式可具有与程序集的另一内在关系,从而实现可发现性和可用性。图4示出了促进模式打包、发现和可用性的又一替换系统400。具体地,图4示出了可由相同的强名字签署组件用相同的强名字来签署的模式包402和客户端程序集404。可以理解,就需要多个模式来操纵多种类型的数据而言,这些附加的模式可被包括在客户端程序集内(或与之相关联)。每一包可用公知名字来标识,即在签署模式时生成的强名字。由于应用程序本身必须具有代码以便运行,在代码运行的任何场合,必定存在与存储通信所需的模式包,因为无论何时代码可用,包就在代码中作为一资源。在实例可被保存到文件系统存储之前,其模式(以及实例的对象树中的所有类型的模式)必须存在。如上所述,在存储缺少模式的情况中,需要安装模式。本模式的打包、分布和可用性可实现所需模式的安全可用性和/或安装。现在参照图5,示出了根据本发明的一方面的强名字签署一模式的方法。尽管,为了说明简便,此处用流程图或流程示意图形式示出的一个或多个方面并将其描述为一系列动作,但可以理解并领会,本发明不受动作的顺序的限制,因为根据本发明,某些动作可用不同的顺序发生和/或与此处所示和描述的其它动作并发。例如,本领域的技术人员可以理解并领会,方法可被替换地表示为诸如状态图中的一系列相关的状态或事件。而且,不是所有示出的动作都是实现根据本发明的方法所必需的。如图5中所示,为了强名字签署一模式,在502,计算该模式的散列值。在一个示例中,可采用安全散列算法(SHA1)散列。在504,然后使用私钥以不对称密码(例如,RSA不对称密码)来签署散列值。在506,经签署的散列值与相应的RSA公钥一起被存储在模式中。现在参照图6,示出了用于对强名字签署的模式进行验证的方法。为了验证经强名字签署的模式,在602,使用所存储的密钥(例如,RSA密钥)来对所存储的散列值解密。在604,从模式内容独立生成另一散列值。在606,作出这两个散列值是否匹配的判断。如果这两个散列值不匹配,则到达停止框。在另一方面,如果这两个散列值匹配,则在608认为验证成功。有效模式包可确保所要求的强名字的有效性、内容的完整性和发布者可靠性的程度。换言之,模式可被认为相对于其原始所有者是授权的。可以理解,在打包以实现诸如紧凑性(例如,压縮)和额外的安全性(例如,加密和/或认证码签署)的属性时可应用附加的动作(例如,根据图3的可任选组件)。这些附加方面将被视为落在本公开和所附权利要求书的范围内。与模式定义语言(本示例中的XML)—起,可能存在生成可被编译成客户端程序集的文件的工具(未示出)。客户端程序集是向以特定类型定义的类的链接。换言之,客户端程序集给出对这些类的程序性访问。从而,在客户端程序集与模式包之间可能存在非常紧密的关系。换言之,模式包如果未包含在客户端程序集内(例如,作为资源),那也很容易获得。客户端程序集提供查看数据的程序性访问的实现,且模式包或定义是与存储之间的约定。总而言之,本创新的一新颖特征在于提供在实现类型的客户端程序集(例如,代码)与描述存储内类型的模式包之间的内在关系和/或关联。资源是实现这种关系的一种机制。在另一方面中,模式包可被存储在也被编译成程序集的静态变量中或将其置于另一文件中并与程序集并排分布,或将其置于另一公知位置或高速缓存中。现在参照图7并继续模式打包组件102的讨论,文件系统(例如,WinFS品牌)模式的开发包括客户端程序集和模式包两者的开发。为了实现兼容性,在一个方面中,客户端程序集404和模式包402可在部署之前由签署组件202通过采用相同的强名字来签署。在替换方面中,可采用开发工具(例如,发现组件702和加载组件704)来发现密钥对,并在编译时和编译后(延时签署)两个时间签署包。可以理解,延时签署环境可由跳表(skiplist)维护和査询的基础架构来支持。以下是建议模式包402和客户端程序集404由特定和通用密钥签署的讨论。为了保证客户端程序集404与模式包402之间的关系,本创新公开了通过要求客户端程序集使用相同密钥的签名(例如,经由强名字签署组件202)的新颖关系。对10同一密钥的这种使用可实现客户端程序集404与模式包402之间的内在关系。该密钥指示作者必定访问过私钥,而这确认了由于只有作者才能访问私钥,所以模式包402相对于客户端程序集404是授权的。如上所述,本机制的一个新颖特征在于模式包402可作为资源包含在客户端程序集404中。在客户端程序集404中包括模式包402可确保无论何时签署客户端程序集404,该模式包都将可用于签署。在另一方面中,可通过单个机制将密钥对呈现给开发工具。在编译时签署期间,用于签署程序集的同一密钥文件可用于在程序集编译期间签署模式包。因为模式包显现为程序集内的资源,所以模式包可首先被签署;被包括在程序集中;然后该程序集被签署。可以理解,这些操作可封装在自建任务中(例如,使用MSBuild任务)。另外,可提供通过自动化上述多个动作来简化用户体验的用户界面(UI)层。因为私钥是倍受保护的,所以在开发环境中,可使用跳表来实现延时签署。在延时签署期间,模式打包组件102可支持延时签署的包(即,在没有正确的散列值的情况下构建的包)。跳表可用于描述模式包跳表条目。作为示例,跳表可以是另一类似机制的程序集跳表。根据这一方面,出现在跳表中的任何模式包在安装期间未被确认。在该环境中,尽管开发员不能访问私钥,但他们仍可与系统一起工作,如同他们确实能访问私钥一样。一旦开发完成,可执行最后的签署过程,从而用密钥签署客户端程序集和模式包。可以理解,跳表是由通过在特定的机器上确认程序集、模式包或两者的强名字检查来启用的机制。换言之,跳表允许这样的情形,如果用户看到该组件,则可忽略该组件尚未用适当的私钥签署的事实。在延时签署开发环境中,当程序集最终被签署时,仍可能有必要在程序集被签署之前完全签署模式包。在开发环境中,其中单独部门管理密钥并执行已经建立的程序集的签署完成步骤,模式包及其程序集通常用两步骤过程来签署。在第一步骤中,模式包被提交给签署部门以便签署。从而,经签署的模式包将被登记到构建树。无论何时登记了模式改变,该登记的已签署包可用新的已签署包来更新。经登记的已签署模式包可在随后建造中使用。随后将"黄金位(goldenbit)"建造发送到签署部门以便于己经包含己签署模式包的程序集签署。在替换方面中,该过程也可用一个步骤的过程来实现。例如,提交给签署部门的程序集已经包含延时签署但未完全签署的模式包作为资源。据此,签署部门可使用工具来提取模式包、对其签署、在已签署的情况下将其重新插入程序集、并最终签署程序集。现在转向在哪里存储客户端程序集以及它可如何与模式包一起加载的讨论,图7示出了具有集成到模式分布组件104的发现组件702和加载组件704的系统700。这些组件中每一个的新颖功能将在以下更详细描述。无论何时客户端应用程序实例化模式化类型的实例以便保存在存储中,客户端可能必须在呈现数据之前将模式包呈现给存储,例如在必要的模式在存储中尚不可用的情况中。为了呈现模式包,客户端必须能够发现并加载模式包。参考加载组件704,可采用两种类型的机制静态和动态绑定。然而,模式包在保存到存储中之前必须首先被定位(例如,发现)。从而,发现组件702可用于在全局访问高速缓存(GAC)或本地存储或本地文件系统中定位客户端程序集和/或包。换言之,在示例性方面中,关于用户可在何处部署应用程序存在两个选择——GAC或本地。位置的决定性因素可以是多少用户将被展示给该应用程序。而且,关于如何针对特定类型来对应用程序编码存在两个选择。这些情形中的每一个将在以下描述。部署的第一种选择是GAC,这意味着程序集将始终被展示给所有用户。GAC即全局程序集高速缓存是其中应用程序(或其部分)可被部署的全局资源,从而允许所有用户访问并使用该应用程序(或其部分)。第二种选择是本地,这意味着应用程序(或其部分)被保存在特定位置,且限于单个用户(或有限的一组用户)访问和使用。对于编码,存在两个可用的选择静态和动态绑定。如果用户知道类型,并明确地针对己知类型编写代码,则这被称为静态绑定。另一方面,动态绑定是指用户不知道具体类型但当代码运行时,可查询系统(例如,经由发现组件702)来发现具体类型的情形。一旦发现之后,用户可针对类型动态地编程。下表示出了发现组件702和加载组件704的新颖功能适用于这两种决策的任何交叉咅<table>tableseeoriginaldocumentpage12</column></row><table>统中且在编译时静态绑定到所有类统中且在运行时动态或程序性发现型的应用程序。类型的应用程序。可以理解,当在通用语言运行时(CLR)平台上开发的代码将由跨计算机的若干应用程序共享时,代码通常可被置于被称为GAC的机器范围高速缓存中。驻留在GAC中的程序集必须遵守允许不同代码版本并排执行的特定的版本方案。在这一方面中,安装了GAC的应用程序具有以安全、机器全局的方式部署客户端程序集和模式包两者的要求。可以理解,CLR可用GAC及其安装服务的形式提供满足这一要求的服务。还可理解和领会,如果未采用GAC,这些服务将必须对模式包重复。对于另一方面,本地应用程序在公知位置中安装其程序集。这种应用程序的模式包理论上可被置于同一位置中。然而,实际上可以理解,应用程序可从一系列不同的组件建立。每一组件本身可被安装在一个或多个公知位置上。在CLR中可能存在复杂的绑定规则以便于以特定的无缝方式从这多个位置中发现和加载这些程序集。可以理解,如果不能利用现有的基础架构,则必须对模式包重复这一绑定基础架构。静态绑定应用程序在编译时对类进行实例化,即它们包含声明特定类的变量并使用新运算符来创建该类的新实例的明确代码行。对于这些类,在链接时将特定的类型绑定解析成稍后加载(遵守融合加载策略)的完全合格、强名字的程序集。静态应用程序在它们被绑定至特定的一组程序集时,即链接时被绑定至特定的一组模式包。另一方面,动态绑定应用程序在运行时基于此刻的条件来链接例程或对象。作为用户启动发现的结果,动态应用程序动态加载类型。例如,VisualStudio应用程序允许用户在形成设计阶段选择包含控件的程序集。在此示例中,程序集被加载,然后控件可通过控件工具栏来实例化。而且,动态应用程序通常可程序性地加载类型。作为实例,Word应用程序可维护已注册插件(add-in)列表。然后可从列表中程序性加载每一插件,并在之后将其实例化。在操作中,动态应用程序仅在运行时被绑定至特定的一组模式包。而且,该组模式包可总是在运行流(run)之间流动或随时间在同一运行流中流动。在这两种应用程序,例如静态或动态的应用程序中,用于一类型的模式包必须可在可发现客户端程序集时的所有情况中发现。这是本机制的新颖特征。换言之,本创新的一新颖特征在于,在客户端程序集中包括模式包,从而保证用于发现程序集的完全相同的基础架构将可在发现模式包时利用。对于正确的操作,应用程序必须为它期望实例化的所有类型部署客户端程序集和模式包。安装和部署基础架构可将程序集部署到GAC或本地部署程序集。可以理解,对应用程序无法部署模式包将导致应用程序在交叉级别版本情形中的故障,即其中实例要被保存到不具有所要求的模式的存储中的情形。由于可预见本质和所涉及的复杂性/花费,交叉级别版本情形有时在软件装运之前很少被充分测试。如果软件开发过程在设计时未实施交叉级别版本情形的要求,这些要求将在测试和部署期间被忽略,导致在未测试情形中的现场软件故障。因此,软件开发过程在设计时实施足够的约束以使得使用在此提供的基础架构的这些情形的部署容易且没有错误,这是设计要求。在客户端程序集中包括模式包确保,用于程序集部署的完全相同的基础架构将可用于模式包的部署。可以理解,开发员和部署工具大多数熟悉程序集部署出现的问题。包括开发时检查可确保模式包被适当地编译到客户端程序集内作为资源。出于类似理由,运行时检査也是有益的。在替换方面中并如上所述,多个模式包可被包括在客户端程序集内。从而,对于资源命名,对应于任何特定模式的模式包可由对资源名的一对一映射标识,资源名是基于用于特定模式包的强名字的。可以理解,在多模式包情形中,仍满足匹配和签署属性以便于实现客户端程序集与模式包之间的关系。换言之,即使存在具有不同强名字的多个模式包,它们仍可全部由同一密钥来签署以保留客户端程序集与模式之间的关系一一只有一个密钥可用于签署程序集。如前所述,可任选地,可对于替换方面采用压縮、加密和认证码签署。因为模式文件可能较大,通常采用压縮来提高文件大小的可管理性。在替换方面中,可在签署模式之前或之后应用压縮。出于至少两个原因,在签署模式之后应用压縮尤其适宜。首先,对原始XML内容通常执行散列。第二,因为由于定时,签署块也可被压縮,所以通常可实现较好的压縮。在模式验证期间,首先对模式包解压然后再验证。根据一替换方面,模式包可以是附属程序集。在此方法中,模式不被直接嵌入到客户端程序集中。相反,模式是作为清单资源的单独的附属程序集。签署过程是主程序集和附属程序集均可被提交给签署部门,后者首先签署模式文件然后签署对附属程序集进行散列的主程序集。在另一替换方面中,模式包可作为单独文件维护。模式包本身可由开发员按单独的建立步骤创建、由安装器部署为单独的文件、并由加载器/绑定器单独发现。开发过程可能因为在所述发明中可无缝进行的各单独步骤需要由开发员执行而艰难。而且,这一方面的部署过程可因需要可能不同步的额外步骤而艰难。通常在应用程序装运前未充分测试的情形中,这样的模式包的正确部署的失配或忽略可导致该应用程序的部分故障。发现过程可能需要附加的基础架构来解决全局部署和动态发现的问题。这些替换方面被视为落在本公开和所附权利要求书的范围之内。如上所述,根据上述系统可采用任何公/私密码密钥对。在一个实例中,可采用公钥密码技术来命名(并签署)模式包。公钥密码术可指的是使用包括公共成分和私有成分的两部分密钥(例如,唯一的代码)的密码方法。为了对消息加密,使用仅为发送方所知的未公开的私钥。相应地,为对消息解密,接收方使用发送方的己公开公钥。换言之,公钥可指的是两部分、公钥密码系统中的公开部分。密钥对中的私有部分仅为所有者所知。相应地,模式作者可使用未公开的私钥来密码地签署模式包。该密码安全访问可极大地提高模式信息的可靠性和完整性。还应理解,可采用唯一命名和/或签署数据的任何方法,而不背离本发明及所附权利要求书的精神和范围。现在参照图8,示出了可用于执行所公开的模式打包、分布和可用性体系结构的计算机的框图。为了向本发明的各方面提供附加的上下文,图8及以下讨论旨在提供可在其中实现本发明各方面的合适的计算环境800的简要、大致的描述。尽管以上在可以在一台或多台计算机上运行的计算机可执行指令的通用上下文中描述了本发明,但是本领域的技术人员可以认识到,本发明也可以结合其它程序模块和/或作为软硬件的组合来实现。一般而言,程序模块包括例程、程序、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。而且,本领域的技术人员可以理解,本发明方法可以使用其它计算机系统配置来实现,包括单处理器或多处理器计算机系统、小型机、大型机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,它们中的每一个都可以有效地耦合至一个或多个相关联的设备。本发明所示方面也可以在分布式计算环境中实现,在分布式计算环境中某些任务是由通过通信网络链接的远程处理设备执行的。在分布式计算环境中,程序模块可以位于本地或远程存储器存储设备中。计算机一般包括各种计算机可读介质。计算机可读介质可以是可由计算机访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字视频盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其它介质。通信介质通常具体化为在诸如载波或其它传输机制等的调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包含任何信息传递介质。术语"调制数据信号"指的是这样一种信号,其一个或多个特征以在该信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。再次参照图8,用于实现本发明各方面的示例性环境800包括计算机802,计算机802包括处理单元804、系统存储器806和系统总线808。系统总线808将包括但不限于系统总线806在内的系统组件耦合至处理单元804。处理单元804可以是各种商用处理器的任一种。也可以采用双微处理器和其它多处理器体系结构作为处理单元804。系统总线808可以是若干类型总线结构中的任一种,可进一步与存储器总线(带有或不带有存储器控制器)、外围总线和使用各种商用总线体系结构中任一种的局部总线互连。系统存储器806包括只读存储器(ROM)810和随机存取存储器(RAM)812。基本输入/输出系统(BIOS)存储在诸如ROM、EPROM、EEPROM等非易失性存储器810中,其中BIOS包含在诸如启动时帮助在计算机802中元件之间传递信息的基本例程。RAM812还可以包括用于高速缓存数据的诸如静态RAM的高速RAM。计算机802还包括内部硬盘驱动器(HDD)814(例如EIDE、SATA),其中内部硬盘驱动器814也可被配置为在合适的硬盘盒(未示出)中供外部使用;磁软盘驱动器(FDD)816(例如读写可移动盘818)以及光盘驱动器820(例如读CD-ROM盘822,或者读写诸如DVD的其它高容量光学介质)。硬盘驱动器814、磁盘驱动器816和光盘驱动器820可以分别通过硬盘驱动器接口824、磁盘驱动器接口826和光盘驱动器接口828连接到系统总线808。用于外部驱动实现的接口824包括通用串行总线(USB)和正EE1384接口技术中的至少一个或两者。其它外部驱动连接技术落在本发明的构想之内。驱动器及其相关联的计算机可读介质提供数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机802,驱动器和介质容纳以合适数字格式存储的任何数据。尽管以上计算机可读介质的描述提及HDD、可移动磁盘和诸如CD或DVD的可移动光学介质,但本领域的技术人员应该理解,计算机可读的其它类型的介质,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等,也可以在示例性操作环境中使用,而且,任何这样的介质可以包含用于执行本发明的方法的计算机可执行指令。多个程序模块可存储在驱动器和RAM812中,包括操作系统830、一个或多个应用程序832、其它程序模块834和程序数据836。操作系统、应用程序、模块和/或数据的全部或部分也可以高速缓存在RAM812中。可以理解,本发明可以使用商用操作系统或操作系统的组合来实现。用户可以通过一个或多个有线/无线输入设备,例如键盘838和诸如鼠标840的定点设备来向计算机802输入命令和信息。其它输入设备(未示出)可包括麦克风、IR遥控器、操纵杆、游戏手柄、指示笔、触摸屏等。这些和其它输入设备通常通过耦合至系统总线808的输入设备接口842连接到处理单元804,但可以由其它接口连接,诸如并行端口、IEEE1384串行端口、游戏端口、USB端口、IR接口等。监示器844或其它类型的显示设备也通过接口,诸如视频适配器846连接至系统总线808。除监示器844之外,计算机一般包括其它外围输出设备(未示出),诸如扬声器、打印机等。计算机802可在使用通过有线和/或无线通信而至诸如远程计算机848的一台或多台远程计算机的逻辑连接的网络化环境中操作。远程计算机848可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它公共网络节点,并且一般包括相对于计算机802描述的多个或全部元素,但是为了简明起见,仅示出存储器/存储设备850。所示逻辑连接包括至局域网(LAN)852和/或较大网络,例如广域网(WAN)854的有线/无线连接。这样的LAN和WAN网络环境在办公室和公司中十分常见,且促进了诸如内联网的企业范围网络,它们全部都可连接至例如因特网的全球通信网络。当在LAN联网环境中使用时,计算机802通过有线和/或无线通信网络接口或适配器856连接至局域网852。适配器856可促进至LAN852的有线或无线通信,LAN825也可包括部署在其上的用于与无线适配器856通信的无线接入点。当在WAN联网环境中使用时,计算机802可以包括调制解调器858,或者连接至WAN854上的通信服务器,或者具有用于通过诸如因特网等WAN854建立通信的其它装置。调制解调器858可以是内置或外置的和有线或无线设备,它通过串行端口接口842连接至系统总线808。在网络化环境中,相对于计算机802描述的程序模块或其部分可以存储在远程存储器/存储设备850中。可以理解,所示网络连接是示例性的,且可使用在计算机之间建立通信链路的其它手段。计算机802可以用于与有效部署在无线通信中的任何无线设备或实体通信,例如,打印机、扫描仪、台式和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签(例如公共电话亭、报亭、休息室)相关联的任何设备配置或位置、以及电话。这包括至少Wi-Fi和Bluetooth(蓝牙)无线技术。因此,通信可以是使用常规网络的预先定义的结构,或仅仅是至少两个设备之间的自组织通信。Wi-Fi即无线保真允许从家里的睡椅、旅馆房间中的床或工作单位的会议室无线地连接至因特网。Wi-Fi是类似于蜂窝电话中使用的技术的无线技术,它使得例如计算机等设备能够在室内外的基站范围内的任何地方收发数据。Wi-Fi网络使用被称为正EE802.11(a、b、g等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可以用于将计算机彼此连接、连接至因特网、以及连接至有线网络(使用IEEE802.3或以太网)。Wi-Fi网络在非特许的2.4和5GHz无线电波段中以例如11Mbps(802.11a)或54Mbps(802.11b)数据速率运行,或者通过包括两种波段(双波段)的产品运行,因此这些网络可以提供类似于在许多办公室中使用的基本10BaseT有线以太网网络的真实世界性能。现在参照图9,示出了根据本模式的打包、分布和可用性系统的示例性计算环境900的示意框图。系统900包括一个或多个客户端902。客户端902可以是硬件和/或软件(例如,线程、进程、计算设备)。客户端卯2可以例如,通过使用本发明来容纳cookie和/或相关联的上下文信息。系统900也包括一个或多个服务器904。服务器904也可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器904可以例如,通过使用本发明容纳执行变换的线程。客户端902与服务器卯4之间的一种可能的通信可以是以适用于在两个或多个计算机进程之间传输的数据包的形式。数据包可以包括,例如cookie和/或相关联的上下文信息。系统900包括通信框架906(例如,诸如因特网等全球通信网络),该框架可以用于促进客户端902与服务器904之间的通信。可以通过有线(包括光纤)和/或无线技术来促进通信。客户端902有效连接至可以用于将信息(例如,cookie和/或相关联的上下文信息)存储到客户端902本地的一个或多个客户端数据存储908。类似地,服务器卯4有效连接至可使用来将信息存储到服务器904本地的一个或多个服务器数据存储910。以上描述包括本发明的示例。当然,不可能为描述本发明而描述每个可预期的组件或方法的组合,但是本领域的普通技术人员可以认识到,还可能有本发明的众多其它组合和排列。从而,本发明旨在涵盖落入所附权利要求书精神和范围内的所有这样的变更、修改和变化。而且,就在详细描述中或者在权利要求书中使用的术语"包括"而言,这样的术语以与术语"包含"类似的方式表示包含性,如同在权利要求书中使用时所解释的一样。19权利要求1.一种促进模式包的可用性的系统,包括打包组件,对所述模式包签署强名字;以及分布组件,定位所述模式包,并促进所述模式包的可用性以用于注入到存储中。2.如权利要求l所述的系统,其特征在于,所述打包组件在所述模式包与客户端程序集之间创建内在关系。3.如权利要求2所述的系统,其特征在于,所述打包组件将所述经签署的模式包嵌入到所述客户端程序集内作为资源。4.如权利要求2所述的系统,其特征在于,所述打包组件将所述经签署的模式包部署为附属程序集。5.如权利要求2所述的系统,其特征在于,所述打包组件将所述经签署的模式包部署为单独的文件。6.如权利要求2所述的系统,其特征在于,所述分布组件包括发现组件,便于至少部分地基于与所述客户端程序集的内在关系定位所述模式包;以及加载组件,便于访问所述模式包。7.如权利要求2所述的系统,其特征在于,所述打包组件使用通用密码密钥来签署所述模式包和所述客户端程序集。8.如权利要求2所述的系统,其特征在于,还包括使所述经签署的模式包与个体和组织的至少之一相关联的认证码组件。9.如权利要求2所述的系统,其特征在于,还包括压縮所述经签署的模式包组件并减少所述模式包的传输开销的压縮组件。10.如权利要求2所述的系统,其特征在于,还包括便于对所述经签署的模式包的加密的加密组件。11.一种分布模式的计算机实现的方法,包括用密码密钥签署模式包;用所述密码密钥签署客户端程序集;以及至少部分基于所述密码密钥来分布所述模式包。12.如权利要求ll所述的计算机实现的方法,其特征在于,还包括将所述经签署的模式包作为资源嵌入到所述客户端程序集中。13.如权利要求ll所述的计算机实现的方法,其特征在于,还包括指定所述模式包作为与所述客户端程序集相关的附属程序集。14.如权利要求ll所述的计算机实现的方法,其特征在于,还包括从所述模式包生成单独的文件以及使所述单独的文件与所述客户端程序集相关。15.如权利要求ll所述的计算机实现的方法,其特征在于,所述分布的动作还包括至少部分基于所述密码密钥来发现所述模式包;以及加载所述模式包以供应用程序使用。16.如权利要求ll所述的计算机实现的方法,其特征在于,还包括使所述模式包与特定的个体和组织的至少之一相关联。17.如权利要求ll所述的计算机实现的方法,其特征在于,还包括在所述分布动作之前压縮所述模式包。18.如权利要求ll所述的计算机实现的方法,其特征在于,还包括在所述分布的动作之前对所述模式包加密。19.一种便于模式包分布的系统,包括用于用密码密钥签署模式包的装置;用于用所述密码密钥签署客户端程序集的装置;用于将所述模式包嵌入到客户端程序集内作为所述客户端程序集的资源的装置;以及用于自动发现所述模式包以供应用程序使用的装置。20.如权利要求19述的系统,其特征在于,还包括用于在实例化所述模式包内包括的模式化类型之后自动访问所述模式包的装置。全文摘要一种允许模式打包、分布和可用性的系统和/或方法。本发明的各方面采用签署技术来方便模式包的安全定义。该系统和/或方法也可将模式包作为资源包括在客户端程序集中,以便确保用于发现程序集的完全相同的基础架构将可用于发现模式包。其它方面可包括模式包作为附属程序集或作为单独的文件。在这些情形中,本发明可便于构造和分布允许客户端就未安装的模式与存储进行交互所需模式包和信息。文档编号G06F17/00GK101243387SQ200680030555公开日2008年8月13日申请日期2006年7月20日优先权日2005年8月25日发明者D·J·奈特勒顿,J·T·亨特,S·薛申请人:微软公司