当前位置: 首页 > 专利查询>微软公司专利>正文

一种可扩展序列化引擎的计算系统及方法技术方案

技术编号:2868928 阅读:187 留言:0更新日期:2012-04-11 18:40
将一种类型的对象转换为另一种类型的对象而允许更改或定制转换处理的运行时间操作的方法、系统和计算机程序产品。转换可以在可扩展的序列化引擎之内进行,序列化引擎序列化、反序列化并转换各种类型的对象。序列化引擎的运行时间操作由实现所需定制或扩展的一个或多个扩展例程来更改,而无需替换其他现有的例程。基于对初始对象所识别的类型信息,将该对象转换为允许运行时间修改的中间表示,运行时间修改包括对象名称、对象类型和对象数据的修改。根据扩展例程修改初始对象的中间表示,所述扩展例程更改序列化引擎的运行时间操作,且所述中间表示被转换为结果对象和类型。

【技术实现步骤摘要】

本专利技术涉及对象序列化,更特别地,本专利技术涉及通过更改序列化引擎的运行时间操作的扩展例程转换一种类型的对象为另一种类型的对象,而不必替换所述序列化引擎内的其他现有例程的方法、系统和计算机程序产品。
技术介绍
总的来说,序列化指将单个内存中的对象或内存中的对象的图(嵌套的)转换为字节的线性序列,此序列适合于发送到远程位置、在硬盘上持续存储等等。反之,反序列化取得字节的线性序列并创建对应的单个内存中的对象或内存中的对象的图。序列化和反序列化一起导致初始对象的确切克隆的创建。在现有技术中,序列化代码是作为整体实现写出,而不考虑定制的,除非替换整个实现。缺乏定制或扩展性造成了市场上的不灵活的序列化机制,市场包括开发者和其他感兴趣的一方。对整体实现而言,递增的改进或定制以直接处理特殊的问题通常是不可能的,且可能需要笨拙的修正或简单地排除所需的特定操作。只要在任何事件中采取任何定制,实现所需操作的标准例程通常对开发者是不可访问的,从而需要重新实现,这本质上(且通常是抑制性地)增加了开发所需的定制必须进行的工作。因此,通常仅有序列化代码的开发者能增加新特性到序列化代码中,这使最终用户不能开发他们自己的增强特性或改进现有的特性。虽然对象的确切拷贝是序列化和反序列化的目标,对象类型、名称和数据的运行时间转换在一些情况下是需要的。如上所述,例如,序列化和反序列化可以用于发送对象到远程位置。远程位置可能期望特定的与源对象不同的对象类型、对象数据和对象名称。可以用现有技术写出序列化代码来执行对象转换,但是不能在运行时间增加转换并且转换对所有用户都是相同的,这忽略了不同用户可能有不同需要的可能性。虽然给定的转换可能在特殊的时间对特殊的用户非常重要,转换总体的相关性可能对用户的整体是无意义的,从而不会这样进行开发。现有的序列化代码通常在识别要转换的对象的类型,或基于包含在对象内的数据进行转换时只能提供很少的灵活性。因此,需要基于在运行时间更改序列化和反序列化的定制例程将一种类型的对象转换为另一种类型的对象,而不必重新实现标准例程的方法、系统和计算机程序产品。
技术实现思路
本专利技术涉及转换初始类型的对象为结果类型的对象,并允许更改或定制转换处理的运行时间操作的方法、系统和计算机程序产品。根据本专利技术在下面详述的例子实施例,可扩展的序列化引擎序列化、反序列化并转换各种类型的对象。序列化引擎的运行时间操作由一个或多个实现所需定制或扩展的扩展例程更改。这些扩展例程更改序列化引擎的运行时间操作,而无需替换其他现有的例程。在一个例子实施例中,对由序列化引擎接收以进行处理的初始对象识别类型信息。基于类型信息,初始对象被转换为中间表示,中间表示允许运行时间修改,包括对象名称、对象类型和对象数据的修改。根据一个或多个更改序列化引擎的运行时间操作的扩展例程来修改初始对象的中间表示,且中间表示被转换为结果对象或结果类型。初始对象的中间表示可以包括对象名称、对象类型、对象数据,其中的每一个都可以由扩展例程修改。中间表示也可以由序列化引擎内的一个或多个标准例程修改。中间表示的修改可以基于类型信息内的特殊模式、初始对象内的对象数据、元数据,或上述的组合。当初始对象为内存中的对象时,序列化引擎序列化初始对象来产生结果对象。结果对象可以被格式化为可扩展标记语言(XML)或适合于表示序列化的对象的其他格式。类似地,当结果对象为内存中的对象时,序列化引擎反序列化初始对象来产生结果对象。可以作为反序列化处理的部分实例化并产生结果对象。在某些情况下,初始对象和结果对象均为内存中的对象,或均为序列化的对象,如序列化引擎执行对象转换时。为了减少缓冲的需求,可以延迟中间表示的修改,直到中间表示被转换为结果对象。本专利技术的其他特性和优点将在下面的说明中阐明,且部分将在说明中变得显然,或通过本专利技术的实施例来理解。可以通过在后附的权利要求中特别指出的工具的方法及其组合来实现和获得本专利技术的特性和优点。本专利技术的这些和其他特性通过下述说明和后附的权利要求将变得更加明确,且可以通过本专利技术的实施例来理解,如下面所述。附图说明为了说明获取本专利技术的上述和其他特性及优点的方式,将通过引用在附图中展示的特定实施例来呈现对上面简述的本专利技术更具体的说明。应理解,这些附图仅展示本专利技术的典型实施例,且不应被视为是对本专利技术范围的限制。通过使用附图,将更确切和具体地说明和解释本专利技术。附图包括图1展示符合本专利技术的例子序列化模块和序列化架构;图2至图4在例子序列化、反序列化和类型转换管道的上下文中展示对象转换;图5A至图5B展示符合本专利技术的序列化、反序列化和转换对象的方法的动作和步骤;及图6展示对本专利技术提供适合的操作环境的典型系统。具体实施例方式本专利技术包括转换初始类型的对象为结果类型的对象并允许更改或定制转换处理的运行时间操作的方法、系统和计算机程序产品。本专利技术的实施例可以包括包含各种计算机硬件的一个或多个专用和/或一个或多个通用计算机,如在下面引用图6进行的详细说明。图1展示符合本专利技术的例子序列化模块和序列化架构100(亦称为序列化引擎)。对于对象实例110,序列化模块100产生对应的序列化的可扩展标记语言(XML)对象150。类似地,对XML对象160,序列化模块100产生对应的反序列化的对象实例170。应注意,在此应用中,序列化通常被用作序列化(如,转换单个内存中的对象或内存中的对象的图为适合于发送到远程位置、在硬盘上持续存储等等的字节线性序列)、反序列化(通过字节线性序列创建对应的单个内存中的对象或内存中的对象的图)、转换(转换一种对象为另一种对象)等等的通用术语。下面就是这样的例子,如,序列化模块100序列化、反序列化及转换各种类型的对象。序列化模块100包括一个或多个反映模块120、一个或多个转换模块130及一个或多个产生模块140。在此例子实施例中,序列化模块100转换接收到的内存中的对象实例110为适合于发送到远程位置的XML对象150,并转换接收到的XML对象实例160为内存中的对象实例170。当然,“内存中的”和“XML”仅仅是可以由序列化模块100创建或接收的对象类型的例子。可以在运行时替换序列化模块100内的每个模块(反映模块120、转换模块130和产生模块140)以进行定制的序列化、反序列化或转换。反映模块120负责识别接收的对象实例110和接收的XML对象160的类型信息。所述类型信息可以包括存储的或接收到的元数据,所述元数据和在管理代码环境内所管理的类型关联。另外,类型信息可以从各种源提供给反映模块120,所述源包括编译时间的自动生成、手动生成、标准类型信息等等。转换模块130在不同类型的对象之间进行转换。下面引用图2至4更详细地说明例子转换处理。在不同对象之间的转换可以是任意复杂的且包括中间对象的生成。此复杂度的部分包括基于对象内的数据及与对象关联的类型的模式进行转换。例如,执行哪一种转换取决于特定的对象类型或类型名称、对类型存在特定命名或类型的属性、存在有特定元数据与其关联的属性、和对象关联的对象名称,等等。可以延迟转换直到产生结果对象的以减少或避免缓冲需求,否则缓冲可能是转换一种对象为另一种对象所必须的。产生模块140负责产生由序列化模块100生成的结果对象。在XML对象本文档来自技高网
...

【技术保护点】
在包括能够序列化和反序列化各种类型数据对象的可扩展序列化引擎的计算系统中,转换初始类型的初始对象为结果类型的结果对象的方法,其中所述方法允许运行序列化引擎的运行时间操作由一个或多个扩展例程更改,而无需替换序列化引擎的整体实现,所述方法包括动作:接收初始类型的初始对象由序列化引擎在运行时间进行处理;接收初始类型的初始对象的类型信息;基于所述类型信息,产生初始对象的中间表示,所述中间表示适合于进行运行时间修改;调用一个或多个定制扩展例程来改变初始对象的所述中间表示,从而更改序列化引擎的运行时间操作;及通过初始对象修改的中间表示,产生结果类型的结果对象。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:SH法里斯SK斯里尼瓦杉NH杰沙南达尼YE克里斯腾森EA卡里提迪DM普迪
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1