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

外部序列化和去序列化制造技术

技术编号:8452816 阅读:178 留言:0更新日期:2013-03-21 13:30
本发明专利技术提供了用于外部序列化和去序列化的方法和系统。可基于所发现的与对象图的对象有关的元数据,在相应的对象模型外部将对象图从第一形式变换为第二形式。在一个实例中,变换可对应于序列化和去序列化。

【技术实现步骤摘要】

本专利技术涉及外部序列化和去序列化
技术介绍
序列化和去序列化便于数据存储和传输。序列化是将对象或一组对象(也称为 对象图)转换成有助于在计算机可读介质上存储或在通信网络上传输的格式(例如二进制、XML (可扩展标记语言)、JSON (JavaScript对象符号)......)的进程。去序列化是将序列化的对象或一组对象重构为相同或语义上等效的格式的进程。序列化也称为紧缩或编组, 相反,去序列化也被称为膨胀或解组。编程语言通常提供支持对象序列化和去序列化的机制。例如,可实现接口或可指定自定义属性,等等。因此,对象可被编写成能提供序列化和去序列化。换言之,在设计期间定义对象时,考虑序列化和去序列化。
技术实现思路
下面呈现了简化的
技术实现思路
,以便提供对所公开主题的某些方面的基本概念。本
技术实现思路
不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。简言之,本专利技术涉及外部序列化和去序列化,更一般地涉及外部变换。设计时不支持序列化和去序列化的对象可在外部被序列化和去序列化(例如相对于相应的对象模型)。 换言之,对象模型的对象的序列化和去序列化是在不进行警告或以其它方式影响原始相应类型的情况下完成的。序列化和去序列化函数可从开发者处获得,和/或被自动发现或推断出。可遍历对象图,并基于对象元数据选择和(例如递归地)执行适当的序列化函数。随后,可基于序列化的对象元数据来定位去序列化函数,并应用该去序列化函数以将序列化的数据去序列化。根据一个特定方面,序列化可以是可配置的,以允许各种程度的细节被序列化并随后被去序列化。为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本专利技术的其他优点和新颖特征将变得显而易见。附图说明图I是外部序列化/去序列化系统的框图。图2是代表性的序列化组件的框图。图3示出用于循环检测的上下文的使用。图4是代表性的去序列化组件的框图。图5示出示例性的序列化和去序列化场景。图6是序列化的方法的流程图。图7是序列化的方法的流程图。图8是便于序列化和去序列化的方法的流程图。图9是去序列化的方法的流程图。图10是示出用于本公开各方面的合适操作环境的示意性框图。具体实施方式以下细节一般涉及数据变换,包括但不限于序列化和去序列化。常规地,对象图的序列化假设封闭世界模型,在该模型中,对象已被编写成使得可提供序列化和去序列化。这可包括使用自定义属性或实现接口,等等。换言之,开发者作出有意识的决定,以允许默认的不可序列化的类型或对象的实例可被序列化。如果想要对设计时未考虑序列化(或者换言之,缺少如通常需要的对于对象模型的序列化和去序列化的支持)的类型进行序列化和去序列化,则会产生问题。为了解决此问题,可采用开放世界模型,相对于对象模型,开放世界模型执行外部序列化。换言之,对象模型的对象的序列化是在不进行警告或以其它方式影响原始相应类型的情况下完成的。例如,可发现关于对象的元数据,并利用元数据来产生和/或选择对该对象进行序列化或去序列化的函数。为了便于清楚和理解,在序列化和去序列化的情境下描述了本公开的诸方面。然而,本主题不限于此。更一般地,诸方面涉及利用函数和反函数的类型之间的变换。这意味着类型“A”可被转换成类型“B”,并从类型“B”转换回类型“A”。更具体地,整数可被变换成串,并从串变换回整数。这就像将第一类型植入第二类型,并允许第一类型被恢复。一种使用情况是序列化和去序列化,但可以存在其它使用情况,包括出于兼容性目的在对象模型之间的转换,等等。现在参考附图更详细地描述本专利技术的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等价物和替换的方案。最初参考图1,示出了外部序列化/去序列化系统100。系统100包括配置成将对象进行序列化的序列化组件110和配置成将对象进行去序列化的去序列化组件120。更具体地,序列化组件110被配置成接收、检索、或以其他方式获得或获取对象图112 (也称为, 原始对象图),并在函数结构140的辅助下将对象图112转换成序列化数据130,对象图112 包括多个对象和它们的关系。随后,去序列化组件120可接收、检索或以其它方式获得或获取已序列化的数据130,并在函数结构140的辅助下将其变换成去序列化的对象图122。除了提供常规的序列化功能,序列化组件110被扩展以支持对象的外部序列化, 其中对象类型在设计时未考虑序列化。在该情况下,类型可超出序列化方的控制,因此,在事后改变类型以支持序列化会是不可能的。如将在下文进一步详细描述地,序列化组件110 可发现与对象有关的元数据(例如,属性),并至少部分地基于元数据来产生和/或选择序列化函数。更具体地,序列化组件Iio可相对于函数结构140来产生和/或选择序列化函数, 并应用所选的函数以将对象转换成序列化形式。函数结构140存储用于序列化和去序列化的函数和反函数。尽管不限于此,但函数结构可被具体化为规则表以及相关的序列化和去序列化函数,如以下表I中提供 权利要求1.一种外部变换的方法,包括 采用至少一个处理器(1020),所述处理器被配置来执行存储在存储器(1030)中的计算机可执行指令以执行以下动作 基于所发现的与构成对象图的一个或多个对象有关的元数据,在相应的对象模型外部将对象图从第一形式变换为第二形式。2.如权利要求I所述的方法,其特征在于,还包括利用与对象类型相关联的函数来变换所述一个或多个对象中的一个。3.如权利要求2所述的方法,其特征在于,还包括从往返函数来确定所述函数。4.如权利要求2所述的方法,其特征在于,还包括基于反映信息来确定所述函数。5.如权利要求2所述的方法,其特征在于,还包括基于压缩函数来选择所述函数。6.—种序列化系统(100),包括 耦合到存储器(1030)的处理器(1020),所述处理器(1020)被配置来执行存储在所述存储器(1030)中的以下计算机可执行组件 第一组件(110),被配置成基于所发现的与对象图的一个或多个对象有关的元数据,在相应的对象模型外部将所述对象图序列化。7.如权利要求6所述的系统,其特征在于,还包括第二组件,被配置成利用对象类型对所述一个或多个对象中的至少一个加标签。8.如权利要求6所述的系统,其特征在于,所述第一组件进一步被配置成基于对象类型来调用序列化函数。9.如权利要求6所述的系统,其特征在于,还包括第二组件,被配置成对所述元数据的至少一部分进行序列化。10.如权利要求6所述的系统,其特征在于,所述对象图是查询表达式的表示。全文摘要本专利技术提供了用于外部序列化和去序列化的方法和系统。可基于所发现的与对象图的对象有关的元数据,在相应的对象模型外部将对象图从第一形式变换为第二形式。在一个实例中,变换可对应于序列化和去序列化。文档编号G06F9/44GK102981841SQ201210442本文档来自技高网...

【技术保护点】
一种外部变换的方法,包括:采用至少一个处理器(1020),所述处理器被配置来执行存储在存储器(1030)中的计算机可执行指令以执行以下动作:基于所发现的与构成对象图的一个或多个对象有关的元数据,在相应的对象模型外部将对象图从第一形式变换为第二形式。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:B·德斯梅特H·J·M·梅杰
申请(专利权)人:微软公司
类型:发明
国别省市:

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

1