JP4855656B2 - 複数のオブジェクトをシリアライズする方法 - Google Patents

複数のオブジェクトをシリアライズする方法 Download PDF

Info

Publication number
JP4855656B2
JP4855656B2 JP2004183072A JP2004183072A JP4855656B2 JP 4855656 B2 JP4855656 B2 JP 4855656B2 JP 2004183072 A JP2004183072 A JP 2004183072A JP 2004183072 A JP2004183072 A JP 2004183072A JP 4855656 B2 JP4855656 B2 JP 4855656B2
Authority
JP
Japan
Prior art keywords
serializer
custom
standard
serialization
provider
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
JP2004183072A
Other languages
English (en)
Other versions
JP2005011362A (ja
Inventor
キース.ペピン ブライアン
パトリック バーク ショーン
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 Corp
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 JP2005011362A publication Critical patent/JP2005011362A/ja
Application granted granted Critical
Publication of JP4855656B2 publication Critical patent/JP4855656B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/4493Object persistence
    • 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

Description

本発明は、オブジェクトのシリアライゼーション(serialization)に関する。より詳細には、本発明は、カスタムユーザインタフェースオブジェクト(custom user interface object)をカスタムシリアライゼーション形式でシリアライズ(serialize)するための方法、システムおよびコンピュータプログラム製品に関する。
広い意味で、シリアライゼーションとは、1つの表現または形式から別の表現または形式へのオブジェクトの変換のことである。シリアライゼーションは一般に、双方向の処理、すなわち、初期表現から他の何らかの表現へのオブジェクトの変換と、当該他の表現から初期表現への逆変換とを含意する。時々、初期表現への逆変換のことを、デシリアライゼーション(deserialization)と呼ぶこともあるが、シリアライゼーションという用語は、初期表現の初期変換と、その後の初期表現への逆変換の両方を包含する包括的な用語である。
例えば、インメモリ(in-memory)オブジェクト、またはライブ(live)オブジェクトを、永続的保存、またはネットワークを介した伝送に適した、永続的な、または一時的なオブジェクトにシリアライズすることができる。現在、保存およびデータ伝送のためのシリアライゼーション形式として、拡張可能マーク付け言語(XML:eXtensible Markup Language)を使用することが、一般に行われている。保存または伝送の後、オブジェクトのXML表現を、XML表現から、インメモリオブジェクト、またはライブオブジェクトにシリアライズ(またはデシリアライズ)することができる。シリアライゼーションを実行するソフトウェアは一般に、シリアライザ(serializer)と呼ばれる。
シリアライゼーションの別の例に、コード生成がある。図1には、インメモリまたはライブユーザインタフェースオブジェクト110を含んだ、ビジュアルユーザインタフェースデザイナ(visual user interface designer)100の一例が示されている。ユーザは、ビジュアルユーザインタフェースデザイナ100を使用して、ユーザインタフェースオブジェクトの外観を定義し、その後、ユーザインタフェースオブジェクトのソースコード表現を生成することができる。ソースコード表現は、コンパイルし、プログラム内に含めることができる。この例では、ユーザインタフェースオブジェクト110は、単純なAboutボックスであり、オブジェクトをAboutボックスとして識別するタイトル112と、Aboutボックスを最小化し、最大化し、クローズするウィンドウコントロール114と、テキスト116と、Aboutボックスを消去するOKボタン118を含んでいる。標準的なビジュアルユーザインタフェースデザイナは、表Iに示す疑似コードに類似したコードを生成する。
Figure 0004855656
表Iの疑似コードは、ビジュアルユーザインタフェースデザイナ内で行われる従来のシリアライゼーションに伴う、複数の問題を例示している。第1に、ビジュアルユーザインタフェースデザイナ内で行われる従来のシリアライゼーションは一般に、コード生成などの、単一のシリアライゼーション形式に限定される。ビジュアルユーザインタフェースデザイナにとって、コード生成は確かに重要な目的であるが、その他のタイプのシリアライゼーションが望ましいこともある。例えば、1つのビジュアルユーザインタフェースデザイナで作成されたユーザインタフェースオブジェクトを、別のビジュアルユーザインタフェースデザイナにインポートできるようにする汎用形式としては、おそらく、AboutボックスのXML表現が望ましいかもしれない。しかし、ビジュアルユーザインタフェースデザイナ内で行われる従来のシリアライゼーションは、単一の形式に緊密に結び付けられており、異なるシリアライゼーション形式を許容することができない。
表Iの疑似コードによって例示される第2の問題は、ビジュアルユーザインタフェースデザイナ内で行われる従来のシリアライゼーションが一般に、表Iに示す新しいAboutクラスのような、新しいクラスを生成することである。こうすると、新クラスのメンバーオブジェクトとの直接対話が可能になるので、コード生成にとって、新クラスの生成は一般に、望ましい挙動である。しかし、多くの操作にとって、シリアライゼーションの際の新クラスの生成は、非効率なものとなる。例えば、デザイン時の多くは、オブジェクトの視覚表現が、もっぱらまたは最も関連し、ソースコードは、視覚表現をディスクにセーブする時に必要となるだけである。表IIには、表Iに示す疑似コードと等価な表現が示されている。表Iでは、新しいタイプを生成しているのに、表IIでは、既存のタイプを構成している点が相違している。この第2の表現は、最終的なソースコードとしては有用でないこともあるが、ビジュアルデザイナ内で、アンドゥまたはコピー/ペーストなどの機能に対してライブオブジェクトの状態を維持するための包括的な方法として、使用することができる。
Figure 0004855656
第3の問題は、ビジュアルユーザインタフェースデザイナ内で行われる従来のシリアライゼーションが一般に、シリアライザを新しいタイプおよび/または新しいシリアライゼーション形式のために拡張する方法において、制約を受けることである。新しいタイプまたは形式のために、シリアライゼーションプロバイダ(serialization provider)を呼び出すことが可能であるが、従来のシリアライゼーションでは、メタデータ属性をコンパイルして、シリアライゼーションプロバイダが理解できるタイプにする必要がある。したがって、新しいシリアライゼーション形式を提供し、オブジェクト開発者が予想していなかった新しいオブジェクトタイプをシリアライズするには、再コンパイルが必要とされる。不便さはさて置き、サードパーティのオブジェクトをシリアライズする時など、ある環境では、再コンパイルができないこともある。
もちろん、ビジュアルユーザインタフェースデザイナが、オブジェクトのグラフ(a graph of objects)のためのコードを生成するソフトウェアの一例に過ぎないことに留意されたい。多くの環境では、コード生成は、オブジェクトのグラフを再生成するための、最速かつ最も効率的な方法であり得る。しかし、上述したように、従来のシリアライゼーションは、特にコード生成が関係する場面で、その有用性を制限する様々な短所を露呈する。
本発明は、カスタムオブジェクトタイプ(custom object type)およびシリアライゼーション形式を有するオブジェクトをシリアライズするための、方法、システム、およびコンピュータ製品に関する。本発明の例示的な実施形態によれば、シリアライゼーションマネージャ(serialization manager)は、標準オブジェクトタイプまたはシリアライゼーション形式用の標準シリアライザを識別するために、標準シリアライゼーションプロバイダを調整する。標準シリアライゼーションプロバイダではカバーできないカスタムオブジェクトタイプまたはシリアライゼーション形式用のカスタムシリアライザを識別するために、必要に応じて、カスタムシリアライゼーションプロバイダをロードして、シリアライゼーションマネージャを拡張することができる。利用可能なシリアライゼーションプロバイダに基づいて、シリアライゼーションマネージャは、ある特定のシリアライゼーション形式およびオブジェクトグラフ用のシリアライザを識別する。適切なシリアライザが識別されると、オブジェクトグラフは、そのシリアライザを使用して、シリアライズされる。
オブジェクトグラフは、カスタムオブジェクトタイプでも、標準オブジェクトタイプでもよい、複数の関連オブジェクトを含むことができ、シリアライゼーション形式は、標準形式でも、カスタム形式でもよい。シリアライゼーション形式の例として、ライブまたはインメモリ表現、ソースコード表現、XML(拡張可能マーク付け言語)表現などを挙げることができる。ある種のシリアライゼーション形式は、オブジェクトグラフのクラス表現を生成することなく、オブジェクトグラフ用のコード断片(a snippet of code)を生成する。これらのコード断片は、ビジュアルユーザインタフェースデザイナ内で行われる、カット/コピー/ペースト操作およびアンドゥ/リドゥ操作(undo/redo operation)にとって、特に有用である。ある実施形態においては、カスタムシリアライゼーションプロバイダからのシリアライザを使用して、標準シリアライザを置き換えることができる。シリアライザおよびそのプロバイダの間の調整およびモジュラリティの向上を助けるために、シリアライゼーションマネージャは、コンテキスト情報(context information)を維持し、共用することができる。
本発明のさらなる特徴および利点を、以下の説明に記載する。本発明の特徴および利点は、部分的にはその説明から明らかとなろう。または本発明を実施することにより会得されよう。本発明の特徴および利点は、添付の特許請求の範囲で具体的に示される装置およびその組み合わせによって実現させ、これを取得することができるであろう。本発明の上記およびその他の特徴は、以下の説明と添付の特許請求の範囲からより十分に明らかとなろう。または以下に記載するように本発明を実施することにより会得されよう。
本発明の上記およびその他の利点および特徴を取得できる方法を説明するために、上で簡単に行ったものより具体的な本発明の説明を、添付の図面に示された本発明の具体的な実施形態を参照しながら行う。それらの図面が、本発明の典型的な実施形態を示したものに過ぎず、したがって、本発明の範囲を限定するものと考えるべきではないという理解の下で、添付の図面を使用して、さらに具体的かつ詳細に、本発明を記述し、説明する。
本発明は、カスタムオブジェクトタイプおよびシリアライゼーション形式を有する、ユーザインタフェースオブジェクトをシリアライズするための、方法、システム、およびコンピュータプログラム製品に関する。本発明の実施形態は、以下でより詳細に説明するように、様々なコンピュータハードウェアを含む、1つ以上の専用コンピュータ、および/または1つ以上の汎用コンピュータを含むことができる。
図2には、本発明による、例示的なシリアライゼーションマネージャ200が示されている。シリアライゼーションマネージャ200は、標準シリアライザ224を有する標準シリアライゼーションプロバイダ220と、カスタムシリアライザ244を有するカスタムシリアライゼーションプロバイダ240を含む。標準シリアライザ224またはカスタムシリアライザ244などのシリアライザは、特定のオブジェクトタイプまたはオブジェクトタイプ範囲を特定のシリアライゼーション形式にシリアライズする機能をもったオブジェクトである。一般に、1つのオブジェクトタイプを異なるシリアライゼーション形式にシリアライズするには、異なるシリアライザが使用され、いくつかの実施においては、異なるシリアライゼーション形式を提供するシリアライゼーションプロバイダ用に、別々のベースクラス(base class)が存在する。例えば、以下でより詳細に説明するように、XmlSerializerベースクラスを使用して、オブジェクトをXML(拡張可能マーク付け言語)に変換することができる。異なるシリアライザおよびシリアライゼーションプロバイダを使用して、異なるオブジェクトタイプを1つのシリアライゼーション形式にシリアライズすることもできる。
標準シリアライゼーションプロバイダ220およびカスタムシリアライゼーションプロバイダ240などのシリアライゼーションプロバイダは、特定のオブジェクトタイプおよびシリアライゼーション形式のための、個々のシリアライザを識別する。例えば、標準シリアライゼーションプロバイダ220は、標準オブジェクトを標準シリアライゼーション形式にシリアライズするために、標準シリアライザ224を識別することができる。その他の標準シリアライザ226は、異なるオブジェクトタイプを同じ標準シリアライゼーション形式にシリアライズするために、または同じ標準オブジェクトタイプを異なる標準シリアライゼーション形式にシリアライズするために、使用することができる。同様に、カスタムシリアライゼーションプロバイダ240は、カスタムオブジェクトをカスタムシリアライゼーション形式にシリアライズするために、カスタムシリアライザ224を識別することができ、その他のカスタムシリアライザ246は、異なるオブジェクトタイプを同じカスタムシリアライゼーション形式にシリアライズするために、または同じカスタムオブジェクトタイプを異なるカスタムシリアライゼーション形式にシリアライズするために、使用することができる。もちろん、シリアライゼーションマネージャ200は、その他の標準シリアライゼーションプロバイダ230、およびその他のカスタムシリアライゼーションプロバイダ250を含むことができる。
シリアライゼーションマネージャ200はまた、様々なシリアライザがオブジェクトグラフをシリアライズする際に使用する情報記憶である、シリアライゼーションコンテキスト情報210も提供する。例えば、複数のオブジェクトを有するオブジェクトグラフは、それ独自の出力を生成する複数のシリアライザを必要とする場合がある。シリアライゼーションマネージャ200は、必要に応じて、これらのシリアライザ間の情報交換を効率化する。
シリアライゼーションマネージャ200内では、メタデータ属性を使用して、個々のオブジェクトタイプを特定のシリアライザに関係付けることができる。例えば、以下でより詳細に説明するように、デフォルトシリアライゼーションプロバイダ属性を使用して、シリアライザをもたないオブジェクトタイプのためのシリアライゼーションプロバイダをロードまたはインストールすることができ、または既存のシリアライザを置き換えることができる。標準シリアライゼーションプロバイダ220またはカスタムシリアライゼーションプロバイダ240などのシリアライゼーションプロバイダ内では、所与のオブジェクトタイプおよびシリアライゼーション形式にとって適切なシリアライザを識別する際に、やはりメタデータ属性を使用することができる。
一例として、表IIIに示すXML形式について考察する。
Figure 0004855656
このXML形式は、表IVに示す疑似コードクラスXmlSerializerを使用して、シリアライズされる。
Figure 0004855656
XmlSerializerは、小さな断片から文字列を組み立てるモジュラクラスである。例えば、整数値5をもったInt32データタイプを渡された場合、XmlSerializerは「5」を返す。
表IIIのXML形式は、シリアライズする2つの基本オブジェクトタイプ、すなわち、プロパティを有するオブジェクトおよびテキストに変換できるオブジェクトを示している。ほとんどの状況では、すべてのクラスに当該クラスをどのようにテキストまたはXMLタグに変換すべきかを知っているカスタムシリアライザを装備しようとすると、非常な労力が必要となり、新しいシリアライゼーション形式を導入する際にはメンテナンス問題が発生する(既存クラスを新しいシリアライゼーション形式にシリアライズするには、新しい属性をクラスに導入するが、それには既存クラスの再コンパイルが必要となる)。シリアライゼーションプロバイダは、コールバック機構によってこの問題に対処し、プロバイダは、この機構の中で、与えられたタイプにシリアライザを提供する機会を与えられる。
現在の例では、タイプの利用可能な組は、以下のように限定されている。
1.既存のIConvertibleインタフェースによって、そのタイプを文字列に変換できる場合、StringXmlSerializerが識別される。
2.そのタイプは文字列に変換できないが、パブリック型であり、空コンストラクタを有する場合、ObjectXmlSerializerが識別される。
3.上記のどちらにも当てはまらない場合、シリアライゼーションプロバイダは、当該オブジェクト用のシリアライザが存在しないことを示す空値を返す(このエラー状態の対処方法は、呼び出しシリアライザ側で決められる)。
上記の基準を実施する疑似コードを、以下の表Vに示す。
Figure 0004855656
シリアライゼーションプロバイダは、定義してから、使用することができる。明示的addメソッドによって、このシリアライゼーションプロバイダを、シリアライゼーションマネージャ200に与えることができるが、この手法では、誰かが明示的呼び出しを行う必要がある。代替的に、シリアライザベースクラスにDefaultSerializationProviderAttributeを追加することによって、シリアライゼーションプロバイダを自動的にシリアライゼーションマネージャ200に追加することができる。この例では、シリアライゼーションプロバイダがパブリック型の空コンストラクタを有することを、属性は必要とする。したがって、表IVの疑似コードは、以下の表VIに示すように変更される。
Figure 0004855656
シリアライゼーションマネージャ200に何らかのタイプのXmlSerializerが要求された時、デフォルトシリアライゼーションプロバイダがまだ追加されていない場合、それを自動的にシリアライゼーションマネージャに追加する。この属性は、オブジェクトではなく、シリアライザに関係付けられているので、新しい属性を使用するためにクラスを再コンパイルしなくても、新しいシリアライゼーション形式を追加することができることに留意されたい。
先に指摘したように、例示的なXmlSerializerは、2つの明確なシリアライザクラス、StringXmlSerializerおよびObjectXmlSerializerを有する。表VIIには、StringXmlSerializerの疑似コードによる実施が示されている。
Figure 0004855656
Figure 0004855656
表VIIIには、ObjectXmlSerializerの疑似コードによる実施が示されており、 ObjectXmlSerializerは、それがシリアライズするオブジェクトのパブリックプロパティを1つずつ調査(walk)する。
Figure 0004855656
Figure 0004855656
Figure 0004855656
ObjectXmlSerializerが、プロパティ値毎に別のシリアライザを呼び出すことに留意されたい。これには少なくとも2つの利点がある。第1の利点は、ObjectXmlSerializerが非常に単純になることである。第2の利点は、サードパーティタイプ用の拡張点(extensibility point)が提供されることである。このどちらのシリアライザによっても記述し切れないタイプが出現した場合には、カスタムシリアライザをそのタイプに提供することができる。
表IXには、上記のシリアライザをSystem.Drawing.Rectangleオブジェクトに使用した例が示されている。このオブジェクトは、空コンストラクタと4つのプロパティを有し、どのプロパティも、文字列変換のためのIConvertibleをサポートする。表IXでは、シリアライゼーションマネージャIDesignerSerializationManagerのインスタンスが生成され、シリアライザの識別を求められる。次に、識別されたシリアライザが、オブジェクトをシリアライズする。
Figure 0004855656
表IXの使用例によって、表Xに示すXMLが生成される。
Figure 0004855656
この例には、XMLインデントはまったく含まれていないことに留意されたい。しかし、シリアライゼーションマネージャ200のシリアライゼーションコンテキスト情報(serialization context information)210を使用することによって、インデントを容易に実現することができる。各シリアライザレベル(serializer level)は、コンテキストスタック(context stack)に、現在のインデントレベルを含むオブジェクトを追加することができ、各シリアライザは、スタック内のレベルコンテキスト(level context)オブジェクトを検索し、それを使用して、適切なインデントを提供することができる。
シリアライゼーションマネージャ200は、オブジェクトを異なるシリアライゼーション形式にシリアライズする機能を有する。上述のXMLシリアライゼーションとは対照的に、以下の例は、コード生成形式に関連している。本発明の例示的な実施形態によれば、XMLを生成するシリアライゼーションプロバイダと、ソースコードを生成するシリアライゼーションプロバイダは、シリアライゼーションマネージャ200内に共存できることに留意されたい。すでに図1に示したように、オブジェクトをソースコードにシリアライズするのに、複数の方法が存在する。例えば、OKボタンを1つだけもつフォームを例に考察する。そのようなフォームを定義する標準的な方法の1つを、以下の表XIに示す。
Figure 0004855656
表XIの疑似コードは、「Form1」オブジェクトタイプの新しいクラスを定義する。しかし、オブジェクトグラフのルートが新しいタイプを定義するようにしたのは、恣意的な選択に過ぎない。コードは、表XIIに示すように、書き表わすこともできる。
Figure 0004855656
いずれの場合でも、ボタンを1つ有するフォームが、結果的に生成される。しかし、表XIIに示すコード断片のほうが、オブジェクトグラフの「ルート」以外のすべてのオブジェクトにとって一般により望ましく、ビジュアルデザイナ内で行われるカット/コピー/ペースト操作およびアンドゥ/リドゥ操作にとってより有用である。これらの操作にとって、新しいオブジェクトの生成は、少なくとも最初は、不必要で好ましくない場合があり、したがって、回避する何らかの追加の努力が必要となる。多くの場合、フォームは、表XIIに示す形式で、容易に表現することができる。したがって、例示的な実施形態では、シリアライゼーションマネージャ200は、2つの異なるベースシリアライゼーションタイプ、すなわち、与えられたオブジェクトを単に生成し、設定する、CodeDomSerializerと、新しいタイプを定義する、TypeCodeDomSerializerを有する。これらのシリアライザは、シリアライゼーションマネージャ200内に共存することができる。
例示的なCodeDomSerializerクラスを、以下の表XIIIに示す。
Figure 0004855656
Serializeメソッドは、与えられたオブジェクトをシリアライズする。その戻り値は、必要とされるシリアライゼーションのタイプに依存し、以下のいずれか一方とすることができる。
CodeExpression: オブジェクトを簡単な表現(a simple expression)にシリアライズすることができる場合、CodeExpressionが返される。プリミティブは、そのコンストラクタ内で生成でき、設定できるタイプと同様、このカテゴリに入る。
CodeStatementCollection: オブジェクトをステートメントの集まりにシリアライズすることができる場合、CodeStatementCollectionが返される。コンストラクション(construction)と設定すべき1つ以上のプロパティを必要とする複雑なオブジェクトは、このカテゴリに入る。
SerializePropertyメソッドは、与えられたオブジェクトのプロパティをシリアライズする。このタイプのシリアライゼーションを使用するための1つのモデルは、以下のようになる。
1.与えられたプロパティタイプ用のシリアライザをシリアライゼーションマネージャに要求する。
2.返されたシリアライザ上でSerializePropertyを呼び出す。
3.結果をユーザのシリアライゼーションデータに組み入れる。
SerializePropertyの戻り値は、必要とされるシリアライゼーションのタイプに依存し、以下のいずれか一方とすることができる。
CodeStatement: プロパティを1つのステートメントにシリアライズすることができる場合、CodeStatementが返される。大多数のプロパティは、このカテゴリに入る。
CodeStatementCollection: プロパティをステートメントの集まりにシリアライズすることができる場合、CodeStatementCollectionが返される。コレクションなどの複雑なプロパティは、このカテゴリに入る。
Deserializeメソッドは、与えられたシリアライゼーションデータから構成された、ライブオブジェクトを返す。「ステート(state)」として渡されたオブジェクトは、直前のSerializeコールから戻されたオブジェクトと同タイプのオブジェクトとする。
TypeCodeDomSerializerクラスは、CodeDomSerializerが実行するのと同じタスクを実行するが、このクラスによるオブジェクトのシリアライゼーションは、新しいタイプを定義する。例示的なTypeCodeDomSerializerクラスを、以下の表XIVに示す。
Figure 0004855656
Serializeメソッドは、与えられたルートオブジェクトと、メンバの任意選択のコレクションをシリアライズして、新しいタイプの定義を生成する。メンバコレクションは、空値または空とすることができる。メンバコレクションが値を含んでいる場合、それらの値は、タイプに関するメンバ変数として定義される。便宜的に、メンバコレクションは、ルートオブジェクトを含むことができる。その場合、ルートオブジェクトは、メンバとして追加されない。Deserializeメソッドは、先にシリアライズされたコードタイプ宣言をデシリアライズする。このメソッドは、タイプ宣言のベースタイプのインスタンスを生成し、またプロパティを設定し、メソッドを実行することによって、当該インスタンスを構成する。
本発明はまた、関数的ステップおよび/または非関数的動作を含む方法によっても、説明することができる。以下に、本発明を実施する際に実行可能な動作およびステップの説明を示す。通常、関数的ステップは、達成された結果によって本発明を説明し、非関数的動作は、特定の結果を得るためのより具体的なアクションを説明する。関数的ステップおよび非関数的動作は、特定の順序で説明または特許請求することができるが、本発明は、動作および/またはステップの特定の順序または組み合わせに、必ずしも限定されるものではない。
図3には、本発明による、ユーザインタフェースオブジェクトをシリアライズする方法の、例示的な動作およびステップが示されている。標準オブジェクトタイプまたはシリアライゼーション形式のための、1つ以上の標準シリアライザを識別する、1つ以上の標準シリアライゼーションプロバイダを調整(coordinate)するステップ(310)と、1つ以上の標準シリアライゼーションプロバイダではカバーできない1つ以上のカスタムオブジェクトタイプまたはシリアライゼーション形式のための、1つ以上のカスタムシリアライザを識別する、1つ以上のカスタムシリアライゼーションプロバイダを、必要であれば、ロードするステップ(310)は、シリアライゼーションマネージャを提供する動作(312)を含むことができる。
特定のシリアライゼーション形式のための、および特定のオブジェクトタイプのオブジェクトを含むオブジェクトグラフのためのシリアライザを識別するステップ(320)は、シリアライゼーションマネージャにシリアライザを要求する動作(322)を含むことができる。シリアライゼーションを行うステップ(330)は、シリアライゼーションマネージャから返されたシリアライザを呼び出して、オブジェクトグラフをシリアライズする動作(332)を含むことができる。コンテキスト情報を維持するステップ(図示せず)は、シリアライゼーションマネージャにコンテキスト情報を保存する動作(図示せず)を含むことができる。標準シリアライザをカスタムシリアライザで置き換えるステップ(図示せず)は、1つ以上のカスタムシリアライザを識別する1つ以上のシリアライゼーションプロバイダをロードするために、シリアライゼーションマネージャを提供する動作(312)を含むことができる。
カスタムシリアライザおよびシリアライゼーションプロバイダは、シリアライザを求める要求に応答して、ロードされることができる。シリアライズされるオブジェクトグラフは、複数の関連オブジェクトを含む。シリアライザは、カット/コピー/ペースト操作またはアンドゥ/リドゥ操作の一環として、オブジェクトグラフのクラス表現ではなく、コード断片を生成することができる。シリアライザは、オブジェクトグラフをシリアライズまたはデシリアライズすることができ、オブジェクトの、ライブまたはインメモリのXML表現、ソースコード表現、またはその他の表現を生成することができる。
本発明の範囲内の実施形態はまた、そこに格納されたコンピュータ実行可能命令またはデータ構造を搬送あるいは保持するための、コンピュータ可読媒体を含むこともできる。そのようなコンピュータ可読媒体は、汎用または専用コンピュータによってアクセス可能な任意の媒体とすることができる。例えば、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク記憶媒体、磁気ディスク記憶または他の磁気記憶装置、またはコンピュータ実行可能命令またはデータ構造の形態をとる所望のプログラムコード手段を搬送または保存するのに使用でき、汎用または専用コンピュータによってアクセス可能な他の任意の媒体を含むことができるが、これらに限定されるものではない。情報を、ネットワークまたは別の通信コネクション(有線、無線、または有線と無線の組み合わせ)を介して、コンピュータに伝送または提供する場合、コンピュータは、そのコネクションをコンピュータ可読媒体として適切に認識する。したがって、任意のそのようなコネクションを、コンピュータ可読媒体と呼んでも差し支えない。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれるとする。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に、ある種の機能または機能グループを実行させる、命令およびデータを含む。
図4および以下の説明は、本発明を実施することができる適切なコンピューティング環境についての、簡潔で一般的な説明を提供することを意図している。必ずしも必要ではないが、ネットワーク環境内のコンピュータで実行される、プログラムモジュールなどのコンピュータ実行可能命令を用いる一般的状況において、本発明を説明する。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実装する、ルーチン、プログラム、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連データ構造、およびプログラムモジュールは、本明細書で開示される方法の諸ステップを実行する、プログラムコード手段の例を表わす。特定の順序に並べられた、そのような実行可能命令または関連データ構造は、前記諸ステップ内で説明される機能を実施するための対応する動作を表わす。
本発明を、パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを始めとする、様々なタイプのコンピュータシステム構成を含む、ネットワークコンピューティング環境で実施できることは、当業者であれば理解されよう。本発明は、通信ネットワークを介して(有線リンク、無線リンク、または有線と無線を組み合わせたリンクによって)接続されたローカル処理装置とリモート処理装置がタスクを実行する、分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリ記憶装置とリモートメモリ記憶装置に配置することができる。
図4を参照すると、本発明を実施するための例示的なシステムは、従来型コンピュータ420の形態をとる汎用コンピューティング装置を含み、汎用コンピューティング装置は、プロセッシングユニット421、システムメモリ422、およびシステムメモリ422を始めとする様々なシステムコンポーネントをプロセッシングユニット421に結合するシステムバス423を含む。システムバス423は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む複数のタイプのバス構造のいずれとすることもできる。システムメモリには、ROM(読み取り専用メモリ)424およびRAM(ランダムアクセスメモリ)425が含まれる。BIOS(基本入出力システム)426は、起動時などにコンピュータ420の構成要素間の情報伝送を助ける基本ルーチンを含み、ROM424に格納することができる。
コンピュータ420はまた、磁気ハードディスク439に対して読み書きを行うための磁気ハードディスクドライブ427、着脱可能磁気ディスク429に対して読み書きを行うための磁気ディスクドライブ428、CD−ROMまたは他の光媒体などの着脱可能光ディスク431に対して読み書きを行うための光ディスクドライブ430も含む。磁気ハードディスクドライブ427、磁気ディスクドライブ428、および光ディスクドライブ430は、それぞれハードディスクドライブインタフェース432、磁気ディスクドライブインタフェース433、および光ドライブインタフェース434によって、システムバス423に接続される。ドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、およびコンピュータ420用のその他のデータの不揮発性記憶を提供する。本明細書で説明する例示的な環境では、磁気ハードディスク439、着脱可能磁気ディスク429、および着脱可能光ディスク431を使用するが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌイカートリッジ、RAM、ROMなどを始めとする、データ保存用のその他のタイプのコンピュータ可読媒体を使用することもできる。
1つ以上のプログラムモジュールからなるプログラムコード手段は、ハードディスク439、磁気ディスク429、光ディスク431、ROM424、またはRAM425に格納することができ、プログラムコード手段には、オペレーティングシステム435、1つ以上のアプリケーションプログラム436、その他のプログラムモジュール437、およびプログラムデータ438が含まれる。ユーザは、キーボード440、ポインティングデバイス442、またはマイクロホン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなど、その他の入力デバイス(図示せず)を用いて、コマンドおよび情報をコンピュータ420に入力することができる。上記およびその他の入力デバイスはしばしば、システムバス423に結合されたシリアルポートインタフェース446を介して、プロセッシングユニット421に接続される。代替的には、入力デバイスは、パラレルポート、ゲームポート、またはUSB(汎用シリアルバス)など、その他のインタフェースによって接続することもできる。モニタ447または別の表示装置も、ビデオアダプタ448などのインタフェースを介して、システムバス423に接続される。モニタに加え、パーソナルコンピュータは一般に、スピーカ、プリンタなど、その他の周辺出力装置(図示せず)を含む。
コンピュータ420は、リモートコンピュータ449a、449bなどの1つ以上のリモートコンピュータへの論理コネクションを用いて、ネットワーク環境で動作することができる。リモートコンピュータ449a、449bはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、またはその他の共通ネットワークノードとすることができ、一般にコンピュータ420に関して上で述べた構成要素の多くまたはすべてを含むことができるが、図4にはメモリ記憶装置450a、450bおよびそれに関連するアプリケーションプログラム436a、436bだけが示されている。図4に示す論理コネクションには、LAN(ローカルエリアネットワーク)451およびWAN(ワイドエリアネットワーク)452が含まれるが、これらは例としてここに示したに過ぎず、限定を意図したものではない。このようなネットワーク環境は、オフィス規模または企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
コンピュータ420は、LANネットワーク環境で使用される場合、ネットワークインタフェースまたはアダプタ453を介してローカルネットワーク451に接続される。コンピュータ420は、WANネットワーク環境で使用される場合、モデム454、無線リンク、またはインターネットなどのワイドエリアネットワーク452を介して通信を確立するための他の手段を含む。モデム454は、内蔵でも外付けでもよく、シリアルポートインタフェース446を介してシステムバス423に接続することができる。ネットワーク環境では、コンピュータ420に関して示したプログラムモジュールまたはその部分は、リモートメモリ記憶装置に保存することができる。図示のネットワークコネクションは例示的なものであり、ワイドエリアネットワーク452を介して通信を確立するその他の手段も使用できることは理解されよう。
本発明は、その主旨または本質的特徴から逸脱することなく、その他の具体的形態で実施することができる。説明した実施形態は、すべての点において、説明のためのものに過ぎず、何ら限定を課すものではないと考えられたい。したがって、本発明の範囲は、上述した説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲と同等の意味および範囲に入るすべての変更は、特許請求の範囲に包含されるとされたい。
本発明に従ってシリアライズすることができる、例示的なユーザインタフェースオブジェクトを含んだ、例示的なビジュアルユーザインタフェースデザイナを示した図である。 本発明による、例示的なシリアライゼーションマネージャを示した図である。 本発明による、ユーザインタフェースオブジェクトをシリアライズする方法の、例示的な動作およびステップを示した図である。 本発明にとって適切な動作環境を提供する、例示的なシステムを示した図である。
符号の説明
100 ビジュアルユーザインタフェースデザイナ
110 ユーザインタフェースオブジェクト
112 タイトル
114 ウィンドウコントロール
116 テキスト
118 OKボタン
200 シリアライゼーションマネージャ
210 シリアライゼーションコンテキスト情報
220 標準シリアライゼーションプロバイダ
224 標準シリアライザ
226 その他の標準シリアライザ
230 その他の標準シリアライゼーションプロバイダ
240 カスタムシリアライゼーションプロバイダ
244 カスタムシリアライザ
246 その他のカスタムシリアライザ
250 その他のカスタムシリアライゼーションプロバイダ
420 コンピュータ
421 プロセッシングユニット
422 システムメモリ
423 システムバス
424 ROM(読み取り専用メモリ)
425 RAM(ランダムアクセスメモリ)
426 BIOS(基本入出力システム)
427 磁気ハードディスクドライブ
428 磁気ディスクドライブ
429 着脱可能磁気ディスク
430 光ディスクドライブ
431 着脱可能光ディスク
432 ハードディスクドライブインタフェース
433 磁気ディスクドライブインタフェース
434 光ドライブインタフェース
435 オペレーティングシステム
436 アプリケーションプログラム
437 その他のプログラムモジュール
438 プログラムデータ
439 磁気ハードディスク
440 キーボード
442 ポインティングデバイス
446 シリアルポートインタフェース
447 モニタ
448 ビデオアダプタ
449 リモートコンピュータ
450 メモリ記憶装置
451 LAN(ローカルエリアネットワーク)
452 WAN(ワイドエリアネットワーク)
453 ネットワークインタフェースまたはアダプタ
454 モデム

Claims (15)

  1. コンピュータシステムにおいて複数のオブジェクトをシリアライズする方法であって、標準オブジェクトタイプのオブジェクトを標準シリアライゼーション形式でシリアライズする標準シリアライザを識別する標準シリアライゼーションプロバイダを含んでいるシリアライゼーションマネージャをプロセッシングユニットがシステムメモリ上にロードする動作と、
    前記標準シリアライゼーションプロバイダが、メタデータ属性を使用して、オブジェクトタイプを特定のシリアライザに関係付けることにより、オブジェクトグラフに含まれるオブジェクトの標準オブジェクトタイプに関係付けられる前記標準シリアライザを識別する動作であって、前記オブジェクトグラフは、標準オブジェクトタイプまたはカスタムオブジェクトタイプである複数のオブジェクトを含む、前記標準シリアライザを識別する動作と、
    前記オブジェクトグラフに、前記標準シリアライゼーションプロバイダではカバーされない、カスタムオブジェクトタイプのオブジェクトが含まれる場合、前記シリアライゼーションマネージャが、前記カスタムオブジェクトタイプのオブジェクトをカスタムシリアライゼーション形式でシリアライズするカスタムシリアライザを識別する、カスタムシリアライゼーションプロバイダを前記システムメモリ上にロードする動作と、
    前記オブジェクトグラフに、前記カスタムオブジェクトタイプのオブジェクトが含まれる場合、前記カスタムシリアライゼーションプロバイダが、メタデータ属性を使用して、オブジェクトタイプを特定のシリアライザに関係付けることにより、前記オブジェクトグラフに含まれるオブジェクトのカスタムオブジェクトタイプに関係付けられる前記カスタムシリアライザを識別する動作と、
    前記識別された標準シリアライザ、および/または前記識別されたカスタムシリアライザを、前記シリアライゼーションマネージャに前記プロセッシングユニットが要求する動作と、
    前記要求された標準シリアライザおよび/または前記要求されたカスタムシリアライザを呼び出して前記オブジェクトグラフに含まれる複数のオブジェクトを前記プロセッシングユニットがシリアライズする動作と
    を備えることを特徴とする方法。
  2. 請求項1に記載の方法であって、前記コンピュータシステムは、前記システムメモリ上にロードされるビジュアルユーザインタフェースデザイナを備え、前記オブジェクトグラフは、ユーザインタフェースオブジェクトを含むことを特徴とする方法。
  3. 請求項1に記載の方法であって、前記システムメモリ上にロードされた前記シリアライゼーションマネージャは、前記標準シリアライゼーションプロバイダ、および前記シリアライゼーションマネージャによってロードされる前記カスタムシリアライゼーションプロバイダの間で共用することができて、前記要求された標準シリアライザ、および/または前記要求されたカスタムシリアライザが前記オブジェクトグラフに含まれる複数のオブジェクトをシリアライズするのに使用するコンテキスト情報を保持することを特徴とする方法。
  4. 請求項1に記載の方法であって、前記標準シリアライゼーションプロバイダは、複数の標準シリアライザを識別することが可能であり、前記複数の標準シリアライザのうちの少なくとも2つは、異なるシリアライゼーション形式で前記オブジェクトグラフに含まれる複数のオブジェクトをシリアライズすることを特徴とする方法。
  5. 請求項1に記載の方法であって、前記要求された標準シリアライザおよび/または前記要求されたカスタムシリアライザは、前記オブジェクトグラフの拡張可能マーク付け言語表現を生成することを特徴とする方法。
  6. 複数のユーザインタフェースオブジェクトをシリアライズするためにコンピュータシステムに実行させるコンピュータプログラムであって、前記コンピュータシステムに、
    標準オブジェクトタイプのオブジェクトを標準シリアライゼーション形式でシリアライズする標準シリアライザを識別する標準シリアライゼーションプロバイダを含んでいるシリアライゼーションマネージャをシステムメモリ上にロードする手順と、
    前記標準シリアライゼーションプロバイダが、メタデータ属性を使用して、オブジェクトタイプを特定のシリアライザに関係付けることにより、オブジェクトグラフに含まれるオブジェクトの標準オブジェクトタイプに関係付けられる前記標準シリアライザを識別する手順であって、前記オブジェクトグラフは、標準オブジェクトタイプまたはカスタムオブジェクトタイプである複数のユーザインタフェースオブジェクトを含む、前記標準シリアライザを識別する手順と、
    前記オブジェクトグラフに、前記標準シリアライゼーションプロバイダではカバーされない、カスタムオブジェクトタイプのオブジェクトが含まれる場合、前記シリアライゼーションマネージャが、前記カスタムオブジェクトタイプのオブジェクトをカスタムシリアライゼーション形式でシリアライズするカスタムシリアライザを識別する、カスタムシリアライゼーションプロバイダを前記システムメモリ上にロードする手順と、
    前記オブジェクトグラフに、前記カスタムオブジェクトタイプのオブジェクトが含まれる場合、前記カスタムシリアライゼーションプロバイダが、メタデータ属性を使用して、オブジェクトタイプを特定のシリアライザに関係付けることにより、前記オブジェクトグラフに含まれるオブジェクトのカスタムオブジェクトタイプに関係付けられる前記カスタムシリアライザを識別する手順と、
    前記識別された標準シリアライザ、および/または前記識別されたカスタムシリアライザを、前記シリアライゼーションマネージャに要求する手順と、
    前記要求された標準シリアライザおよび/または前記要求されたカスタムシリアライザを呼び出して前記オブジェクトグラフに含まれる複数のユーザインタフェースオブジェクトをシリアライズする手順と
    を実行させることを特徴とするコンピュータプログラム。
  7. 請求項に記載のコンピュータプログラムであって、前記シリアライゼーションマネージャは、前記標準シリアライゼーションプロバイダ、および前記シリアライゼーションマネージャによってロードされる前記カスタムシリアライゼーションプロバイダの間で共用することができて、前記要求された標準シリアライザ、および/または前記要求されたカスタムシリアライザが前記オブジェクトグラフに含まれる複数のユーザインタフェースオブジェクトをシリアライズするのに使用するコンテキスト情報を保持することを特徴とするコンピュータプログラム。
  8. 請求項に記載のコンピュータプログラムであって、前記カスタムシリアライゼーションプロバイダは、複数のカスタムシリアライザを識別することが可能であり、前記複数のカスタムシリアライザのうちの少なくとも2つは、異なるシリアライゼーション形式で前記オブジェクトグラフに含まれる複数のユーザインタフェースオブジェクトをシリアライズすることを特徴とするコンピュータプログラム。
  9. 請求項に記載のコンピュータプログラムであって、前記要求された標準シリアライザおよび/または前記要求されたカスタムシリアライザは、前記オブジェクトグラフのソースコードを生成することを特徴とするコンピュータプログラム。
  10. コンピュータシステムにおいて複数のユーザインタフェースオブジェクトをシリアライズする方法であって、
    標準オブジェクトタイプのオブジェクトを標準シリアライゼーション形式でシリアライズする標準シリアライザを識別する標準シリアライゼーションプロバイダをプロセッシングユニットがシステムメモリ上にロードするステップと、
    前記標準シリアライゼーションプロバイダが、メタデータ属性を使用して、オブジェクトタイプを特定のシリアライザに関係付けることにより、オブジェクトグラフに含まれるオブジェクトの標準オブジェクトタイプに関係付けられる前記標準シリアライザを識別するステップであって、前記オブジェクトグラフは、標準オブジェクトタイプまたはカスタムオブジェクトタイプである複数のオブジェクトを含む、前記標準シリアライザを識別するステップと、
    前記オブジェクトグラフに、前記標準シリアライゼーションプロバイダによってカバーされない、カスタムオブジェクトタイプのオブジェクトが含まれる場合、カスタムオブジェクトタイプのオブジェクトをカスタムシリアライゼーション形式でシリアライズするカスタムシリアライザを識別するカスタムシリアライゼーションプロバイダを前記プロセッシングユニットが前記システムメモリ上にロードするステップと、
    前記オブジェクトグラフに、前記カスタムオブジェクトタイプのオブジェクトが含まれる場合、前記カスタムシリアライゼーションプロバイダが、メタデータ属性を使用して、オブジェクトタイプを特定のシリアライザに関係付けることにより、前記オブジェクトグラフに含まれるオブジェクトのカスタムオブジェクトタイプに関係付けられる前記カスタムシリアライザを識別するステップと、
    前記識別された標準シリアライザ、および/または前記識別されたカスタムシリアライザを呼び出して前記オブジェクトグラフに含まれる複数のユーザインタフェースオブジェクトを前記プロセッシングユニットがシリアライズするステップと
    を備えることを特徴とする方法。
  11. 請求項10に記載の方法であって、前記システムメモリ上にロードされた前記標準シリアライゼーションプロバイダおよび前記カスタムシリアライゼーションプロバイダの間で共用することができて、前記識別された標準シリアライザ、および/または前記識別されたカスタムシリアライザが前記オブジェクトグラフに含まれる複数のユーザインタフェースオブジェクトをシリアライズするのに使用するコンテキスト情報を前記プロセッシングユニットが保持するステップをさらに備えることを特徴とする方法。
  12. 請求項10に記載の方法であって、前記識別された標準シリアライザ、および/または前記識別されたカスタムシリアライザは、前記オブジェクトグラフのソースコードまたは拡張可能マーク付け言語表現のいずれかを生成することを特徴とする方法。
  13. 複数のユーザインタフェースオブジェクトをシリアライズするためにコンピュータシステムに実行させるコンピュータプログラムであって、前記コンピュータシステムに、
    標準オブジェクトタイプのオブジェクトを標準シリアライゼーション形式でシリアライズする標準シリアライザを識別する標準シリアライゼーションプロバイダをシステムメモリ上にロードする手順と、
    前記標準シリアライゼーションプロバイダが、メタデータ属性を使用して、オブジェクトタイプを特定のシリアライザに関係付けることにより、オブジェクトグラフに含まれるオブジェクトの標準オブジェクトタイプに関係付けられる前記標準シリアライザを識別する手順であって、前記オブジェクトグラフは、標準オブジェクトタイプまたはカスタムオブジェクトタイプである複数のユーザインタフェースオブジェクトを含む、前記標準シリアライザを識別する手順と、
    前記オブジェクトグラフに、前記標準シリアライゼーションプロバイダによってカバーされない、カスタムオブジェクトタイプのオブジェクトが含まれる場合、カスタムオブジェクトタイプのオブジェクトをカスタムシリアライゼーション形式でシリアライズするカスタムシリアライザを、識別するカスタムシリアライゼーションプロバイダを前記システムメモリ上にロードする手順と、
    前記オブジェクトグラフに、前記カスタムオブジェクトタイプのオブジェクトが含まれる場合、前記カスタムシリアライゼーションプロバイダが、メタデータ属性を使用して、オブジェクトタイプを特定のシリアライザに関係付けることにより、前記オブジェクトグラフに含まれるオブジェクトのカスタムオブジェクトタイプに関係付けられる前記カスタムシリアライザを、識別する手順と
    前記識別された標準シリアライザ、および/または前記識別されたカスタムシリアライザを呼び出して前記オブジェクトグラフに含まれる複数のユーザインタフェースオブジェクトをがシリアライズする手順と
    を実行させることを特徴とするコンピュータプログラム。
  14. 請求項13に記載のコンピュータプログラムであって、前記コンピュータシステムに、前記標準シリアライゼーションプロバイダおよび前記カスタムシリアライゼーションプロバイダの間で共用することができて、前記識別された標準シリアライザ、および/または前記識別されたカスタムシリアライザがオブジェクトグラフに含まれる複数のユーザインタフェースオブジェクトをシリアライズするのに使用するコンテキスト情報を保持する手順をさらに実行させることを特徴とするコンピュータプログラム。
  15. 請求項13に記載のコンピュータプログラムであって、前記識別された標準シリアライザ、および/または前記識別されたカスタムシリアライザは、前記オブジェクトグラフのソースコードまたは拡張可能マーク付け言語表現のいずれかを生成することを特徴とするコンピュータプログラム。
JP2004183072A 2003-06-19 2004-06-21 複数のオブジェクトをシリアライズする方法 Expired - Fee Related JP4855656B2 (ja)

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
JP2005011362A JP2005011362A (ja) 2005-01-13
JP4855656B2 true JP4855656B2 (ja) 2012-01-18

Family

ID=33418568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004183072A Expired - Fee Related JP4855656B2 (ja) 2003-06-19 2004-06-21 複数のオブジェクトをシリアライズする方法

Country Status (5)

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

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
US8640086B2 (en) * 2006-12-29 2014-01-28 Sap Ag Graphical user interface system and method for presenting objects
US9311082B2 (en) 2006-12-29 2016-04-12 Sap Se System and method for processing graph objects
US8117601B2 (en) * 2007-11-14 2012-02-14 Microsoft Corporation Internal test and manipulation of an application
WO2009085253A1 (en) * 2007-12-21 2009-07-09 Hicamp Systems Hierarchical block-identified data communication for unified handling of structured data and data compression
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
US9826000B2 (en) 2014-12-12 2017-11-21 Microsoft Technology Licensing, Llc Effecting communication events
US9881070B2 (en) * 2014-12-12 2018-01-30 Microsoft Technology Licensing, Llc Controlling service functions in response to service instigation and service reactivation messages
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的移动端接口地址管理方法、装置及存储介质

Family Cites Families (17)

* 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
US6301585B1 (en) 1999-03-17 2001-10-09 Sun Microsystems, Inc. Redundancy elimination in the persistence of object graphs
US6477701B1 (en) 1999-09-30 2002-11-05 Seiko Epson Corporation Version-adaptive serialization and deserialization of program objects in an object-oriented environment
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
US7096419B2 (en) * 2001-02-16 2006-08-22 Sas Institute Inc. System and method for object state persistence
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4855656B2 (ja) 複数のオブジェクトをシリアライズする方法
US6023578A (en) Systems, methods and computer program products for generating an object oriented application for an object oriented environment
US6038565A (en) Object oriented data format mapping mechanism
US6349404B1 (en) Object-oriented repository, a system and method for reusing existing host-based application assets for the development of business-centric applications
US7162709B2 (en) System and method for common code generation
US7207002B2 (en) Serialization and preservation of objects
US6704743B1 (en) Selective inheritance of object parameters in object-oriented computer environment
US6108661A (en) System for instance customization
US6675230B1 (en) Method, system, and program for embedding a user interface object in another user interface object
JP4643931B2 (ja) 外部プログラムに基づくテーマを使用するWebページレンダリング機構
US9600243B2 (en) Sharing of first class objects across multiple interpreted programming languages
US6957228B1 (en) Object oriented apparatus and method for providing context-based class replacement in an object oriented system
US7559052B2 (en) Meta-model for associating multiple physical representations of logically equivalent entities in messaging and other applications
US7603654B2 (en) Determining XML schema type equivalence
US20080155500A1 (en) Method for automatic generation of schema mapping application code
JP2005018777A (ja) 共通問い合わせ実行時システムおよびアプリケーションプログラミングインターフェイス
US7860894B2 (en) Template driven type and mode conversion
US7523461B2 (en) Modification of logic in an application
US8214799B2 (en) Providing information to an isolated hosted object via system-created variable objects
US8073879B2 (en) Systems and methods that transform constructs from domain to domain
US6195791B1 (en) Object mechanism and method for coupling together processes to define a desired processing environment in an object oriented framework
US8707260B2 (en) Resolving interdependencies between heterogeneous artifacts in a software system
US8166080B2 (en) Optimized computer diagramming method
US8024374B2 (en) Computer object conversion using an intermediate object
US6763361B1 (en) Object-oriented database abstraction and statement generation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100423

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100813

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101207

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110407

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110408

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110408

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110527

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110829

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110901

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110927

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111021

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111027

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141104

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4855656

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees