对象实例版本化的制作方法

文档序号:6434270阅读:193来源:国知局
专利名称:对象实例版本化的制作方法
技术领域
本发明涉及用于版本化对象实例的方法和系统。
背景技术
对计算机文件的历史版本进行维护是已知的。对历史版本的维护被称为版本化。 如此处所使用地,对版本、版本化及类似的术语的引用指的是历史版本、历史版本化等,其中以与版本的历史次序相对应的顺序次序来维护版本。在一些系统中,对文件的版本化默认是关闭的,但是可被打开以启用版本化。还完成了汇编版本化。汇编版本化可在开发软件时维护并跟踪的计算机代码汇编的历史版本。例如,这可在对软件部署的汇编进行封装时完成。

发明内容
无论先前的版本化工具和技术有何优点,它们都既未能认识到本文描述和要求保护的对象实例版本化工具和技术,也未认识到这些工具和技术所产生的优点。如此处所使用地,对象实例是可包括数据(例如,对象属性的实例)和方法(其可包括一个或多个子方法)的计算机可读信息的单位。此处所使用的对象方法是涉及对象的程序信息。例如, 方法可以是涉及对象实例的类或其他信息,诸如演示信息、与涉及该对象实例的例程有关的信息等。对象实例可以是对象而非文件的实例。对象实例的示例包括.NET对象实例,这些.NET对象实例是在Microsoft . NET软件框架之内的对象的实例。在一个实施例中,工具和技术可包括接收将对象实例的第一版本存储在对象持久存储中的请求。技术还可包括响应于该请求,将针对对象实例的对象数据的第一版本存储在对象持久存储中。在存储了对象数据的第一版本后,可接收将对象实例的第二版本存储在对象持久存储中的请求。响应于存储对象实例的第二版本的请求,可将对象数据的第二版本存储在该存储中,而无需删除对象数据的第一版本。可将标识对象数据的第一版本和对象数据的第二版本的对象数据版本化信息与对象实例的方法版本化信息分开存储。在存储了对象数据的第二版本后,可接收检索对象实例的第一版本的请求,并且作为响应,可从存储中检索对象数据的第一版本。如在此所使用地,在维护对象数据版本化信息和对象方法版本化信息这两种类型的信息时,将这两种类型的信息彼此分开存储,使得方法和数据版本不仅仅是彼此相同。因此,单个方法版本可对应于多个数据版本和/或反之亦然。可将数据和方法版本化信息分开地存储在相同的数据结构中或将数据和方法版本化信息存储在分开的数据结构中,或者可不存储方法版本化信息。在工具和技术的另一实施例中,分布式对象持久存储可被配置来响应于接收存储对象实例的请求而存储对象实例的对象数据的多个版本。在接收到检索对象实例的请求后,该存储可被配置来响应于该请求而标识对象数据的一版本并返回所标识的版本。客户端可被配置来请求将对象实例存储在分布式对象持久存储中,以及请求从所述分布式对象持久存储中检索对象实例。在工具和技术的再一实施例中,可响应于接收到存储一个或多个对象实例的请求而将一个或多个对象实例的对象数据的多个版本存储在对象持久存储中。可接收请求搜索对象数据的查询,其中该查询标识要被搜索的对象数据的一组版本。可根据查询来执行对该组版本的搜索,并且可返回搜索的结果。提供本发明内容是为了以简化的形式介绍一些概念。这些概念将在以下具体实施方式
中进一步描述。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。类似地,本发明不限于解决在背景技术具体实施方式
、或附图中讨论的特定技术、工具、环境、缺点、或优点的实现。


