CN1534456B - 一种可扩展序列化引擎的计算系统及方法 - Google Patents

一种可扩展序列化引擎的计算系统及方法 Download PDF

Info

Publication number
CN1534456B
CN1534456B CN2004100323235A CN200410032323A CN1534456B CN 1534456 B CN1534456 B CN 1534456B CN 2004100323235 A CN2004100323235 A CN 2004100323235A CN 200410032323 A CN200410032323 A CN 200410032323A CN 1534456 B CN1534456 B CN 1534456B
Authority
CN
China
Prior art keywords
intermediate representation
type
initial
serializing
computing system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CN2004100323235A
Other languages
English (en)
Other versions
CN1534456A (zh
Inventor
S·H·法里斯
S·K·斯里尼瓦杉
N·H·杰沙南达尼
Y·E·克里斯腾森
E·A·卡里提迪
D·M·普迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1534456A publication Critical patent/CN1534456A/zh
Application granted granted Critical
Publication of CN1534456B publication Critical patent/CN1534456B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Abstract

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

Description

一种可扩展序列化引擎的计算系统及方法
技术领域
本发明涉及对象序列化,更特别地,本发明涉及通过更改序列化引擎的运行时间操作的扩展例程转换一种类型的对象为另一种类型的对象,而不必替换所述序列化引擎内的其他现有例程的方法、系统和计算机程序产品。
背景技术
总的来说,序列化指将单个内存中的对象或内存中的对象的图(嵌套的)转换为字节的线性序列,此序列适合于发送到远程位置、在硬盘上持续存储等等。反之,反序列化取得字节的线性序列并创建对应的单个内存中的对象或内存中的对象的图。序列化和反序列化一起导致初始对象的确切克隆的创建。
在现有技术中,序列化代码是作为整体实现写出,而不考虑定制的,除非替换整个实现。缺乏定制或扩展性造成了市场上的不灵活的序列化机制,市场包括开发者和其他感兴趣的一方。对整体实现而言,递增的改进或定制以直接处理特殊的问题通常是不可能的,且可能需要笨拙的修正或简单地排除所需的特定操作。只要在任何事件中采取任何定制,实现所需操作的标准例程通常对开发者是不可访问的,从而需要重新实现,这本质上(且通常是抑制性地)增加了开发所需的定制必须进行的工作。因此,通常仅有序列化代码的开发者能增加新特性到序列化代码中,这使最终用户不能开发他们自己的增强特性或改进现有的特性。
虽然对象的确切拷贝是序列化和反序列化的目标,对象类型、名称和数据的运行时间转换在一些情况下是需要的。如上所述,例如,序列化和反序列化可以用于发送对象到远程位置。远程位置可能期望特定的与源对象不同的对象类型、对象数据和对象名称。可以用现有技术写出序列化代码来执行对象转换,但是不能在运行时间增加转换并且转换对所有用户都是相同的,这忽略了不同用户可能有不同需要的可能性。虽然给定的转换可能在特殊的时间对特殊的用户非常重要,转换总体的相关性可能对用户的整体是无意义的,从而不会这样进行开发。
现有的序列化代码通常在识别要转换的对象的类型,或基于包含在对象内的数据进行转换时只能提供很少的灵活性。因此,需要基于在运行时间更改序列化和反序列化的定制例程将一种类型的对象转换为另一种类型的对象,而不必重新实现标准例程的方法、系统和计算机程序产品。
发明内容
本发明涉及转换初始类型的对象为结果类型的对象,并允许更改或定制转换处理的运行时间操作的方法、系统和计算机程序产品。根据本发明在下面详述的例子实施例,可扩展的序列化引擎序列化、反序列化并转换各种类型的对象。序列化引擎的运行时间操作由一个或多个实现所需定制或扩展的扩展例程更改。这些扩展例程更改序列化引擎的运行时间操作,而无需替换其他现有的例程。
在一个例子实施例中,对由序列化引擎接收以进行处理的初始对象识别类型信息。基于类型信息,初始对象被转换为中间表示,中间表示允许运行时间修改,包括对象名称、对象类型和对象数据的修改。根据一个或多个更改序列化引擎的运行时间操作的扩展例程来修改初始对象的中间表示,且中间表示被转换为结果对象或结果类型。
初始对象的中间表示可以包括对象名称、对象类型、对象数据,其中的每一个都可以由扩展例程修改。中间表示也可以由序列化引擎内的一个或多个标准例程修改。中间表示的修改可以基于类型信息内的特殊模式、初始对象内的对象数据、元数据,或上述的组合。
当初始对象为内存中的对象时,序列化引擎序列化初始对象来产生结果对象。结果对象可以被格式化为可扩展标记语言(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对象150的情况下,产生模块创建该对象-它对该对象产生适当的XML-并可以写对象到流中。在对象实例170的情况下,产生模块140实例化并产生该对象。
如上所示,序列化模块100也被称为序列化引擎。如图1所示,序列化引擎由几个模块的有序集合组成。这些模块一起负责所有的操作。单独的模块被称为类型桥,因为,如下面更详细的说明,模块从一种类型转换到另一种类型(或不同类型之间的桥)。类型桥允许在运行时间进行类型和实例转换和/或追踪有关被序列化、反序列化或转换的对象的信息。引用图2至图4,类型桥的有序集合被称为类型桥管道,并通常对应于转换模块130的有序集合。对每个由序列化引擎执行的操作,可以存在单独的类型桥管道。有序列化管道(如图2)、反序列化管道(如图3)、转换管道(如图4)、对象拷贝管道等等。在单独讨论图2至图4的每一个之前,在下面展示总地适用于所有三个图的信息。
对图2至图4中所示的例子管道,负责对象的序列化、反序列化和转换的代码(一个或多个模块)是作为多个预定义的类型桥来实现的。这些模块被放置在适当的管道中并在运行时间使用。(图1中的虚线用于表示在各种类型桥管道中使用的可用类型桥模块)。图1中所示的例子序列化引擎的公用应用编程接口(API)的大部分仅是这个管道预定义集合的包装。这展示了序列化引擎如何可扩展-序列化引擎是简单的抽象管道集合。特定逻辑的实际实现位于可以在任何时候被替换的可嵌入模块中。
对图2至图4中所示的例子类型桥管道,给定类型的类型桥能够转换三种类型的对象之一:初始类型对象、中间类型对象和结果类型对象。在图4中,初始类型对象是管理的代码对象且结果类型对象是基于万维网联盟(W3C)Infoset标准的XML对象。在所有三个图中展示的中间类型对象或中间表示是序列化引擎中的结构并且,如下面更详细的说明,表示可扩展点。中间表示是基于不定类型的不定对象。这样,通过用不定类型存储有类型的数据并通过对该类型定义的行为操作存储的数据,不定类型定义行为和有类型的数据存储。
图2展示序列化有初始类型或格式210的内存中的初始对象240的例子类型桥200。(如在说明书和权利要求中所用,术语“类型”应被广义地解释并包括任何对象类型或格式)。使用标准例程,初始对象240被转换为有中间类型或格式220的中间表示260A。如下面更详细的说明,此中间类型是不定的,允许对象类型和对象数据两者被改变。然而,中间格式220和初始格式210也可以是相同、密切相关、有一些不同、完全不同等等。
定制扩展例程260转换初始对象240的中间表示260A为中间表示260B。此转换可以包括改变对象类型、对象名称、对象数据等等。定制扩展例程260一般地表示序列化引擎的运行时间扩展,特别地表示类型桥管道200。注意使用定制扩展例程260并不需要重新实现标准例程250,通常现有的序列化实现的情况下重新实现标准例程是必须的。
标准例程270转换中间表示260B为有结果类型或格式230的结果对象280。结果对象280适合于发送到远程位置,进行持续存储等等。因此,结果对象280的结果格式230包括广泛的数据类型。在此,如在本说明的其他部分中,对象类型、格式和表示为广义的术语,包括对象的总体类型和格式及可以包含在该对象内的类型、格式、名称和数据。
图3展示反序列化有初始类型或格式330的对象340的例子类型桥300。类似于上面的图2,标准例程350转换初始对象340为有中间类型或格式320的中间表示360A。定制扩展例程360转换中间表示360A为中间表示360B。注意,中间类型320表示一个或多个中间类型。因此,中间表示360A和中间表示360B可以为不同的类型,但仍然适当地被称为中间类型,尤其是相对于初始类型330和结果类型或格式310。
标准例程370转换中间表示360B为有结果类型310的结果对象380。因为类型桥管道360是用于反序列化的,结果对象380为实例化并产生的内存中的对象。如下面更详细的说明,类型桥300和实例化并产生对象实例的代码关联。此代码可以被称为实例工厂或书写器,或写工厂,并一般对应于图1中所示的产生模块140。
图4展示转换初始对象400为结果对象480的例子类型桥管道400。图4中的单个类型桥能够转换三种不同的对象类型或格式之一:管理的代码/CLR格式化的对象410、中间/Flex格式化的对象420和Infoset/XML格式化的对象430。CLR表示通用语言运行时间并且是Microsoft的管理的执行环境。在其他特性中,CLR的优点包括跨语言集成、跨语言出错处理等等。语言编译器产生说明类型、成员和引用的元数据。元数据和代码一起被存储在通用语言运行时间可移植执行文件中。当然,CLR只是管理的代码类型的一个例子。如图4所示,两个对象都可以为内存中的对象(如CLR格式化的对象)或,作为另外的选择,两者都可以为序列化的对象(如,Infoset格式化的对象)。换句话说,初始对象和结果对象两者可以是同一类型的。
CLR对象410是包含数据和行为的CLR类型的实例,虽然只有数据和序列化目的相关。如上所示,根据由数据节点的预定义集合用特定语法组成的树结构的W3C标准来格式化Infoset对象或表示430。Flex对象420是序列化引擎内的结构并表示该序列化器的可扩展点。
Flex对象为基于不定类型的不定对象。不定类型也称为Flex类型。在图4中展示的例子类型桥管道400中,Flex类型和它对应的CLR类型起同样的作用:定义行为和类型数据存储。类似地,Flex对象和CLR对象起通用的作用:存储有类型的数据并通过对该类型定义的行为操作此数据。使用Flex类型的原因是CLR类型不是不定的。
对图4中所示的例子类型桥管道,对可以被序列化的类型进行特定限制以支持简单性和可扩展性。这些限制减少了序列化器需要识别的不同模式和组合的数量以序列化和反序列化给定的类型。在这一点,序列化引擎只需要知道如何序列化其类型符合所谓的核心模型的CLR对象。符合核心模型的类型必须将它们的数据作为属性(或字段)暴露或实现特殊的接口(该接口定义明确的读和写方法)。另外,这些类型需要提供公用的缺省构造函数。不符合核心模型的类型不能被序列化。
Flex类型和Flex对象被用于改变给定CLR对象的形状(成员、接口等)以符合所述核心模型。对给定的CLR对象,Flex类型可以被构建为除了该实例的CLR类型还暴露不同的成员集合和类型信息。基于Flex类型的Flex对象可以被实例化为代理特定的对CLR对象自身的调用。Flex对象也可以对CLR对象内的数据执行可选的转换,或者在代理前,或者在代理后。因此,可以用各种方法暴露CLR对象内的数据,包括符合核心模型的方法。因此,类型桥可以开始于对象不符合核心模型的类型并产生符合核心模型的对象类型。
类型桥可以用各种方法转换CLR对象、Flex对象和Infoset表示。任何给定的类型桥都有所操作的输入类型和所产生或生成的输出类型。此输出被传递给管道中的下一个类型桥。对例子类型桥管道400,允许进行下面的转换:
输入类型    输出类型   说明
CLR         CLR        转换CLR对象为新的CLR对象
CLR         Flex       转换CLR对象为Flex对象
CLR         Infoset    转换CLR对象为Infoset对象
Flex        Flex       转换Flex对象为新的Flex对象
Flex        CLR        转换Flex对象为CLR对象
Flex        Infoset    转换Flex对象为Infoset对象
Infoset     Infoset    转换Infoset对象为新的Infoset对象
Infoset     Flex       转换Infoset对象为Flex对象
Infoset     CLR        转换Infoset对象为CLR对象
创建类型桥的不同分类以提供序列化引擎的基本操作。(虽然图2和3引用通用的类型,用下面在图4中展示的特定的类型引用这些图以提供进一步的上下文。
1.序列化转换CLR对象为Infoset对象或表示。为了执行此操作,存在包括一个CLR到Flex类型桥(如标准例程250)、任何数量的Flex到Flex类型桥,和一个Flex到Infoset类型桥(如标准例程270)的类型桥管道(如图2中所示)。
2.反序列化转换Infoset表示为CLR对象。为了执行此操作,存在包括一个Infoset到Flex类型桥(如标准例程350)、任何数量的Flex到Flex类型桥,和一个Flex到CLR类型桥(如标准例程370)的类型桥管道(如图2中所示)。
3.对象拷贝被用来创建CLR对象的深层拷贝。为了执行此操作,存在包括CLR到CLR类型桥的类型桥管道。
4.对象转换(图4)创建单个或多个CLR对象(初始对象440)的深层拷贝(结果对象480),而对实例数据(中间表示460A和460B)执行可选的转换(标准或定制扩展例程)。为了执行此操作,存在包括一个CLR到Flex类型桥(标准或定制例程450)、一个或多个可选的执行转换的Flex到Flex类型桥(标准或定制扩展例程460),和一个Flex到CLR类型桥(标准或定制例程470)的类型桥管道。
5.Infoset转换创建Infoset的拷贝并可选地对其进行转换。类似于对象拷贝,为了执行此操作,存在包括Infoset到Infoset类型桥的类型桥管道。
最后三个选项由于它们的实现方式而值得注意。尽管其他实现缓冲对象或Infoset数据,本发明的实施例可能延迟转换来避免或减少缓冲的需求。因此,可以显著地改善性能和资源管理。
为了支持上述操作,序列化引擎提供执行适当转换的常用或基本类型桥。在图4中,标准或定制例程450、460和470的任何一个都可以为常用类型桥或定制的替换。使用可扩展的配置机制,适当的类型桥在运行时间被识别出并装载到管道中。序列化引擎使用这些常用管道来执行请求的操作。然而,常用类型桥可以在任何时候被替换,因为引擎使用抽象类型桥的概念,而非具体的常用实现。在一个例子实施例中,管道简单地包括用于该管道的类型桥的列表-改变该列表改变该管道。对此例子实施例,一旦对一个对象调用特殊的类型桥,就不对该对象调用其他类型桥。
注意在例子实施例中,CLR 410、Flex 420和Infoset 430对应于如图2所示的序列化的初始格式210、中间格式220和结果格式230,并对应于如图3所示的反序列化的结果类型310、中间类型320和初始类型330。Flex对象是CLR和Infoset两者之间的中间类型。在此例子实施例中,类型桥不能进行从CLR到Infoset或相反的直接转换。和其他特性一起,这帮助简化例子序列化引擎。虽然序列化引擎的基本功能或操作是由常用类型桥定义的,有开发者可能需要的很多附加特性(如支持遗留编程模型)。本可以定义常用类型桥来实现这些特性,然而,有几个常用Flex到Flex类型桥来满足此目的。此方法确保常用类型桥是简单和可扩展的。因此,不同的开发者可以对标准特性进行修改并提供他们自己的新特性。
对此例子实施例,考虑称为Person、有两个属性FirstName和LastName的CLR类型的序列化处理。为了序列化此类型的实例(参见图2),需要有常用CLR到Flex和Flex到Infoset类型桥的管道。序列化引擎向CLR到Flex类型桥传递Person实例。此类型桥返回基于Person实例的新的Flex对象实例并代理Person实例。然后Flex对象被传递给Flex到Infoset类型桥。
Flex到Infoset类型桥负责转换或变换Flex对象为Infoset表示。在转换前,常用Flex到Infoset类型桥确定映射Flex对象的结构到Infoset的方式。此例中的常用实现使用大纲语言并用以该语言定义的结构定义映射。由于类型桥是可替换的,可以引入包括支持新大纲语言的新映射机制,它表示序列化引擎内的另一个可扩展点。一旦映射处理完成,Flex对象被转换为Infoset表示,Infoset表示被写入流。
如上简述,序列化引擎内的类型桥被连接到书写器工厂。书写器工厂负责创建能够写数据的资源。虽然该资源可以写数据到任何目标,最常见的目标是数据流(在用于的序列化之后)和CLR对象(在反序列化之后)。此例子实施例的常用书写器工厂返回写到用户提供的数据流的资源。此工厂生成的资源可以用任何它所需的格式写数据流。这样,并不限于XML序列化格式,这使书写器工厂可被替换并带来序列化引擎内的又一个可扩展点。
在此例子实施例中的Infoset表示的反序列化(例如,参考图3)包括包含常用Infoset到Flex和Flex到CLR类型桥的管道。序列化引擎传递用户提供的表示源Infoset和CLR类型(Person)流,CLR类型被反序列化到第一种类型桥(Infoset到Flex)。此类型桥基于代理流的Person类型创建新的Flex对象实例。结果Flex对象被传递给Flex到CLR类型桥,此类型桥用来自Flex对象的数据产生Person的实例(该Flex对象实际上在流中,因为Flex是代理)。如对序列化那样,反序列化管道以书写器工厂结束。反序列化的常用书写工厂负责创建被反序列化的CLR类型的实例。
除了序列化和反序列化,可能需要转换Person类型。如上所示,Person类型的形状包括两个属性:FirstName和LastName。例如,假设使用Person的这个定义的应用和使用不同的Person定义的另一个应用(如有一个属性Fullname的Person)交互。虽然一种选择是让两个应用使用同样的Person类型,但这并不总是可能的(也许两个应用都已被写出)。
根据所述的例子实施例,可以创建转换Person实例在一个应用中的形状为另一个应用中所需的形状的类型桥。为了进行转换(见图2),需要构建新的Flex到Flex类型桥(如定制扩展例程260)并将其放置在序列化管道中的常用CLR到Flex类型桥(如标准例程250)之后。在此序列化处理中,向这个类型桥传递代理Person实例的Flex对象。此类型桥构建有不同的形状(单个FullName属性)新的Flex类型。基于此Flex类型,创建新的Flex对象,它连接初始Flex对象(它也代理Person实例)的FirstName和LastName属性。这个Flex对象被传递给常用Flex到Infoset类型桥(如,标准例程270),该类型桥序列化一个属性而不是两个。值得注意连接实际上没有被执行,直到Flex到Infoset类型桥请求新的FullName属性的值。因此,转换被延迟,直到创建Infoset或结果对象。
因此,符合本发明的序列化引擎可以提供在系统和类型之间进行转换的可扩展架构,这包括:支持可嵌入的类型和数据转换、支持不定的类型和对象、支持可嵌入的大纲类型系统、支持可嵌入的数据格式等等。
也可以用包括功能步骤和/或非功能动作的方法来说明本发明。下面是执行以用于实现本发明的动作和步骤的说明。通常功能步骤以所实现的结果说明本发明,而非功能动作说明实现特定结果的特定动作。虽然功能步骤和非功能步骤可以用特殊的顺序来说明或请求,本发明并不限于任何动作和/或步骤的特殊顺序或组合。
图5A至图5B展示符合本发明的序列化和反序列化对象的方法的例子动作和步骤,它可以包括接收由序列化引擎在运行时间处理的初始类型的初始对象的动作(512)。识别初始对象的类型信息的步骤(520)可以包括接收类型信息的动作(522)。类型信息可以作为和管理的代码关联的元数据提供。基于初始类型信息转换初始对象为中间表示的步骤(530)可以包括基于类型信息产生(未标出)中间表示和调用(532)一个或多个定制扩展例程并调用(534)一个或多个标准例程来修改中间表示的动作。一个或多个扩展例程更改序列化引擎的运行时间操作。
应注意中间表示可以包括对象名称、对象类型和/或对象数据。虽然未示出,修改中间表示的步骤(540)也可以包括调用(未标出)一个或多个定制扩展例程和调用(未标出)一个或多个标准例程来修改中间表示的动作。修改中间表示的步骤(540)可以进一步包括更改对象名称、类型和/或数据的动作(540)。延迟修改的步骤(550)可以包括指定如何修改中间表示,而无需实际上修改中间表示的动作(552)延迟有助于减少和在内存中修改中间结果关联的缓冲和处理需求。
转换初始对象的中间表示为有结果类型或格式的结果对象的步骤(560)可以包括下面的动作。当序列化时(563),步骤可以包括创建或产生结果对象的动作(565)。在一个例子实施例中,如上所述结果对象被格式化为XML以进行传输。创建或产生结果对象(565)从而可以包括产生适当的XML并将结果对象写入流。另外,结果对象可以被格式化以持续存储在硬盘上或格式化为任何其他适合于表示序列化的初始对象的格式。当反序列化时(564),步骤可以包括实例化(566)和创建(568)结果对象的动作。在转换的步骤中(560),调用定制扩展和标准例程进行任何延迟的修改,延迟的修改指示应如何进行更改但实际上不做出更改。
本发明范围内的实施例也包括承载或包含计算机可执行指令或存储于其上的数据结构的计算机可读媒体。这样的计算机可读媒体可以为能由通用或专用计算机访问的任何可用媒体。作为例子,而非限制,这样的计算机可读媒体包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备,或可以用于承载或存储形式为计算机可执行指令或数据结构并且可以由通用或专用计算机访问的所需程序代码方法的任何其他媒体。当通过网络或其他通讯连接传输(有线、无线或两者的组合)或提供信息到计算机时,计算机正确地视该连接为计算机可读媒体。因此,任何这样的连接都被正确地称为计算机可读媒体。上述的组合也可以包括在计算机可读媒体的范围内。计算机可执行指令包括,例如,使通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。
图6和下面的说明旨在提供对在其中可以实现本发明的适合的计算环境的简短的总体说明。虽然不是必须的,本发明可以在计算机可执行指令的一般性上下文中进行说明,如由网络环境中的计算机执行的程序模块。通常,程序模块包括执行特殊任务或实现特殊抽象数据类型的例程、程序、对象、组件、数据结构等等。计算机可执行指令、关联的数据结构及程序模块代表执行在此揭示的方法的步骤的程序代码方法的例子。这样的可执行指令的特殊序列或关联的数据结构代表对应的实现以这样的步骤说明的功能的动作的例子。
熟悉技术的人应理解,本发明可以实现在由多种计算机系统配置的网络计算环境中,多种计算机系统配置包括个人计算机、手持设备、多处理器系统、基于微处理器的或可编程的消费者电子设备、网络PC、小型机、大型机等等。本发明也可以实现在分布式计算环境中,其中任务由本地和通过通讯网络(通过有线连接、无线连接、或有线或连接的组合)连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备。
参考图6,用于实现本发明的例子系统包括形式为常规计算机620的通用计算设备,它包括处理单元621、系统存储器622和将包括系统存储器622的各种系统组件连接到处理单元的系统总线623。系统总线可以为几种类型的总线结构之一,包括存储器总线或存储器控制器、外围总线和使用多种总线结构之一的本地总线。系统存储器包括只读存储器(ROM)624和随即访问存储器(RAM)625。基本输入/输出系统(BIOS)626可以被存储在ROM 624内,它包含帮助在计算机620内的元件之间传输信息,如在启动时,的基本例程。
计算机620也可以包括读写磁硬盘639的磁硬盘驱动器627、读写可移动磁盘629的磁盘驱动器628和读或写如CD-ROM或其他光学媒体这样的可移动光盘631的光盘驱动器630。磁硬盘驱动器627、磁盘驱动器628和光盘驱动器630分别通过硬盘驱动器接口632、磁盘驱动器接口633和光盘驱动器接口634连接到系统总线623。驱动器及与其关联的计算机可读媒体对计算机620提供计算机可执行指令、数据结构、程序模块和其他数据的非易失存储。虽然在此所述的典型环境使用磁硬盘639、可移动磁盘629和可移动光盘631,可以使用其他类型的计算机可读媒体来存储数据,包括盒式磁带、闪存卡、数字多用途盘、伯努利盒、RAM、ROM等等。
程序代码方法包括可以被存储在硬盘639、磁盘629、光盘631、ROM 624或RAM 625上的一个或多个程序模块,包括操作系统635、一个或多个应用程序636、其他程序模块637和程序数据638。用户可以通过键盘640、定点设备642或其他输入设备(未标出),如麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等来输入命令和信息到计算机620中。这些和其他输入设备通常通过连接到系统总线623的串行口接口656连接到处理单元621。另外,输入接口可以通过其他接口连接,如并行口、游戏口或通用串行总线(USB)。监视器847或另一个显示设备也通过接口,如视频接口68连接到系统总线623。除了监视器,个人计算机通常包括其他外围输出设备(未标出),如扬声器和打印机。
计算机620可以使用到一个或多个远程计算机,如远程计算机649a和649b的逻辑连接工作在联网环境中。远程计算机649a和649b的每一个都可以为个人计算机、服务器、路由器、网络PC、对等设备或其他普通网络节点,并通常包括上述相对于计算机620说明的很多或所有元件,虽然在图6中只展示了存储器存储设备650a和650b及与其关联的应用程序636a和636b。在图6中所示的逻辑连接包括局域网(LAN)651和广域网(WAN)652,在此作为例子展示,而非限制。这样的联网环境在办公室范围或企业范围的计算机网络、企业内部互联网和因特网中是很常见的。
当用在LAN联网环境中时,计算机620通过网络接口或适配器653连接到本地网络651。当用在WAN联网环境中时,计算机620可以包括调制解调器654、无线连接或在广域网652,如因特网上建立通讯的其他方法。调制解调器654可以为内置的或外置的,通过串行口接口656连接到系统总线623。在联网的环境中,相对于计算机620说明的程序模块,或其部分,可以被存储在远程存储器存储设备。应理解,所示的网络连接是示范性的且可以使用通过广域网652建立通讯的其他方法。
本发明可以用其他具体形式实现而不偏离其精神或本质特征。所述的实施例应被视为在所有的方面都是说明性的,而不是限制性的。因此,本发明的范围由后附的权利要求而非上述的说明来指明。落在权利要求的等价意义和范围内的所有的更改包括在本发明的范围之内。

Claims (43)

1.在包括能够序列化和反序列化各种类型数据对象的可扩展序列化引擎的计算系统中,转换初始类型的初始对象为结果类型的结果对象的方法,其中所述方法允许运行序列化引擎的运行时间操作由一个或多个扩展例程更改,而无需替换序列化引擎的整体实现,所述方法包括动作:
接收初始类型的初始对象由序列化引擎在运行时间进行处理;
接收初始类型的初始对象的类型信息;
基于所述类型信息,产生初始对象的中间表示,所述中间表示适合于进行运行时间修改;
调用一个或多个定制扩展例程来改变初始对象的所述中间表示,从而更改序列化引擎的运行时间操作;及
通过初始对象修改的中间表示,产生结果类型的结果对象。
2.如权利要求1所述的方法,其特征在于,所述中间表示包括初始对象的整体类型,和包含在初始对象内的一个或多个对象的对象名称、对象类型和对象数据。
3.如权利要求2所述的方法,其特征在于,进一步包括改变整体对象类型和包含在初始对象内的一个或多个对象的对象名称、对象类型和对象数据中的至少一个的动作。
4.如权利要求1所述的方法,其特征在于,进一步包括调用一个或多个标准例程来修改初始对象的中间表示的动作。
5.如权利要求1所述的方法,其特征在于,所述修改初始对象的中间表示基于所述类型信息内的特殊模式。
6.如权利要求1所述的方法,其特征在于,所述修改初始对象的中间表示基于初始对象内的对象数据。
7.如权利要求1所述的方法,其特征在于,所述序列化引擎是分布式应用的消息系统的部分,所述应用程序发送和接收一个或多个消息,且所述初始对象和结果对象表示消息的至少部分。
8.如权利要求1所述的方法,其特征在于,所述初始对象包括内存中的对象,及所述序列化引擎序列化用于初始对象来产生结果对象。
9.如权利要求1所述的方法,其特征在于,所述结果对象包括基于初始对象进行实例化和产生的内存中的对象,及所述序列化引擎用于反序列化初始对象来产生结果对象。
10.如权利要求1所述的方法,其特征在于,调用所述一个或多个定制扩展例程来改变所述中间表示,所述定制扩展例程指定如何改变中间表示,而无需实际上改变中间表示,以使得中间表示中的改变得到延迟,直到产生结果对象,以减少缓冲的需求。
11.一种包括能够序列化和反序列化各种类型数据对象的可扩展序列化引擎的计算系统,所述计算系统能转换初始类型的初始对象为结果类型的结果对象,其中所述计算系统允许序列化引擎的运行时间操作由一个或多个扩展例程更改,而无需替换序列化引擎的整体实现,所述计算系统包括:
用于接收初始类型的初始对象由序列化引擎在运行时间进行处理的装置;
用于接收初始类型的初始对象的类型信息的装置;
用于基于所述类型信息,产生初始对象的中间表示的装置,所述中间表示适合于进行运行时间修改;
用于调用一个或多个定制扩展例程来改变初始对象的所述中间表示,从而更改序列化引擎的运行时间操作的装置;及
用于通过初始对象修改的中间表示,产生结果类型的结果对象的装置。
12.如权利要求11所述的计算系统,其特征在于,所述中间表示包括初始对象的整体类型,和包含在初始对象内的一个或多个对象的对象名称、对象类型和对象数据。
13.如权利要求12所述的计算系统,其特征在于,所述计算系统进一步包括用于改变整体对象类型和包含在初始对象内的一个或多个对象的对象名称、对象类型和对象数据中的至少一个的装置。
14.如权利要求11所述的计算系统,其特征在于,所述计算系统进一步包括用于调用一个或多个可替换的标准例程来修改初始对象的中间表示的装置。
15.如权利要求11所述的计算系统,其特征在于,所述修改初始对象的中间表示基于所述类型信息内的特殊模式、元数据和初始对象内的对象数据之一。
16.如权利要求11所述的计算系统,其特征在于,其中如果初始对象包括内存中的对象,则所述序列化引擎用于序列化初始对象来产生结果对象,且如果结果对象包括基于初始对象进行实例化并产生的内存中的对象,则所述序列化引擎用于反序列化初始对象来产生结果对象。
17.如权利要求11所述的计算系统,其特征在于,所述初始对象和结果对象两者均为内存中的对象。
18.如权利要求11所述的计算系统,其特征在于,调用所述一个或多个定制扩展例程来改变所述中间表示,所述定制扩展例程指定如何改变中间表示,而无需实际上改变中间表示,以使得中间表示中的改变得到延迟,直到产生结果对象,以减少缓冲的需求。
19.在包括序列化和反序列化各种类型数据对象的可扩展序列化引擎的计算系统中,转换初始类型的初始对象为结果类型的结果对象的方法,其中所述方法允许运行序列化引擎的运行时间操作由一个或多个扩展例程更改,而无需替换序列化引擎的一个或多个其他现有例程,所述方法包括步骤:
识别接收用于由序列化引擎在运行时间进行处理的初始类型的初始对象的类型信息;
基于所述类型信息,转换初始对象为初始对象的中间表示,所述中间表示适合于运行时间修改;
根据一个或多个扩展例程修改初始对象的中间表示,从而更改序列化引擎的运行时间操作;及
转换初始对象的中间表示为结果类型的结果对象。
20.如权利要求19所述的方法,其特征在于,所述初始对象的中间表示至少包括对象名称、对象类型和对象数据中的一个。
21.如权利要求20所述的方法,其特征在于,所述根据一个或多个扩展例程修改初始对象的中间表示的步骤,包括至少修改对象名称、对象类型和对象数据中的一个。
22.如权利要求19所述的方法,其特征在于,进一步包括根据序列化引擎内的一个或多个标准例程修改初始对象的中间表示的步骤。
23.如权利要求19所述的方法,其特征在于,所述修改初始对象中间表示基于类型信息内的特殊模式、初始对象内的对象数据,或两者。
24.如权利要求19所述的方法,其特征在于,所述初始对象包括内存中的对象且序列化引擎序列化初始对象来产生结果对象。
25.如权利要求19所述的方法,其特征在于,所述初始对象和结果对象两者均为内存中的对象。
26.如权利要求19所述的方法,其特征在于,进一步包括延迟修改中间表示,直到中间表示被转换为结果对象,以避免对中间表示的修改进行缓冲的步骤。
27.一种包括能够序列化和反序列化各种类型数据对象的可扩展序列化引擎的计算系统,所述计算系统能转换初始类型的初始对象为结果类型的结果对象,其中所述计算系统允许运行序列化引擎的运行时间操作由一个或多个扩展例程更改,而无需替换序列化引擎的一个或多个其他现有例程,所述计算系统包括:
用于识别接收用于由序列化引擎在运行时间进行处理的初始类型的初始对象的类型信息的装置;
用于基于所述类型信息,转换初始对象为初始对象的中间表示的装置,所述中间表示适合于运行时间修改;
用于根据一个或多个扩展例程修改初始对象的中间表示,从而更改序列化引擎的运行时间操作的装置;及
用于转换初始对象的中间表示为结果类型的结果对象的装置。
28.如权利要求27所述的计算系统,其特征在于,所述初始对象的中间表示至少包括对象名称、对象类型和对象数据中的一个。
29.如权利要求27所述的计算系统,其特征在于,所述根据一个或多个扩展例程修改初始对象的中间表示的装置,包括修改对象名称、对象类型和对象数据中的至少一个的装置。
30.如权利要求27所述的计算系统,其特征在于,进一步包括用于根据序列化引擎内的一个或多个标准例程修改初始对象的中间表示的装置。
31.如权利要求27所述的计算系统,其特征在于,所述修改初始对象中间表示基于类型信息内的特殊模式、初始对象内的对象数据,或两者。
32.如权利要求27所述的计算系统,其特征在于,所述结果对象包括内存中的对象且反序列化引擎序列化初始对象来产生结果对象。
33.如权利要求27所述的计算系统,其特征在于,所述初始对象和结果对象两者均为内存中的对象。
34.如权利要求27所述的计算系统,其特征在于,进一步包括用于延迟修改中间表示,直到中间表示被转换为结果对象,以避免对中间表示的修改进行缓冲的装置。
35.一种实现转换一个或多个初始类型的初始对象为一个或多个结果类型的结果对象的可扩展序列化引擎的计算系统,其中可以更改运行序列化引擎的运行时间操作,而无需重新实现序列化引擎的现有部分,所述计算系统包括:
运行时间可替换的反映模块,所述反映模块用于识别由序列化引擎接收在运行时间进行处理的初始类型的初始对象的类型信息;
一个或多个运行时间可替换的转换模块,所述转换模块用于产生和基于所识别的类型信息修改初始对象的中间表示,其中一个或多个运行时间可替换的转换模块包括一个或多个更改序列化引擎的运行时间操作的扩展例程;及
运行时间可替换的产生模块,所述产生模块用于通过由转换模块产生的中间表示创建结果类型的结果对象。
36.如权利要求35所述的计算系统,其特征在于,所述中间表示包括初始对象的对象名称、对象类型和对象数据,以及任何包含在初始对象内的对象。
37.如权利要求35所述的计算系统,其特征在于,所述一个或多个运行时间可替换的转换模块能够改变初始对象的对象名称、对象类型和对象数据以及任何包含在初始对象内的对象中的至少一个。
38.如权利要求37所述的计算系统,其特征在于,所述一个或多个运行时间可替换的转换模块能够追踪有关初始对象的信息,而不修改中间表示。
39.如权利要求35所述的计算系统,其特征在于,所述一个或多个运行时间可替换的转换模块包括一个或多个标准例程来修改中间表示。
40.如权利要求35所述的计算系统,其特征在于,所述一个或多个运行时间可替换的转换模块能够基于类型信息内的特殊模式、初始对象内的对象数据,或两者来修改初始对象的中间表示。
41.如权利要求35所述的计算系统,其特征在于,所述运行时间可替换的产生模块能够以可扩展标记语言XML格式创建结果对象。
42.如权利要求35所述的计算系统,其特征在于,所述运行时间可替换的产生模块能够基于中间表示实例化并产生结果对象。
43.如权利要求35所述的计算系统,其特征在于,所述一个或多个运行时间可替换的转换模块能够延迟对初始对象的中间表示的一个或多个修改,直到中间表示被转换为结果对象,以避免和对中间表示做出所述一个或多个修改关联的缓冲需求。
CN2004100323235A 2003-03-26 2004-03-26 一种可扩展序列化引擎的计算系统及方法 Expired - Lifetime CN1534456B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/401,244 US7197512B2 (en) 2003-03-26 2003-03-26 Type bridges
US10/401244 2003-03-26
US10/401,244 2003-03-26

Publications (2)

Publication Number Publication Date
CN1534456A CN1534456A (zh) 2004-10-06
CN1534456B true CN1534456B (zh) 2010-05-26

Family

ID=32908253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004100323235A Expired - Lifetime CN1534456B (zh) 2003-03-26 2004-03-26 一种可扩展序列化引擎的计算系统及方法

Country Status (21)

Country Link
US (2) US7197512B2 (zh)
EP (1) EP1469386B1 (zh)
JP (1) JP4489483B2 (zh)
KR (1) KR20040084815A (zh)
CN (1) CN1534456B (zh)
AT (1) ATE400020T1 (zh)
AU (1) AU2004200729A1 (zh)
BR (1) BRPI0400774A (zh)
CA (1) CA2462321C (zh)
CO (1) CO5560093A1 (zh)
DE (1) DE602004014673D1 (zh)
HK (1) HK1069453A1 (zh)
MX (1) MXPA04002730A (zh)
MY (1) MY140354A (zh)
NO (1) NO331543B1 (zh)
NZ (1) NZ531379A (zh)
PL (1) PL366018A1 (zh)
RU (1) RU2364918C2 (zh)
SG (1) SG126754A1 (zh)
TW (1) TW200502786A (zh)
ZA (1) ZA200401578B (zh)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197512B2 (en) * 2003-03-26 2007-03-27 Microsoft Corporation Type bridges
US7681114B2 (en) * 2003-11-21 2010-03-16 Bridgeborn, Llc Method of authoring, deploying and using interactive, data-driven two or more dimensional content
US7490098B2 (en) * 2005-06-10 2009-02-10 International Business Machines Corporation Apparatus, system, and method for processing hierarchical data in disparate data repositories
JP4852906B2 (ja) * 2005-06-24 2012-01-11 富士ゼロックス株式会社 連携処理システム及び装置
US7694285B2 (en) * 2005-08-30 2010-04-06 Microsoft Corporation Relaxed and extended delegates
US20070074185A1 (en) * 2005-08-30 2007-03-29 Microsoft Corporation Identifier expressions
US7565365B2 (en) * 2005-08-31 2009-07-21 Sap Ag Object storage and synchronization hooks for occasionally-connected devices
US8972423B2 (en) 2006-09-26 2015-03-03 Siemens Product Lifecycle Management Software Inc. Opaque mechanism for web service interoperability
ATE521186T1 (de) * 2005-09-27 2011-09-15 Siemens Product Lifecycle Man Software Inc Opaque-mechanismus für web-dienst- interoperabilität
US7694279B2 (en) * 2006-02-27 2010-04-06 Microsoft Corporation Extensible web service
US7873967B2 (en) 2006-02-27 2011-01-18 Microsoft Corporation Pluggable business logic
US7793275B2 (en) * 2006-03-31 2010-09-07 Intel Corporation Methods and apparatus to tune intermediate representations in a managed runtime environment
US7676492B2 (en) * 2006-04-07 2010-03-09 International Business Machines Corporation Migration of database using serialized objects
US8136104B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for determining compute kernels for an application in a parallel-processing computer system
US8146066B2 (en) * 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US8024708B2 (en) 2006-06-20 2011-09-20 Google Inc. Systems and methods for debugging an application running on a parallel-processing computer system
WO2008002173A1 (en) * 2006-06-20 2008-01-03 Intel Corporation Method and apparatus to call native code from a managed code application
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US8261270B2 (en) * 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
US8136102B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for a parallel-processing computer system
US8375368B2 (en) * 2006-06-20 2013-02-12 Google Inc. Systems and methods for profiling an application running on a parallel-processing computer system
US8381202B2 (en) * 2006-06-20 2013-02-19 Google Inc. Runtime system for executing an application in a parallel-processing computer system
US8108844B2 (en) * 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
CN100456238C (zh) * 2007-03-12 2009-01-28 华为技术有限公司 实现分布式对象持久化的方法、装置及编译单元
US7809702B2 (en) * 2007-05-08 2010-10-05 International Business Machines Corporation Generating from application modifications commands to modify the objects in a repository
US8056000B2 (en) * 2007-08-27 2011-11-08 International Business Machines Corporation Apparatus and system for an automated bidirectional format transform
US7958154B2 (en) * 2007-08-29 2011-06-07 International Business Machines Corporation Apparatus, system, and method for command manager support for pluggable data formats
US20100005115A1 (en) * 2008-07-03 2010-01-07 Sap Ag Method and system for generating documents usable by a plurality of differing computer applications
US8856749B2 (en) * 2010-09-28 2014-10-07 Microsoft Corporation Multi-path brokered test automation execution
US8793706B2 (en) 2010-12-16 2014-07-29 Microsoft Corporation Metadata-based eventing supporting operations on data
US9092280B2 (en) * 2011-12-22 2015-07-28 Sybase, Inc. Method and system for data exchange and exception handling in a data processing environment
US9037964B2 (en) * 2012-01-12 2015-05-19 International Business Machines Corporation Providing direct manipulation of an analytics data visualization within an analytics report
JP6044960B2 (ja) 2013-12-26 2016-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation シリアライザを特化する方法、装置及びコンピュータプログラム
US9747089B2 (en) 2014-10-21 2017-08-29 International Business Machines Corporation Automatic conversion of sequential array-based programs to parallel map-reduce programs
WO2016116132A1 (en) * 2015-01-19 2016-07-28 Huawei Technologies Co., Ltd. Systems and methods for execution of algorithms on parallel heterogeneous systems
DE102016200322A1 (de) * 2016-01-13 2017-07-13 Robert Bosch Gmbh Verfahren und System zur Informationsübermittlung
US10803413B1 (en) * 2016-06-23 2020-10-13 Amazon Technologies, Inc. Workflow service with translator
KR20240038828A (ko) 2016-09-15 2024-03-25 너츠 홀딩스 엘엘씨 암호화된 사용자 데이터 송신 및 저장
US10853220B2 (en) 2017-04-12 2020-12-01 Microsoft Technology Licensing, Llc Determining user engagement with software applications
US11580088B2 (en) 2017-08-11 2023-02-14 Microsoft Technology Licensing, Llc Creation, management, and transfer of interaction representation sets
US20190050378A1 (en) * 2017-08-11 2019-02-14 Microsoft Technology Licensing, Llc Serializable and serialized interaction representations
CN109753270B (zh) * 2017-11-01 2022-05-20 中国石油化工股份有限公司 一种可扩展的钻井业务数据交换系统与方法
US10795704B2 (en) * 2019-03-01 2020-10-06 Red Hat, Inc. Serialization of objects to java bytecode
KR102221737B1 (ko) * 2019-09-23 2021-03-02 주식회사 포스웨이브 인메모리 기반의 분산 처리 시스템에서의 공간 데이터 처리 시스템 및 그 방법
WO2021206934A1 (en) 2020-04-09 2021-10-14 Nuts Holdings, Llc Nuts: flexible hierarchy object graphs

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1030253A1 (en) * 1999-02-19 2000-08-23 Sun Microsystems, Inc. Transformation customizer for configuration database compilation and serialization processes

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06201699A (ja) * 1990-04-23 1994-07-22 Consiglio Nazi Ricerche 臨床診断及びhiv感染進行のモニタリングに対するsp−2モノクローナル抗体の使用
US5581760A (en) 1992-07-06 1996-12-03 Microsoft Corporation Method and system for referring to and binding to objects using identifier objects
DE69309485T2 (de) 1992-11-13 1997-07-10 Microsoft Corp Verfahren zur verteilung von schnittstellenzeigern fur fernprozeduranrufe
US6108715A (en) 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
US6249822B1 (en) 1995-04-24 2001-06-19 Microsoft Corporation Remote procedure call method
US5974416A (en) 1997-11-10 1999-10-26 Microsoft Corporation Method of creating a tabular data stream for sending rows of data between client and server
US6167565A (en) 1998-01-08 2000-12-26 Microsoft Corporation Method and system of custom marshaling of inter-language parameters
US6298391B1 (en) 1998-03-13 2001-10-02 Microsoft Corporation Remote procedure calling with marshaling and unmarshaling of arbitrary non-conformant pointer sizes
US6263491B1 (en) 1998-10-02 2001-07-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6505211B1 (en) * 1999-01-26 2003-01-07 International Business Machines Corporation Method for providing for persistence of java classes where the persistence semantics may be orthogonal to the class definition
US6301585B1 (en) 1999-03-17 2001-10-09 Sun Microsystems, Inc. Redundancy elimination in the persistence of object graphs
US6481008B1 (en) * 1999-06-30 2002-11-12 Microsoft Corporation Instrumentation and optimization tools for heterogeneous programs
US20010054172A1 (en) * 1999-12-03 2001-12-20 Tuatini Jeffrey Taihana Serialization technique
CA2329559A1 (en) 2000-12-22 2002-06-22 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for generating serialization code for representing a model in different type systems
JP2002297575A (ja) 2001-03-29 2002-10-11 Ricoh Co Ltd 情報端末装置及び文書転送システム
US7500017B2 (en) 2001-04-19 2009-03-03 Microsoft Corporation Method and system for providing an XML binary format
US6928488B1 (en) * 2001-06-27 2005-08-09 Microsoft Corporation Architecture and method for serialization and deserialization of objects
US6898604B1 (en) * 2001-06-29 2005-05-24 Microsoft Corporation XML serialization and deserialization
US20040064825A1 (en) * 2002-09-30 2004-04-01 Timothy Lim Method and system for object system interoperability
CA2419904A1 (en) * 2003-02-26 2004-08-26 Ibm Canada Limited - Ibm Canada Limitee Version-insensitive serialization and deserialization of program objects
US7197512B2 (en) * 2003-03-26 2007-03-27 Microsoft Corporation Type bridges

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1030253A1 (en) * 1999-02-19 2000-08-23 Sun Microsystems, Inc. Transformation customizer for configuration database compilation and serialization processes

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ESPOSITO DINO.Binary Serialization of ADO.NETObjects.MSDN MAGAZINE.2002,1-9. *

Also Published As

Publication number Publication date
US7197512B2 (en) 2007-03-27
NO20041263L (no) 2004-09-27
NZ531379A (en) 2005-08-26
HK1069453A1 (en) 2005-05-20
EP1469386A3 (en) 2006-06-21
US20070124738A1 (en) 2007-05-31
KR20040084815A (ko) 2004-10-06
NO331543B1 (no) 2012-01-23
CA2462321A1 (en) 2004-09-26
MXPA04002730A (es) 2005-06-17
US20040193616A1 (en) 2004-09-30
US7624400B2 (en) 2009-11-24
ATE400020T1 (de) 2008-07-15
JP4489483B2 (ja) 2010-06-23
CA2462321C (en) 2011-04-26
SG126754A1 (en) 2006-11-29
TW200502786A (en) 2005-01-16
PL366018A1 (en) 2004-10-04
CO5560093A1 (es) 2005-09-30
CN1534456A (zh) 2004-10-06
RU2364918C2 (ru) 2009-08-20
BRPI0400774A (pt) 2005-01-11
MY140354A (en) 2009-12-31
RU2004108863A (ru) 2005-09-27
EP1469386B1 (en) 2008-07-02
DE602004014673D1 (de) 2008-08-14
EP1469386A2 (en) 2004-10-20
ZA200401578B (en) 2004-08-31
AU2004200729A1 (en) 2004-10-14
JP2004295897A (ja) 2004-10-21

Similar Documents

Publication Publication Date Title
CN1534456B (zh) 一种可扩展序列化引擎的计算系统及方法
CN1832478B (zh) 用于传统组件的动态服务生成的方法和设备
US7287037B2 (en) Method and apparatus for generating service oriented state data mapping between extensible meta-data model and state data including logical abstraction
CN100518167C (zh) 管理服务状态数据的方法和系统
US7127702B2 (en) Application development system and method
US20070055972A1 (en) Model-driven software deployment in an application server
CN105164641A (zh) 扩展开发环境
US9128727B2 (en) Generation of managed assemblies for networks
MX2007015887A (es) Flujos de trabajos centricos de datos.
CN103718155A (zh) 运行时系统
US20060101376A1 (en) Method and system for improved modeling language profile
US20100229152A1 (en) Prescriptive architecture for application development
JP2011159302A (ja) Ediスキーマをモデル化するためのxmlペイロード仕様
Walderhaug et al. Towards a generic solution for traceability in MDD
US7107574B1 (en) Managing computer program configuration data
KR20080023695A (ko) 메시지를 이용하여 crm 기능성을 확장하는 방법
US8166080B2 (en) Optimized computer diagramming method
WO2003027813A2 (en) Portable business information content and management system
US7716653B2 (en) Configurable importers and resource writers for converting data into another format
Radeski et al. Component-based development extensions to HLA
CN101101547B (zh) 动态计算机体系结构
Reed SDL-2010: Background, rationale, and survey
US8856770B2 (en) Solution packages including segments of a process chain
US20070005577A1 (en) Entity agent
Cao et al. Marshaling and unmarshaling models using the entity-relationship model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150424

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150424

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.