CN100405292C - 对象串行化方法 - Google Patents

对象串行化方法 Download PDF

Info

Publication number
CN100405292C
CN100405292C CNB200410062813XA CN200410062813A CN100405292C CN 100405292 C CN100405292 C CN 100405292C CN B200410062813X A CNB200410062813X A CN B200410062813XA CN 200410062813 A CN200410062813 A CN 200410062813A CN 100405292 C CN100405292 C CN 100405292C
Authority
CN
China
Prior art keywords
serialization
serialiser
user interface
self
standard
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 - Fee Related
Application number
CNB200410062813XA
Other languages
English (en)
Other versions
CN1609789A (zh
Inventor
B·K·佩平
S·P·伯克
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 CN1609789A publication Critical patent/CN1609789A/zh
Application granted granted Critical
Publication of CN100405292C publication Critical patent/CN100405292C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance

Abstract

串行化具有自定义对象类型和串行化格式的用户界面对象的方法、系统和计算机程序产品。串行化管理器可以协调标准串行化提供器来标识用于标准对象类型或串行化格式的标准串行化器,并且如需要,可通过加载自定义串行化提供器来标识用于标准串行化提供器未覆盖的自定义对象类型或串行化格式的自定义串行化提供器,以对其进行扩充。从可用串行化提供器,串行化管理器标识用于特定串行化格式和对象类型的串行化器。使用所标识的串行化器来将自定义或标准对象串行化为自定义或标准格式,包括源代码表示、XML表示等等。特定的串行化格式生成对象的代码片断而不生成类表示。为帮助在串行化器及其提供器之中协调并增强模块性,串行化管理器可以维护并共享内容信息。

Description

对象串行化方法
(1)技术领域
本发明涉及对象串行化,尤其涉及以自定义串行化格式串行化自定义用户界面对象的方法、系统和计算机程序产品。
(2)背景技术
从广义上来说,串行化是将对象从一种表示或格式向另一种的转换。串行化一般意味着双向过程:将对象从初始表示转换为其它表示,然后将其它表示转换回初始表示。尽管有时候向初始表示的转换被称为反串行化,然而串行化是包含对初始表示的初始转换和向初始表示的随后的反向转换的一般术语。
例如,存储器内(in-memory)或活(live)对象可以串行化为适合于耐久存储或通过网络发送的永久或瞬时对象。当前,通常使用可扩展标记语言(XML)作为用于存储和数据发送的串行化格式。一旦储存或发送之后,对象的XML表示可以从XML表示串行化(或反串行化)回存储器内或活对象。执行串行化的软件通常称为串行化器。
代码生成是串行化的另一示例。图1示出了具有存储器内或活用户界面对象110的示例可视用户界面设计器100。可视用户界面设计器100允许用户定义用户界面对象的可视外观,并生成能够在程序中编译并纳入其中的用户界面对象的源代码表示。在该示例中,用户界面对象110是一个简单的About(“关于”)框,具有将该对象标识为About框的标题112、用于将About框最小化、最大化及关闭的窗口控制114以及用于解散About框的OK按钮118。典型的可视化用户界面设计器生成与表I所示的伪代码类似的代码。
表I
Class About:form{label text;Button OK;public About(){text=new label();OK=new Button();text.location=new Point(0,0);text.text=“...”;OK.location=new Point(100,130);OK.text=“OK”Controls.Add(OK);Controls.Add(Text);}}
表I中的伪代码说明了可视化用户界面设计器中的常规串行化的几个问题。首先,可视化用户界面设计器中的常规串行化通常限于单个串行化格式,如代码生成。尽管代码生成无疑是可视用户界面设计器的重要目的,然而可能期望其它类型的串行化。例如,可能需要About框的XML表示,或许是作为一种通用格式,使得在某一个可视用户界面设计器中创建的用户界面对象可以导入到另一可视用户界面设计器。然而,可视用户界面设计器中的常规串行化被严格地同单一格式相联系,并且不允许用于不同的串行化格式。
表I的伪代码说明的第二个问题是可视用户界面设计器的常规串行化通常生成新的类,如表I所示的新的About类。对于代码生成,这一般是所期望的行为,因为它允许在新的类中与成员对象的直接交互。然而,对于许多操作,在串行化时创建新类将导致效率降低。例如,在大多数的设计时间里,仅仅对象的可视表示是相关或最相关的-源代码仅在可视表示储盘时才需要。表II给出了表I所示的伪代码的等效表示。差别在于表I创建了新的类型,而表II配置现有类型。该第二表示作为完成的源代码可能无用,但是可以在可视设计器中使用,作为保持活对象状态的一般方法,用于诸如撤销或复制和粘贴等特征。
表II
Form About=new form();label text=new label();Button OK=new Button();text.location=new Point(0,0);text.text=“...”;OK.location=new Point(100,130);OK.text=“OK”About.Controls.Add(OK);About.Controls.Add(Text);
第三个问题是可视用户界面设计器中的常规串行化一般在如何对串行化器进行扩充来用于新的类型和/或新的串行化格式方面有所局限。尽管能够为了新类型或格式而调用串行化提供器时,但常规串行化需要把元数据属性编译进类型中以使串行化提供器可知。因此,为提供新的串行化格式并串行化那些对象开发者原来未曾预想到的新对象类型,就需要重新编译。除不方便以外,重新编译在某些情况下可能是无法进行的,如当串行化第三方对象时。
当然,应当注意到,可视用户界面设计器仅为生成对象图形的代码的软件的一个例子。在许多情况下,代码生成可能是重新创建对象图形的最快且最有效的方式。然而,如上所述,常规的串行化-尤其是涉及到代码生成时-会有各种缺点而使其有用性受到限制。
(3)发明内容
本发明涉及将具有自定义对象类型和串行化格式的对象串行化的方法、系统和计算机程序产品。依照本发明的示例实施例,串行化管理器协调标准串行化提供器来标识用于标准对象类型或串行化格式的标准串行化器。如需要者,可以通过加载自定义串行化提供器来标识用于标准串行化提供器未覆盖的自定义对象类型或串行化格式的自定义串行化器,以对串行化管理器进行扩充。从可用串行化提供器中,串行化管理器标识用于特定串行化格式和对象图形的串行化器。一旦标识了合适的串行化器,使用该串行化器串行化对象图形。
对象图形可能包含多个相关对象,可能是自定义或标准对象类型,并且串行化格式可能是标准或自定义格式。示例串行化格式包括活表示或存储器内表示、源代码表示、可扩展标记语言(XML)表示等等。某些串行化格式可能生成对象图形的代码片断,而不生成该对象图形的类表示。这些代码片断对可视化用户界面设计器中的剪切/复制/粘贴和撤销/重复操作来说尤其有用。在一些实现中,来自自定义串行化提供器的串行化器可以用来替代标准串行化器。为在串行化器及其提供器之中帮助协调并增强模块性,串行化管理器可维护并共享上下文信息。
下文将描述本发明的其它特点和优点,从描述中可以部分清楚这些特点和优点,或者能够通过对本发明的实践学到。本发明的特点和优点可以通过所附权利要求书中特别指明的仪器及组合来实现与获得。从以下描述以及所附权利要求书中可以完全明白本发明的这些及其它特点,或者能够从后文陈述的本发明的实践中学到。
(4)附图说明
为描述获得本发明的上述和其它优点及特点的方式,参考附图中说明的特定实施例来反映上文简要描述的本发明的更详细描述。应当理解,这些附图仅描述了本发明的典型实施例,因此不应认为是对其范围的限制,通过使用附图描述并解释本发明的另外的特征和细节。附图中:
图1说明了具有可依照本发明来串行化的示例用户界面对象的示例可视化用户界面设计器;
图2说明了依照本发明的示例串行化管理器;
图3示出了依照本发明串行化用户界面对象的方法的示例行动和步骤;
图4说明了为本发明提供合适操作环境的示例性系统。
(5)具体实施方式
本发明延及用于串行化具有自定义对象类型和串行化格式的用户界面对象的方法、系统和计算机程序产品。本发明的实施例可包括一个或多个专用和/或一个或多个通用计算机,包括各类计算机硬件,如后文所详细描述的。
图2所示是依照本发明的示例串行化管理器200。串行化管理器200包括具有标准串行化器224的标准串行化提供器220以及具有自定义串行化器244的自定义串行化提供器240。串行化器,如标准串行化器224或自定义串行化器244,能够将一个特定的对象类型或某一范围的对象类型串行化为特定的串行化格式的对象。一般而言,用不同的串行化器来将单个对象类型串行化为不同的串行化格式,在一些实现中,串行化提供器中存在独立的基类,提供不同的串行化格式。例如,如后文所详述的,XmlSerializer基类可以被用来将对象转换为可扩展标记语言(XML)。也可以用不同的串行化器和串行化提供器来将不同的对象类型串行化为单个串行化格式。
串行化提供器,如标准串行化提供器220和自定义串行化提供器240,标识用于特定对象类型和串行化格式的个别串行化器。例如,标准串行化提供器220可以标识标准串行化器224来将标准对象串行化为标准串行化格式。其它串行化器226可以用来将不同的对象格式串行化为同一标准串行化格式,或用来将标准对象串行化为不同的标准串行化格式。类似地,自定义串行化提供器240标识自定义串行化器244来将自定义对象串行化为自定义串行化格式,其它自定义串行化器246可以用来将不同的对象类型串行化为同一自定义串行化格式,或用来将同一自定义对象串行化为不同的自定义串行化格式。当然,串行化管理器200可以包含其它标准串行化提供器230以及其它自定义串行化提供器250。
串行化管理器200也提供串行化上下文信息210的信息存储,以供各种串行化器在串行化对象图形时使用。例如,具有多个对象的对象图形可能需要多个串行化器,每一串行化器生成其自己的输出。串行化管理器200根据需要为这些串行化器之间的通信提供方便。
在串行化管理器200内,可能使用元数据属性来将个别对象类型与特定串行化器相联系。例如,如后文详细描述的,对于不具有串行化器的对象类型或者为了替代现有的串行化器,可使用缺省串行化提供器属性来加载或安装串行化提供器。在串行化提供器内,如标准串行化提供器220或自定义串行化提供器240内,也可使用元数据属性来标识用于给定对象类型和串行化格式的合适的串行化器。
作为示例,考虑表III所示的XML格式。
表III
<TypeName><PropertyName>ValueString</PropertyName></TypeName>
使用表IV所示的伪代码类XmlSerializer来串行化这一XML格式。
表IV
public abstract class XmlSerializer{public abstract string Serialize(IDesignerSerializerationManager m,object graph);}
XmlSerializer是从更小的片断建立串的模块化类。例如,当传递具有整数值5的Int32数据类型时,XmlSerializer返回“5”。
表III中的XML格式建议两种基本的对象类型来串行化:具有特性的对象和能够转换为文本的对象。在大多数情况下,使用知道如何将该类转换成文本或XML标签的自定义串行化器来修饰每一个类消耗太多精力,并且当引入新的串行化格式时会导致维护问题。(为将现有的类串行化为新的串行化格式,在类中引入新属性,需要对该现有类的重编译。)串行化提供器通过一种回叫机制解决了这一问题,在回叫机制中,给予提供器机会来为给定类型提供串行化器。
对于当前的示例,对一组可用的类型作如下的限定:
1.如果该类型可以通过现有IConvertible接口转换为串,则标识StringXmlSerializer。
2.如果该类型无法转换为串,但是为公有类,并且具有空构造函数,则标识ObjectXmlSerializer。
3.如果不符合上述两条,则串行化提供器返回空,指示没有用于该对象的串行化器。(这一错误如何处理取决于进行调用的串行化器。)
以下表V中示出了实现上述标准的伪代码。
表V
internal class XmlSerializationProvider:IDesignerSerializationProvider{object GetSerializer(IDesignerSerializerationManager manager,object currentSerializer,Type objectType,Type serializerType){//Null values are given a null type by this providerif(objectType=null){return StringXmlSerializer.Instance;}if(typeof(IConvertible).IsSubclassOf(objectType)){return StringXmlSerializer.Instance;}if(objectType.GetConstructor(new object[])=null){return ObjectXmlSerializer.Instance;}return null;}}
定义了串行化提供器之后,可以将其投入使用。尽管可以通过明确的添加方法将该串行化提供器给予串行化管理器200,然而这一方法需要有人来作出这一明确的调用。可选地,可以通过向串行化器基类添加Default Serialization ProviderAttribute来自动将串行化提供器添加到串行化管理器200。对于这一示例,该属性需要串行化提供器具有公有、空构造函数。因此,表IV的伪代码变为以下表VI所示。
表VI
[DefaultSerializationProvider(typeof(XmlSerializationProvider))]public abstract class XmlSerializer{}
现在,不论何时向串行化管理器200寻求任一类型的XmlSerializer,如果缺省串行化提供器先前并未被添加,则它将被自动添加到串行化管理器。注意,这一属性是与串行化器而不是对象相关联,使得可以添加新的串行化格式而不需要重编译该类来使用该新的属性。
如上所述,示例XmlSerializer具有两个具体的串行化器类:StringXmlSerializer和ObjectXmlSerializer。表VII示出了StringXmlSerializer的伪代码实现。
表VII
internal class StringXmlSerializer:XmlSerializer{internal StringXmlSerializer Instance=new StringXmlSerializer();public override string Serialize(IDesignerSerializationManager m,object graph){if(graph=null) return string.Empty;IConvertible c=graph as IConvertible;if(c=null){//Rather than throwing excpetions,we can//add a list of errors to the serlialization
               //manager.m.ReportError(“Object is not IConvertible”);return null;}return c.ToString(CultureInfo.InvariantCulture);}}
表VIII示出了ObjectXmlSerializer的伪代码实现,巡视了它所串行化的对象的公有特性。
表VIII
internal class ObjectXmlSerializer:XmlSerializer{internal ObjectXmlSerializer Instance=new ObjectXmlSerializer();public override string Serialize(IDesignerSerializationManager m,object graph){StringBuilder xml=new StringBuilder();xml.Append(“<”);xml.Append(graph.GetType().FullName);xml.Append(“>”);//Now,walk all the properties of the objectPropertyDescriptorCollection properties;Property p;properties=TypeDescriptor.GetProperties(graph);
                   foreach(p in properties){if(!p.ShouldSerializeValue(graph)){continue;}object value=p.GetValue(graph);Type valueType=null;if(value!=null)valueType=value.GetType();//Get the serializer for this propertyXmlSerializer s=m.GetSerializer(valueType,typeof(XmlSerializer))as XmlSerializer;if(s=null){//No serializer means we must skip this//property.Tell the serialization manager//of the error.m.ReportError(string.Format(“Property{0}does not support XML serialization”,p.Name));continue;}//We have a valid property to writexml.Append(“<”);xml.Append(p.Name);xml.Append(“>”);xml.Append(s.Serialize(m,value);
                xml.Append(“</”);xml.Append(p.Name);xml.Append(“>”);}xml.Append(“</”);xml.Append(graph.GetType().FullName);xml.Append(“>”);return xml.ToString();}}
注意,ObiectXmlSerializer对每一特性值调用其它串行化器。这至少具有两个优点。首先,它令ObjectXmlSerializer变得十分简单。其次,它对第三方类型提供了可扩充点。如果出现无法由这些串行化器的任一个写出的类型,则可以向该类型提供自定义串行化器。
表IX示出了上述串行化器对System.Drasing.Rectangle对象的示例使用,该对象具有空构造函数以及支持用于串转换的IConvertible的四个特性。在表IX中,创建了IDesignerSerializationManager的一个实例,即串行化管理器,并用来标识串行化器。然后所标识的串行化器串行化该对象。
表IX
Rectangler=new Rectangle(5,10,15,20);DesignerSerializationManager m=new DesignerSerializationManager();XmlSerializer x=(XmlSerializer)m.GetSerializer(r.GetType(),typeof(XmlSerializer);string xml=x.Serialize(m,r);
表IX所示的示例生成表X所示的XML。
表X
<System.Drawing.Rectangle><X>5</X><Y>10</Y><Width>15</Width><Height>15</Height></System.Drawing.Rectangle>
注意,该示例未包括任何XML缩进。然而,可以通过使用串行化管理器200的串行化上下文信息210简单地实现该缩进。每一串行化器层可以向包含当前缩进层的上下文栈添加对象,并且每一串行化器然后在栈内搜索该层上下文对象并使用它来提供合适的缩进。
串行化管理器200能够将对象串行化为不同的串行化格式。与上述XML串行化形成对比,下文的示例与代码生成格式有关。注意,依照本发明的示例实现,生成XML的串行化提供器和生成源代码的串行化提供器可能在串行化管理器200中共存。如参照图1所指示的,有多种方法来将对象串行化为源代码。例如,考虑具有单个OK按钮的窗体的情况。定义这一窗体的一个标准方法如下表XI所示。
表XI
public class Form 1:Form{private Button button 1;public Form1(){button1=new Button();button1.Location=new Point(100,100);button1.Text=“OK”;this.Controls.Add(button1);}}
表XI的伪代码定义了“Form1”对象类型的新类。然而,让对象图形的根定义新类是任意的选择。该代码也可如表XII所示。
表XII
Form Form1=new Form();Button button1=new Button();button1.Location=new Point(100,100);button1.Text=“OK”;Form1.Controls.Add(button1);
在两种情况下,所得是具有一个按钮的窗体。然而,对表XII中说明的代码片断,一般所有对象比对象图形的“根”更需要它,并且它对可视化设计器中的剪切/复制/粘贴以及撤销/重复操作更有用。对于这些操作,新对象的创建,至少最初的创建,可能是不必要且不合需要的,并因此需要一些额外的工作来避免它。在许多情况下,窗体可以仅以表XII所示的格式来简单表示。因此,在示例实现中,串行化管理器200具有两个不同的基本串行化类:CodeDomSerializer,仅创建并配置给定的对象;以及TypeCodeDomSerializer,定义新类。两个串行化器可以在串行化管理器200中共同存在。
以下表XIII示出了示例CodeDomSerializere类。
表XIII
public abstract class CodeDomSerializer{public abstract object Serialize(IDesignerSerializationManager m,object value);public virtual object SerializeProperty(IDesignerSerializationManager m,PropertyDescriptor p,object value);public abstract object Deserialize(IDesignerSerializationManager m,object state);}
Serialize方法串行化给定的对象。其返回值取决于所需要的串行化类型,并可以是以下的任一种:
CodeExpression:如果对象可以串行化为简单的表达式,则返回CodeExpression。落入这一分类的原语如do类型可以在其构造函数中被创建及配置。
CodeStatementCollection:如果对象可以串行化为状态的集合,则返回CodeStatementCollection。需要构造且其一个或多个属性需要设定的复杂对象落入这一分类。
SerializeProperty方法串行化给定对象上的属性。使用这一串行化类型的一个模型如下:
1.向串行化管理器要求用于给定属性类型的串行化器。
2.在返回的串行化器上调用SerializeProperty。
3.将结果整合进自己的串行化数据中。
SerializeProperty的返回值取决于需要的串行化类型,并且可以是以下的任一种:
CodeStatement:如果属性可以串行化为单一状态,则返回CodeStatement。大多数属性落入这一分类。
CodeStatementCollection:如果属性能够串行化为状态的集合,则返回CodeStatementCollection。复杂的属性,如集合落入这一分类。
Deserilaize方法返回从给定的串行化数据配置的活对象。传入的作为“状态”的对象应当是与从先前的Serialize调用返回的对象的同一类型。
TypeCodeDomSerializer类执行与CodeDomSerializer相同的任务,但是通过这一个类来串行化对象定义了一个新类型。  以下表XIV示出了TypeCodeDomSerializer类的一个示例。
表XIV
public abstract TypeCodeDomSerializer{public abstract CodeTypeDeclaration Serialize(IDesignerSerializationManager m,object root,ICollection members);public abstract object Deserialize(IDesignerSerializationManager m,CodeTypeDeclaration typeDecl);}
Serialize方法串行化给定根对象以及成员的可选集合来创建新类的定义。成员集合可以为零或空。如果它包含值,则这些值将被定义为该类型的成员变量。为方便起见,成员集合可以包含根对象。在这一情况下,根对象将不再被作为成员添加。Deserialize方法反串行化先前串行化的代码类型声明。它创建该类型声明的基本类型的实例,并通过设定属性与执行方法来对其进行配置。
本发明也可以按照包括功能性步骤和/或非功能性行动的方法来描述。以下是对可以在本发明的实践中执行的行动和步骤的描述。通常,功能性步骤按照所获得的结果来描述发明,而非功能性行动描述用于获得特定结果的更具体的行动。尽管功能性步骤和非功能性行动可能是以特定的顺序出现在说明书或权利要求书中的,然而本发明并不必局限于行动和/或步骤的任一特定顺序或组合。
图3示出了用于依照本发明来串行化用户界面对象的方法的示例行动和步骤。用于协调(310)一个或多个标准串行化提供器的步骤以及如所需要用于加载(310)一个或多个自定义串行化提供器的步骤可包括提供(312)串行化管理器的行动,其中,每一标准串行化提供器标识一个或多个用于标准对象类型或串行化格式的标准串行化器,每一自定义串行化提供器标识一个或多个用于可能未被所述一个或多个标准串行化提供器所覆盖的一个或多个自定义对象类型或串行化格式的自定义串行化器。
用于标识(320)用于特定串行化格式和包含特定对象类型的对象的对象图形的串行化器的步骤可包括向串行化管理器请求(322)串行化器的行动。用于串行化(330)的步骤可包括调用(332)串行化管理器返回的串行化器来串行化对象图形的行动。用于维护(未示出)上下文信息的步骤可包括在串行化管理器端储存上下文信息的行动(未示出)。用于以自定义串行化器替代(未示出)标准串行化器的步骤可包括提供(312)串行化管理器来加载一个或多个自定义串行化提供器的行动,其中,每一自定义串行化提供器标识一个或多个自定义串行化器。
自定义串行化器和串行化提供器可以被加载作为对请求串行化器的响应。要串行化的对象图形可包括多个相关对象。串行化器可生成对象图形的代码片断而不是类表示,作为剪切/复制/粘贴或撤销/重复操作的一部分。串行化器可串行化或反串行化对象图形,并可生成对象的活表示或存储器内表示、XML表示、源代码表示或其它表示。
本发明的范围内的实施例也包括用于含有或在其上储存计算机指令或数据结构的计算机可读媒质。这类计算机可读媒质可以是任一可由通用或专用计算机访问的可用媒质。作为示例而非局限,这类计算机可读媒质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或其它可用来以计算机可执行指令或数据结构的形式携带或储存所期望的的程序代码方法并可由通用或专用计算机访问的任一媒质。当通过网络或另一通信连接(或者硬布线、或者无线、或硬布线和无线的组合)向计算机传输或提供信息时,计算机适当地将该连接视为计算机可读媒质。由此,任一这类连接适当地称为计算机可读媒质。上述的组合也应当包括在计算机可读媒质的范围内。计算机可执行指令包括,如,引发通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。
图4及以下讨论提供了对适于在其中实现本发明的计算环境的简要概括描述。尽管不需要,但本发明将在计算机可执行指令的一般语境下描述,计算机可执行指令如程序模块,由网络环境中的计算机执行。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。计算机可执行指令、相关的数据结构以及程序模块表示了用于执行这里公开的方法的步骤的程序代码方法的示例。这一可执行指令或相关数据结构的特定顺序表示了用于实现在这类步骤中所描述的功能的相应行动的示例。
本领域的技术人员可以理解,本发明可以在具有多种类型计算机系统构造的网络计算环境中实践,包括个人计算机、手持式设备、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机等等。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接(或者通过硬布线链路、或者通过无线链路、或通过硬布线或无线链路的组合)的本地和远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
参考图4,用于实现本发明的示例系统包括以常规计算机形式420的通用计算装置,包括处理单元421、系统存储器422以及将各类系统组件包括系统存储器422耦合至处理单元421的系统总线423。系统总线423可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线结构的本地总线。系统存储器包括只读存储器(ROM)424和随机存取存储器(RAM)425。基本输入/输出系统(BIOS)426,包含如在启动时协助在计算机420内的元件之间传输信息的基本例程,可储存在ROM 424中。
计算机420也可包括用于对磁硬盘439进行读写的磁硬盘驱动器427、用于对可移动磁盘429进行读写的磁盘驱动器428以及用于对可移动光盘431如CD-ROM或其它光媒质进行读写的光盘驱动器430。磁硬盘驱动器427、磁盘驱动器428以及光盘驱动器430分别通过硬盘驱动器接口432、磁盘驱动器接口433和光盘驱动器接口434连接至系统总线423。驱动器及其相关的计算机可读媒质为计算机420提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失存储。尽管这里描述的示例环境采用了磁硬盘439、可移动磁盘429以及可移动光盘431,然而也可以使用用于储存数据的其它类型的计算机可读媒质,包括盒式磁带、闪存卡、数字多功能盘、Bernoulli盒式磁盘、RAM、ROM等等。
包括一个或多个程序模块的程序代码方法可储存在硬盘439、磁盘429、光盘431、ROM 424或RAM 425中,包括操作系统435、一个或多个应用程序436、其它程序模块437以及程序数据438。用户可以通过键盘440、指向设备442或其它输入设备(未示出),如麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等向计算机420输入命令和信息。这些和其它输入设备通常通过耦合至系统总线423的串行端口接口446连接到处理单元421。可选地,输入设备也可以通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。监视器447或另一显示设备也通过接口,如视频适配器448连接到系统总线423。除监视器之外,个人计算机通常包括其它外围输出设备(未示出),如扬声器和打印机。
计算机420可以在使用到一个或多个远程计算机,如远程计算机449a和449b的逻辑连接的网络化环境中操作。远程计算机449a和449b的每一个可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它公用网络节点,并通常包括许多或所有上述与计算机420相关的元件,尽管在图4中仅说明了存储器存储设备450a和450b及其关联的应用程序436a和436b。图4描述的逻辑连接包括局域网(LAN)451和广域网(WAN)452,这里示出作为示例而非局限。这类网络环境常见于办公室范围或企业范围计算机网络、内联网以及因特网。
当在局域网网络环境中使用时,计算机420通过网络接口或适配器453连接至局域网451。当在广域网网络环境中使用时,计算机420可包括调制解调器454、无线链路或其它装置,用于通过广域网452,如因特网建立通信。调制解调器454可以是内置或外置的,通过串行端口接口446连接至系统总线423。在网络化环境中,描述的与计算机420相关的程序模块或其部分可储存在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用通过广域网452建立通信的其它装置。
本发明可以在不脱离其精神或本质特征的情况下以其它特定形式来实施。描述的实施例在各个方面仅为说明性的而非限制。因此,本发明的范围由所附权利要求书来指明,而非之前的描述。所有处于权利要求的等效权利要求的范围和意思之内的变化都包含在其范围之内。

Claims (30)

1.在支持能够为对象生成源代码的串行化引擎的计算机系统中,一种将一个或多个标准对象类型和串行化格式的一个或多个对象从初始表示串行化为一个或多个随后表示中的任一个,并且可以被扩充来覆盖一个或多个自定义对象类型和串行化格式的方法,其特征在于,所述方法包括以下行动:
提供串行化管理器,以(i)协调一个或多个标准串行化提供器,每个串行化提供器标识用于标准对象类型或串行化格式的一个或多个标准串行化器,以及(ii)按需加载一个或多个自定义串行化提供器,每个自定义串行化提供器标识用于所述一个或多个标准串行化提供器未覆盖的一个或多个自定义对象类型或串行化格式的一个或多个自定义串行化器;
向所述串行化管理器请求用于包括特定对象类型的对象的对象图形并用于特定串行化格式的串行化器;以及
调用所述串行化器来串行化所述对象图形。
2.如权利要求1所述的方法,其特征在于,所述串行化器是自定义串行化器。
3.如权利要求2所述的方法,其特征在于,所述串行化管理器响应于所述请求自动加载所述一个或多个自定义串行化提供器。
4.如权利要求1所述的方法,其特征在于,所述计算机系统也支持可视化用户界面设计器,并且所述串行化引擎能够为在所述可视化用户界面设计器中创建的一个或多个用户界面对象生成源代码,所述对象图形包括所述一个或多个用户界面对象。
5.如权利要求1所述的方法,其特征在于,所述串行化管理器维护可在所述一个或多个标准串行化提供器和由所述串行化管理器加载的任一自定义串行化提供器之间共享的上下文信息。
6.如权利要求1所述的方法,其特征在于,所述初始表示包括用来保持所述一个或多个用户界面对象的表示,并且其中,所述一个或多个随后表示包括用来表示所述可视化用户界面设计器内的所述一个或多个用户界面对象的表示。
7.如权利要求1所述的方法,其特征在于,所述对象图形包括多个相关对象。
8.如权利要求1所述的方法,其特征在于,所述请求串行化器的行动是撤销或重复操作的一部分,并且其中,所述串行化器生成足够用来撤销或重复在可视化用户界面设计器中对对象图形作出的变化的代码片断,而不生成所述对象图形的类表示。
9.如权利要求1所述的方法,其特征在于,所述一个或多个标准串行化提供器能够标识多个串行化器,并且其中,所述多个串行化器的至少两个用来以不同串行化格式对所述对象图形进行串行化。
10.如权利要求1所述的方法,其特征在于,所述串行化器生成所述对象图形的可扩展标记语言表示。
11.在支持可视化用户界面设计器和能够为所述可视化用户界面设计器中创建的用户界面对象生成源代码的串行化引擎的计算机系统中,一种将一个或多个用户界面对象从初始表示串行化为一个或多个可扩充随后表示中的任一个,并可被扩充来覆盖一个或多个自定义对象类型和串行化格式的方法,其特征在于,所述方法包括步骤:
协调一个或多个标准串行化提供器,每个标准串行化提供器标识用于标准对象类型或串行化格式的一个或多个标准串行化器;
按需加载一个或多个自定义串行化提供器,每个自定义串行化提供器标识用于所述一个或多个标准串行化提供器未覆盖的一个或多个自定义对象类型或串行化格式的一个或多个自定义串行化器;
标识用于特定串行化格式和用于包括特定对象类型的对象的对象图形的串行化器;以及
使用所标识的串行化器串行化所述对象图形。
12.如权利要求11所述的方法,其特征在于,所述特定对象类型包括自定义对象类型。
13.如权利要求11所述的方法,其特征在于,所述特定串行化格式是自定义串行化格式。
14.如权利要求11所述的方法,其特征在于,还包括用于维护在所述一个或多个标准串行化提供器和由所述串行化管理器加载的任一自定义串行化提供器之间共享的上下文信息的步骤。
15.如权利要求11所述的方法,其特征在于,所述初始表示包括用来表示所述可视化用户界面设计器内所述一个或多个用户界面对象的活表示,并且其中,所述一个或多个随后表示包括用来保持所述一个或多个用户界面对象的目标表示。
16.如权利要求11所述的方法,其特征在于,还包括以下步骤:
用来自在标识用于所述对象图形的串行化器时所加载的自定义串行化提供器的自定义串行化器替代标准串行化器。
17.如权利要求11所述的方法,其特征在于,所述对象图形包括多个相关对象。
18.如权利要求11所述的方法,其特征在于,用于标识串行化器的步骤是剪切、复制或粘贴操作的一部分,并且其中,所述串行化器生成用于所述对象图形的代码片断,而不生成所述对象图形的类表示。
19.如权利要求11所述的方法,其特征在于,所述串行化器生成所述对象图形的源代码表示或可扩展标记语言表示。
20.对于支持可视化用户界面设计器和能够为所述可视化用户界面设计器内创建的用户界面对象生成源代码的串行化引擎的计算机系统,一种当执行对一个或多个用户界面对象的可视化操作时更有效地串行化所述一个或多个用户界面对象的方法,其特征在于,所述方法包括步骤:
加载一个或多个串行化提供器,每个串行化提供器标识用于给定对象类型和串行化格式的一个或多个串行化器;
从所述一个或多个串行化提供器,标识能够以与将要对一用户界面对象执行的请求的可视化操作相应的串行化格式来串行化所述用户界面对象的串行化器;以及
使用所标识的串行化器串行化所述用户界面对象以生成所述用户界面对象的代码片断而不生成类表示,以便更有效地执行所请求的操作。
21.如权利要求20所述的方法,其特征在于,还包括用于协调所述一个或多个串行化提供器的步骤。
22.如权利要求20所述的方法,其特征在于,所述一个或多个串行化提供器包括一个或多个标准串行化提供器,每个标准串行化提供器标识用于标准对象类型和串行化格式的一个或多个标准串行化器。
23.如权利要求22所述的方法,其特征在于,所述一个或多个串行化提供器包括一个或多个自定义串行化提供器,每个自定义串行化提供器标识用于所述一个或多个标准串行化提供器未覆盖的一个或多个自定义对象类型或串行化格式的一个或多个自定义串行化器。
24.如权利要求23所述的方法,其特征在于,在标识所述串行化器时加载一个或多个自定义串行化提供器。
25.如权利要求20所述的方法,其特征在于,所述串行化器是自定义串行化器。
26.如权利要求20所述的方法,其特征在于,所述方法还包括用于维护在所述一个或多个串行化提供器之间共享的上下文信息的步骤。
27.如权利要求20所述的方法,其特征在于,所请求的可视化操作包括撤销或重复操作。
28.如权利要求20所述的方法,其特征在于,所请求的可视化操作包括剪切、复制或粘贴操作。
29.如权利要求20所述的方法,其特征在于,所述方法还包括步骤:
从所述一个或多个串行化提供器,标识能够以与用户界面对象的源代码表示相应的串行化格式串行化所述用户界面对象的代码串行化器;以及
使用所标识的代码串行化器串行化所述用户界面对象以生成所述用户界面对象的类表示。
30.如权利要求20所述的方法,其特征在于,所述方法还包括步骤:
从所述一个或多个串行化提供器,标识能够以与用户界面对象的可扩展标记语言XML表示相应的串行化格式串行化所述用户界面对象的XML串行化器;以及
使用所标识的XML串行化器串行化所述用户界面对象以生成所述用户界面对象的XML表示。
CNB200410062813XA 2003-06-19 2004-06-18 对象串行化方法 Expired - Fee Related CN100405292C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/600,256 US7325226B2 (en) 2003-06-19 2003-06-19 Modular object serialization architecture
US10/600,256 2003-06-19

Publications (2)

Publication Number Publication Date
CN1609789A CN1609789A (zh) 2005-04-27
CN100405292C true CN100405292C (zh) 2008-07-23

Family

ID=33418568

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200410062813XA Expired - Fee Related CN100405292C (zh) 2003-06-19 2004-06-18 对象串行化方法

Country Status (5)

Country Link
US (1) US7325226B2 (zh)
EP (1) EP1489495A3 (zh)
JP (1) JP4855656B2 (zh)
KR (1) KR101159310B1 (zh)
CN (1) CN100405292C (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7207034B2 (en) * 2003-06-23 2007-04-17 Microsoft Corporation Undo infrastructure
US7681114B2 (en) * 2003-11-21 2010-03-16 Bridgeborn, Llc Method of authoring, deploying and using interactive, data-driven two or more dimensional content
US7676481B2 (en) * 2005-02-24 2010-03-09 Microsoft Corporation Serialization of file system item(s) and associated entity(ies)
US7877366B2 (en) * 2004-03-12 2011-01-25 Oracle International Corporation Streaming XML data retrieval using XPath
US7996443B2 (en) * 2005-02-28 2011-08-09 Microsoft Corporation Schema grammar and compilation
US8032657B2 (en) * 2005-09-12 2011-10-04 Microsoft Corporation Preservation of type information between a client and a server
US7627852B1 (en) * 2006-01-17 2009-12-01 Xilinx, Inc. Embedding an interpreter within an application written in a different programming language
US7801926B2 (en) * 2006-11-22 2010-09-21 Microsoft Corporation Programmable logic and constraints for a dynamically typed storage system
US9311082B2 (en) 2006-12-29 2016-04-12 Sap Se System and method for processing graph objects
US8640086B2 (en) * 2006-12-29 2014-01-28 Sap Ag Graphical user interface system and method for presenting objects
US8117601B2 (en) * 2007-11-14 2012-02-14 Microsoft Corporation Internal test and manipulation of an application
ATE532139T1 (de) * 2007-12-21 2011-11-15 Hicamp Systems Übertragung hierarchischer blockidentifizierter daten für einheitliche verwaltung strukturierter daten und datenkomprimierung
US8626720B2 (en) * 2008-02-11 2014-01-07 International Business Machines Corporation System and method of reconstructing complex custom objects
US8245186B2 (en) * 2008-04-03 2012-08-14 Microsoft Corporation Techniques for offering and applying code modifications
US20090276795A1 (en) * 2008-04-30 2009-11-05 Microsoft Corporation Virtual automata
US8990768B2 (en) * 2008-09-30 2015-03-24 Rockwell Automation Technologies, Inc. Software object property return method and system
US8635331B2 (en) 2009-08-05 2014-01-21 Microsoft Corporation Distributed workflow framework
US8661408B2 (en) * 2009-11-23 2014-02-25 Michael James Psenka Integrated development environment and methods of using the same
US8949783B2 (en) 2010-06-30 2015-02-03 International Business Machines Corporation Method and system for lazy data serialization in computer communications
US20130117326A1 (en) * 2011-11-08 2013-05-09 Microsoft Corporation External serialization and deserialization
CN103019689B (zh) * 2012-11-21 2017-02-15 上海富欣智能交通控制有限公司 通用的对象序列化的实现方法
US9858052B2 (en) 2013-03-21 2018-01-02 Razer (Asia-Pacific) Pte. Ltd. Decentralized operating system
CA2918418C (en) * 2013-08-16 2020-02-18 Landmark Graphics Corporation Converting reserve estimates in a reservoir model to a standard format for dynamic comparison
US20150082208A1 (en) * 2013-09-16 2015-03-19 Uwe D. Klinger Multi-level user interface theming
US9881070B2 (en) 2014-12-12 2018-01-30 Microsoft Technology Licensing, Llc Controlling service functions in response to service instigation and service reactivation messages
US9826000B2 (en) 2014-12-12 2017-11-21 Microsoft Technology Licensing, Llc Effecting communication events
CN104899316A (zh) * 2015-06-17 2015-09-09 北京奇虎科技有限公司 游戏数据的序列化与反序列化处理方法及装置
US11347704B2 (en) * 2015-10-16 2022-05-31 Seven Bridges Genomics Inc. Biological graph or sequence serialization
CN105468793B (zh) * 2016-01-20 2019-02-22 北京华如科技股份有限公司 一种仿真模型数据的自动化管理方法
US10140119B2 (en) * 2016-03-17 2018-11-27 Oracle International Corporation Modular serialization
CN107438112B (zh) * 2016-05-27 2020-06-30 北京京东尚科信息技术有限公司 基于xml的移动端接口地址管理方法、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000055727A2 (en) * 1999-03-17 2000-09-21 Sun Microsystems, Inc. Redundancy elimination in the persistence of object graphs
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
US20020116412A1 (en) * 2001-02-16 2002-08-22 Barnes Christine Michelle System and method for object state persistence

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05225012A (ja) * 1992-02-12 1993-09-03 Fuji Xerox Co Ltd データ列変換復元方法
US5675801A (en) 1994-09-30 1997-10-07 International Business Machines Corporation Object oriented system and method for generating target language code
US5692184A (en) * 1995-05-09 1997-11-25 Intergraph Corporation Object relationship management system
US5956728A (en) * 1996-07-17 1999-09-21 Next Software, Inc. Object graph editing context and methods of use
US5946493A (en) 1997-03-28 1999-08-31 International Business Machines Corporation Method and system in a data processing system for association of source code instructions with an optimized listing of object code instructions
US6263492B1 (en) 1997-06-06 2001-07-17 Microsoft Corporation Run time object layout model with object type that differs from the derived object type in the class structure at design time and the ability to store the optimized run time object layout model
GB2335514B (en) 1998-03-18 2003-01-22 Ibm A method and component for serialisation of images
US6292938B1 (en) 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
US7127724B2 (en) 1999-02-03 2006-10-24 International Business Machines Corporation Method and apparatus for providing protocol independent naming and life cycle services in an object-oriented system
US6477701B1 (en) 1999-09-30 2002-11-05 Seiko Epson Corporation Version-adaptive serialization and deserialization of program objects in an object-oriented environment
US6928488B1 (en) * 2001-06-27 2005-08-09 Microsoft Corporation Architecture and method for serialization and deserialization of objects
US7020641B2 (en) 2001-10-22 2006-03-28 Sun Microsystems, Inc. Method, system, and program for maintaining a database of data objects
US7509248B2 (en) * 2001-11-14 2009-03-24 Intel Corporation Generic persistence engine
US7246358B2 (en) * 2002-04-09 2007-07-17 Sun Microsystems, Inc. Methods, system and articles of manufacture for providing an extensible serialization framework for an XML based RPC computing environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000055727A2 (en) * 1999-03-17 2000-09-21 Sun Microsystems, Inc. Redundancy elimination in the persistence of object graphs
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
US20020116412A1 (en) * 2001-02-16 2002-08-22 Barnes Christine Michelle System and method for object state persistence

Also Published As

Publication number Publication date
EP1489495A2 (en) 2004-12-22
EP1489495A3 (en) 2007-01-31
KR101159310B1 (ko) 2012-06-22
JP2005011362A (ja) 2005-01-13
CN1609789A (zh) 2005-04-27
US7325226B2 (en) 2008-01-29
US20040261008A1 (en) 2004-12-23
JP4855656B2 (ja) 2012-01-18
KR20040111140A (ko) 2004-12-31

Similar Documents

Publication Publication Date Title
CN100405292C (zh) 对象串行化方法
US6023578A (en) Systems, methods and computer program products for generating an object oriented application for an object oriented environment
US6334158B1 (en) User-interactive system and method for integrating applications
US7203929B1 (en) Design data validation tool for use in enterprise architecture modeling
US6504554B1 (en) Dynamic conversion of object-oriented programs to tag-based procedural code
US6704743B1 (en) Selective inheritance of object parameters in object-oriented computer environment
US6349404B1 (en) Object-oriented repository, a system and method for reusing existing host-based application assets for the development of business-centric applications
Yoder et al. The adaptive object-model architectural style
US6637020B1 (en) Creating applications within data processing systems by combining program components dynamically
US7146544B2 (en) Method and apparatus for supporting error handling in a web presentation architecture
US7559052B2 (en) Meta-model for associating multiple physical representations of logically equivalent entities in messaging and other applications
US7739691B2 (en) Framework for declarative expression of data processing
US7363628B2 (en) Data centric and protocol agnostic workflows for exchanging data between a workflow instance and a workflow host
US20040083464A1 (en) Non-invasive rule-based binary analysis of software assemblies
US20040003091A1 (en) Accessing a remote iSeries or AS/400 computer system from an integrated development environment
US20080010082A1 (en) System and method for business process management
JPH1040087A (ja) ソフトウェア工学で使われるデータモデルの取り扱い方法
US6405363B1 (en) Class casting support for run-time extensible items in an object oriented framework
KR101027259B1 (ko) 웹 서비스의 메시지 지향 구축
JPWO2011118003A1 (ja) ウェブアプリケーション構築システム、ウェブアプリケーション構築方法、ウェブアプリケーション構築プログラムおよびウェブアプリケーション構築プログラムを記録した記録媒体
CN100405300C (zh) 使至少一个组件以独立于应用框架的方式执行异步操作的方法和计算系统
US20060282460A1 (en) Method and system for generic data objects
Cheong et al. Frame-based method for customizing generic software architectures
WO2002037336A2 (en) Object-oriented database abstraction and statement generation
EP1498813A2 (en) Design time validation of systems

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: 20150421

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

Effective date of registration: 20150421

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080723

Termination date: 20190618