图1是其中可实现所描述的各实施例中的一个或多个的合适的计算环境的框图。图2是对象实例版本化系统的示意图。图3是对象实例版本化技术的流程图。图4是另一对象实例版本化技术的流程图。
具体实施例方式本文描述的各实施例涉及用于对象实例版本化的技术和工具。这样的改进可源于分开或组合地使用各种技术和工具。这些技术和工具可包括将对象实例的版本存储在对象持久存储中。可向客户端应用程序提供版本,这些客户端应用程序可请求存储对象实例的版本以及可请求从存储返回对象实例的当前和/或历史版本。存储可维护对象实例的版本化信息。这可包括对象数据版本化信息,该信息可以与对象方法版本化信息分开。因此,客户端应用程序可改变对象方法(例如,通过增加或改变对象类定义)和/或对象数据,并且存储仍然可以使对象实例的历史版本可用。对象持久存储可在运行时间执行版本改变,而将不同的对象实例版本存储到持久存储中。对象持久存储可提供对象实例的历史,该历史可列出对象实例的各历史版本。存储在被客户端请求时还返回当前对象实例版本和/或一个或多个历史对象实例版本。因此,在此描述的工具和方法可允许将不同的对象实例版本存储在分布式数据存储中、检索对象实例的先前版本、检索对象实例的版本历史、基于所指定的对象数据的历史和/或当前版本来搜索对象实例、和/或使对象实例数据的版本化与对象实例方法的版本化分开进行。所附权利要求中定义的主题不必限于本文描述的益处。本发明的特定实现可提供本文描述的益处的全部、一些、或未提供本文描述的益处。尽管本文出于呈现的目的以特定的顺序次序描述了用于各种技术的操作,但应理解除非要求特定的排序,否则这种描述方式涵盖了操作顺序上的重新安排。例如,在一些情况下,可重新安排或同时执行顺序地描述的操作。本文参照流程图描述的技术可被用于本文描述的一个或多个系统和/或用于一个或多个其他系统。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。此外, 为了简单起见,流程图可能未示出可结合其他技术来使用特定技术的各种方式。
1.示例性计算环境图1示出其中可实现所描述的各实施例中的一个或多个的合适的计算环境(100) 的通用示例。例如,可将一个或多个此类计算环境用作数据存储或客户端环境。一般而言, 可使用各种不同的通用或专用计算系统配置。适用于此处所描述的工具和技术的公知计算系统配置的示例包括,但不限于,服务器场和服务器群集、个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络PC、小型机、大型计算机、包括上述系统或设备中的任一个的分布式计算环境等。计算环境(100)不旨在对本发明的使用范围或功能提出任何限制,因为本发明可以在完全不同的通用或专用计算环境中实现。参考图1,计算环境(100)包括至少一个处理单元(110)和存储器(120)。在图1 中,这一最基本的配置(130)被包括在虚线内。处理单元(110)执行计算机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储器(120)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,R0M、EEPR0M、闪存)、或两者的某种组合。存储器(120)存储实现对象实例版本化的软件(180)。尽管为了清楚起见用线条示出了图1的各框,但是,实际上,描绘各组件并不是那样清楚,并且用比喻方法,图1以及下文讨论的其他附图的线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等的呈现组件认为是I/O组件。而且,处理器具有存储器。本发明人认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合本发明的一个或多个实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、 “手持式设备”等类别之间不做区分,它们全部都被认为是在图1的范围之内的并且被称为 “计算机”、“计算环境”、或“计算设备”。计算环境(100)可具有附加特征。在图1中,计算环境(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络等互连机制(未示出)将计算环境(100)的各组件互连。通常,操作系统软件(未示出)为在计算环境(100)中执行的其它软件提供操作环境,并协调计算环境(100)的各组件的活动。存储(140)可以是可移动或不可移动的,并可包括诸如磁盘、磁带或磁带盒、 CD-R0M、CD-RW、DVD之类的非瞬态计算机可读存储介质,或者可用于储存信息并可在计算环境(100)内访问的任何其它介质。存储(140)存储用于软件(180)的指令。输入设备(150)可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备;语音输入设备;扫描设备;网络适配器;CD/DVD读取器;或可向计算环境(100)提供输入的另一设备。 输出设备(160)可以是显示器、打印机、扬声器、CD/DVD刻录机、网络适配器、或从计算环境 (100)提供输出的另一设备。通信连接(170)允许通过通信介质与另一计算实体进行通信。因此,计算环境 (100)可使用通往诸如个人计算机、服务器、路由器、网络PC、对等设备或另一常见网络节点等一个或多个远程计算设备的逻辑连接而工作在联网环境中。通信介质以已调制数据信号的形式传达诸如数据或计算机可执行指令或请求等信息。已调制数据信号是以在信号中编码信息的方式来设置或改变其一个或更多个特征的信号。作为示例而非限制,通信介质包括利用电、光、射频(RF)、红外线、声音或其他载体实现的有线或无线技术。各种工具和技术可以在计算机可读介质的一般上下文中描述。计算机可读介质是可以在计算环境内被访问的任何可用介质。作为示例而非局限,对于计算环境(100),计算机可读介质包括存储器(120)、存储(140)、和以上的组合。这些工具和技术可在诸如程序模块中所包括的在目标真实或虚拟处理器上的计算环境中执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等等。程序模块的功能可以按需在各个实施例中进行组合或在程序模块之间拆分。程序模块的计算机可执行指令可以在本地或分布式计算环境内执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中。出于表示的目的,具体实施方式
使用了如“确定”、“选择”、“调整”和“操作”等术语来描述计算环境中的计算机操作。这些以及其他类似术语是对计算机执行的操作的高层抽象,并且不应与人类执行的动作相混淆,除非明确指出人类(诸如“用户”)的动作执行。 对应于这些术语的实际的计算机操作取决于实现而不同。II.对象实例版本化系统图2是结合使用其可实现所描述的各实施例中的一个或多个实施例的对象实例版本化系统O00)的框图。版本化系统(200)可包括一组客户端010),所述客户端可被主存在客户机器上。客户端(210)可连接至网络020),诸如全球计算机网络(例如,因特网)、外联网、和/或一些其他网络。可以诸如通过使用标准的消息收发技术(例如,使用TCP/IP、HTTP等)等各种方式中的任一种来通过网络(220)发送诸如请求和响应等消息。另外,版本化系统(200)可包括对象持久存储030),该对象持久存储可以是主存在多个机器(23 上的分布式对象持久存储。存储(230)可诸如在一个或多个数据库(例如, Microsoft SQL Server 数据库)中存储对象实例040)。对于每一对象实例Q40),存储 (230)可存储对象数据( 和对象方法044)(例如,对象实例所属的对象类)的单个版本。另外,存储(230)可存储每一对象实例Q40)的对象数据042)的多个版本和/或对象方法044)的多个版本。存储(230)还可存储跟踪多个对象版本的版本化信息050)。例如,版本化信息 (250)可用列出数据042)的各版本以及与数据042)的每一版本相对应的方法044)的版本表的形式。然而,版本化信息(250)可采用各种不同的形式,诸如针对存储(230)中的所有版本化的对象实例的单个表、针对每一对象实例的不同的表、或某一其他类型的数据结构。版本化信息(250)可包括跟踪数据(M2)的不同版本的数据版本化信息(252),以及跟踪各方法(M4)的不同版本并将数据( 的各版本与由数据( 的版本所使用的方法044)的相应版本相关的方法版本化信息(254)。例如,在Microsoft . NET框架可用并且存储030)中存储的对象是.NET对象的情况下,方法(M4)可以是对象类,并且方法版本化信息(254)可指示该对象类的版本。每一被版本化的对象类都可以具有名称,该名称包括完整的名字空间和类的版本标识符,这两者都可以是该类的方法版本化信息的一部分。例如,名字空间可以是“Microsoft. Partner. Customer”,且类的版本标识符可以是“Version = 2. 0. 0. 0”。可以使用该强名称和版本标识符来标识版本化的对象类。对象持久存储(230)可具有存储该信息的元数据模式。每当检测到对象类的新版本时,可在将对象实例写入存储(230)前调整类中的每一对象实例的新模式。因此,对象持久存储(230)可记录正在使用不同的类版本,并且对象持久存储(230)可存储类定义以及方法版本化信息0 )(例如,版本号)。另外,如果启用了版本化(版本化默认是关闭的)并且存储(230)从客户端(210) 处接收了存储更新后的对象实例的请求,则存储(230)可存储对象数据042)的新版本而无需删除现有的数据。而且,存储(230)可存储针对该新版本的数据版本化信息052)(例如版本化表中存储的数据( 的版本号),并且存储(230)还可存储针对该新版本的方法版本化信息(例如,对象数据( 所使用的方法的对象类版本号)。对象持久存储(230) 可使用版本化信息(250)来检索合适的对象实例,其包括将对象数据( 与合适的相应对象方法(M4)相匹配。对象持久存储(230)可被配置来在存储或不存储对象实例版本历史的情况下存储对象实例040)。如果启用了对象实例历史或版本化,则客户端(210)可通过向存储 (230)提供对象数据版本号来请求历史版本。可通过以下各项来请求当前版本请求所存储的对象实例(MO)而不提供版本号(默认版本可以是当前版本),或者请求所存储的对象实例并提供对象数据042)的版本号。存储(230)可以是分布式的,并且可通过向该存储(230)提供标识符来标识对象实例040),该标识符不必与具体的物理位置或机器绑定。例如,客户端(210)可在请求对象时向该对象提供统一资源标识符或统一资源定位符。以下是用于版本化对象类“Microsoft. Partner. Customer”的伪代码,该伪代码可
包括形成针对类中的各对象实例的方法的类定义//原始对象类
class Microsoft.Partner.Customer; 1
FirstName string, LastName string
//1.添加数据域添加一个字符串类型的属性名称HomeAddress //对象类的版本2
class Microsoft.Partner.Customer;2 {
FirstName string, LastName string, HomeAddress string
111.将属性改为复杂对象添加新地址对象类以及 //将HomeAddress属性改为地址对象
class Microsoft .Partner. Address ;1
addressLinel string, addressLine2 string, city string, state string, zipCode int//对象类的版本3
class Microsoft.Partner.Customer;3 {
FirstName string, LastName string, HomeAddress address,
}当启用版本化时,存储(230)可保存对象类的版本1、版本2和版本3。因此,在 (诸如通过请求具体的对象数据实例来)请求历史对象版本时,可使用合适的历史对象类版本以及历史对象实例数据版本。例如,在保存了类中的对象实例的版本,同时对象类版本 1是活动版本时,存储(230)可用来自该对象实例版本的数据来填充类版本1。以下是用于版本化作为前述的类“Microsoft. Partner. Customer”的成员的对象实例“/Microsoft/Customers/Fred”的对象数据的伪代码
//可检索对象实例的不同版本。默认为 //当前版本。
Microsoft.Partner.Customer;3 Fred //将Fred实例的两个版本写入对象持久存储中
ObjectPersistenceService.Write( “/Microsoft/Customers/Fred”,Fred) //vl (版本
1)
ObjectPersistenceService.Write( "/Microsoft/Customers/Fred", Fred) Il v2 (版本
2)
//读取旧版本
ObjectPersistenceService.Read("/Microsoft/Customers/Fred", "ν 1")
//读取当前版本一默认地将最新版本设置为当前版本 ObjectPersistenceService.Read("/Microsoft/Customers/Fred")在该伪代码中,将对象实例“Fred”的两个版本写入存储Q30)中,检索第一版本,以及然后检索第二版本。在“Fred”的两个版本中,都使用了 “Microsoft. Partner. Customer”类的版本3,使得将用来自对象实例“Fred”的合适版本的数据来填充类版本(对象实例Fred的方法)。可通过存储针对每一版本的数据或方法的完整集合或通过使用一些其他的技术来完成存储对象实例数据和方法的不同版本。例如,可通过仅存储已从之前版本的改变了的数据来存储多个版本。因此,所描述的版本化系统(200)包括可被配置来响应于接收存储对象实例(240)的请求而存储对象实例O40)的对象数据042)的多个版本的分布式对象持久存储 (230) 0还可对存储(230)进行配置,使得在接收到检索对象实例O40)的请求后,该存储 (230)可响应于该请求而标识对象数据042)的版本并返回所标识的版本。另外,客户端 (210)可被配置来请求将对象实例(MO)存储在分布式对象持久存储(230)中,以及请求从该分布式对象持久存储O30)中检索对象实例(MO)。而且,存储(230)可被配置来在检索对象实例O40)的请求没有指定对象实例版本时,响应于检索对象实例O40)的请求而返回对象实例O40)的当前版本。以及,存储 (230)可被配置来在检索对象实例O40)的请求指定了历史对象实例版本时,响应于该请求而返回所指定的历史对象实例版本(即,早于当前版本的对象实例O40)的版本)。存储(230)还可被配置来响应于从客户端(210)中的一个接收到的查询而搜索一个或多个对象实例(240)中的每一个的数据(M2)的历史和当前版本。例如,客户端(210) 可向存储(230)发送请求搜索对当前驻留在西雅图的所有雇员的查询,而请求搜索雇员对象实例的“城市”属性的当前版本。或者,查询可请求搜索驻留在或曾经驻留在西雅图的雇员,而请求搜索对雇员对象实例的“城市”属性的当前和历史版本。还可执行更复杂的搜索。 例如,客户端(210)可发送请求搜索改变了驻留城市的所有雇员的查询。响应于该查询请求,可在每一客户端对象的各版本之间的作出比较以确定驻留城市是否改变。当然,这些只是示例,可在对象示例数据的当前和/或历史版本上执行许多其他类型的搜索。可使用现有类型的搜索技术来执行这些搜索本身,诸如通过使用现有的数据库搜索引擎来对存储有对象实例(MO)的存储Q30)中的SQL数据库(诸如Microsoft SQL Server 数据库)执行搜索。如之前已描述地,存储(230)可被配置来维护作为跟踪在持久存储O30)中存储的对象实例的数据版本的数据结构的版本化信息O50)。例如,该数据结构可以是版本化表的形式。这种版本化表可另外包括方法版本化信息0 )。版本化默认是被关闭的,使得仅在存储(230)接收到维护对象数据的多个版本的请求时,持久存储(230)才如在此描述地被配置来维护对象数据的多个版本。III.对象实例版本化技术在此将描述若干个对象实例版本化技术。可以在计算环境中执行这些技术中的每一个。例如,可在包括至少一个处理器和存储器的计算机系统中执行每个技术,该存储器包括存储于其上的、在由该至少一个处理器执行时使该至少一个处理器执行该技术的指令(存储器存储指令(例如,对象代码)),并且在处理器执行这些指令时,处理器执行该技术。类似地,一个或多个计算机可读存储介质可具有收录于其上的计算机可执行指令,该些指令在由至少一个处理器执行时使该至少一个处理器执行该技术。参照图3,将讨论对象实例版本化技术。在该技术中,可接收(310)将对象实例的第一版本存储在对象持久存储中的请求。响应于该请求,可将对象实例的对象数据的第一版本存储(320)在对象持久存储中。在存储了(320)对象数据的第一版本后,可接收(330) 将对象实例的第二版本存储在对象持久存储中的请求。响应于存储对象实例的第二版本的请求,可将对象数据的第二版本存储(340)在存储中,而无需删除对象数据的第一版本。这可包括存储对象数据的整个第二版本,或者仅存储对象数据的第二版本的某些部分,诸如仅存储第二版本中与第一版本中的数据不同的数据。另外,可通过将它们两者存储在同一存储内部的方式,来将第一和/或第二版本存储在存储中。或者,在这些版本中的一个或两个被存储在外部位置,且位置信息(例如,指针)被存储在存储中时,可认为这些版本被存储在存储中。图3的技术还可包括存储(350)对象数据版本化信息。该版本化信息可与对象实例的方法版本化信息分开地标识对象数据的第一版本和对象数据的第二版本。该技术还可包括将对象实例的方法版本化信息与对象数据版本化信息分开存储(355)。可接收(360) 对于对象实例的历史的请求,并且作为响应,可返回(365)对象实例的历史(其可以是对象实例的数据版本的列表)。所列出的对象实例的数据版本可包括第一和第二版本,并且还可以包括其他版本。可诸如通过从所显示的历史列表中选择各版本中的一个的用户输入来请求在历史中列出的版本中的一个或多个。作为响应,可从存储中检索所请求的版本。例如,在存储了(340)对象数据的第二版本后,该技术可包括接收(370)检索对象实例的第一版本的请求。这可在返回(365)历史后(例如,通过处理在该历史中选择条目的用户输入)完成,或者可在没有请求或返回历史的情况下完成。响应于检索第一版本的请求,可从存储中检索 (375)对象数据的第一版本。方法版本化信息可包括与对象实例的对象数据的第一版本相对应的对象方法版本的第一组方法版本化信息,以及与对象实例的对象数据的第二版本相对应的对象方法版本的第二组方法版本化信息。方法版本化信息可以是各种不同类型的信息中的任何一种, 诸如方法本身、或标识和/或定位所存储的方法的一些信息。响应于检索对象实例的第一版本的请求,该技术还可包括使用第一组方法版本化信息来将对象数据的第一版本和与该对象数据的第一版本相对应的对象方法版本相匹配 (380)。第一和第二组方法版本化信息各自可包括对于对象实例的至少一个版本所属的类的版本的指示。与对象数据的第一版本相对应的对象方法版本可以和与对象数据的第二版本相对应的对象方法版本不同,或者相同。对象实例可以是商业对象的实例。如此处所使用地,商业对象是表示诸如发票、定购单、顾客、雇员、会议室等一个或多个商业项目的对象。对象持久存储可被配置来存储软件框架之内的多个对象类型中的任何一个的多个版本。例如,该存储可被配置来存储在诸如Microsoft .NET软件框架等软件框架内的任何对象。而且,对象持久存储可以是分布式对象持久存储,并且检索对象实例的第一版本的请求可指示该对象实例而无需指定存储该对象实例的物理位置(物理机器等)。现参照图4,将讨论另一对象实例版本化技术。该技术可包括响应于接收到存储对象实例的请求而将一个或多个对象实例的对象数据的多个版本存储(410)在对象持久存储中。对象持久存储可以是分布式对象持久存储。该技术还可包括接收(420)请求搜索对象数据的查询,该查询标识要被搜索的对象数据的一组版本。例如,查询可标识对象数据的所有历史版本、或所有版本(当前的和历史的)。可执行(430)对该组版本的搜索,并且可以返回(440)结果。该技术还可包括在接收到(450)检索在搜索结果中标识的对象实例的请求后,响应于该请求,标识并返回(460)对象数据的版本。尽管用结构特征和/或方法动作专用的语言描述了本主题,但是可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式而公开的。
权利要求
1.一种计算机实现的方法,包括接收将对象实例O40)的第一版本存储在对象持久存储O30)中的请求; 响应于存储所述对象实例O40)的第一版本的请求,将对象实例O40)的对象数据 (242)的第一版本存储在所述对象持久存储O30)中;在存储了所述对象数据042)的第一版本后,接收将所述对象实例O40)的第二版本存储在所述对象持久存储O30)中的请求;响应于存储所述对象实例O40)的第二版本的请求,将所述对象数据042)的第二版本存储在所述存储O30)中,而无需删除所述对象数据042)的第一版本;将标识所述对象数据( 的第一版本和所述对象数据( 的第二版本的对象数据版本化信息(252)与所述对象实例O40)的方法版本化信息(254)分开存储;在存储了所述对象数据042)的第二版本后,接收检索所述对象实例O40)的第一版本的请求;以及响应于检索所述对象实例O40)的第一版本的请求,从所述存储O30)中检索所述对象数据042)的第一版本。
2.如权利要求1所述的方法,其特征在于,还包括 接收对所述对象实例的历史的请求;以及响应于对所述历史的请求,返回所述对象实例的数据版本的列表,所列出的所述对象实例的数据版本包括所述第一版本和所述第二版本。
3.如权利要求1所述的方法,其特征在于,还包括将所述对象实例的方法版本化信息与所述对象数据版本化信息分开存储。
4.如权利要求3所述的方法,其特征在于,所述方法版本化信息包括与所述对象实例的对象数据的第一版本相对应的对象方法版本的第一组方法版本化信息,以及与所述对象实例的所述对象数据的第二版本相对应的对象方法版本的第二组方法版本化信息。
5.如权利要求1所述的方法,其特征在于 所述方法还包括存储与所述对象实例的对象数据的第一版本相对应的对象方法版本的第一组版本化 fn息;存储与所述对象实例的所述对象数据的第二版本相对应的对象方法版本的第二组版本化信息;响应于检索所述对象实例的第一版本的请求,使用所述第一组版本化信息来将所述对象数据的第一版本和与所述对象数据的第一版本相对应的所述对象方法版本相匹配;以及所述第一和第二组版本化信息各自包括对所述对象实例的至少一个版本所属的类的版本的指示;所述对象持久存储被配置来存储软件框架内的多个对象类型中的任一个的多个版本, 而无需所述对象类型的类包括启用版本化的代码;以及所述对象持久存储是分布式对象持久存储,并且其中检索所述对象实例的第一版本的请求指示所述对象实例而无需指定存储所述对象实例的物理位置。
6.一种计算机系统,包括分布式对象持久存储030),其被配置来响应于接收存储对象实例Q40)的请求而存储所述对象实例O40)的对象数据042)的多个版本,以及在接收到检索对象实例(MO) 的请求后,响应于所述请求而标识所述对象数据042)的版本并返回所标识的版本;以及一组一个或多个的客户端010),其被配置来请求将对象实例(MO)存储在所述分布式对象持久存储O30)中,以及请求从所述分布式对象持久存储O30)中检索所述对象实例(240)。
7.如权利要求6所述的计算机系统,其特征在于,所述存储被配置来在检索对象实例的请求没有指定对象实例版本时,响应于所述检索对象实例的请求而返回当前对象实例版本。
8.如权利要求6所述的计算机系统,其特征在于,所述存储被配置来在检索对象实例的请求指定了历史对象实例版本时,响应于该请求而返回所指定的历史对象实例版本。
9.如权利要求6所述的计算机系统,其特征在于,所述存储被配置来响应于从所述客户端的一个发送的查询而搜索一个或多个对象实例的数据的多个版本。
10.其上包含计算机可执行指令的一个或多个计算机可读存储介质,所述指令在由至少一个处理器执行时使所述至少一个处理器执行以下动作响应于接收存储一个或多个对象实例O40)的请求,将所述一个或多个对象实例 (240)的对象数据042)的多个版本存储在对象持久存储O30)中;接收请求搜索所述对象数据042)的查询,所述查询标识要被搜索的所述对象数据 (242)的一组版本;根据所述查询来执行对该组版本的搜索;以及返回所述搜索的结果。
全文摘要
本发明涉及对象实例版本化。将对象实例的对象数据的第一版本存储在可以是分布式存储的对象持久存储中。在存储了对象数据的第一版本后,可将对象数据的第二版本存储在该存储中,而无需删除对象数据的第一版本。可将标识对象数据的第一版本和对象数据的第二版本的对象数据版本化信息与对象实例的方法版本化信息分开存储。在存储了对象数据的第二版本后,可接收检索对象实例的第一版本的请求,并且作为响应可从存储中检索对象数据的第一版本。还可搜索对象实例数据的多个版本。
文档编号G06F17/30GK102364464SQ20111029045
公开日2012年2月29日 申请日期2011年9月16日 优先权日2010年9月17日
发明者D·K·林, R·R·帕奇, R·S·乔汉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1