(57)【要約】  サーバおよびクライアントのような複数のエンティティを含む分散コンピューティングシステムにおいて、エンティティ間で交信されるオブジェクトにメタデータを加える。前記メタデータは、オブジェクトの型ならびに／またはオブジェクトに関連する型とプロパティ値を識別する。オブジェクトを分散コンピューティングシステムのエンティティに渡す前に、オブジェクトを受信エンティティが理解可能なデータ形式にシリアル化することができる。
2009508250.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのサーバコンポーネント（「サーバ」）および少なくとも１つのクライアントコンポーネント（「クライアント」）とを含む分散コンピューティングシステムにおいて、前記サーバから前記クライアントに渡されるサーバオブジェクトの型情報を保存するコンピュータ実施方法であって、
前記クライアントからの呼び出しを受信する際に、前記サーバオブジェクトを前記型情報とともに前記クライアントに渡すステップを備えることを特徴とする方法。
【請求項２】
前記サーバオブジェクトは、１つまたは複数のプロパティおよびそれらの対応する型および値とにさらに関連付けられていることを特徴とする請求項１に記載の方法。
【請求項３】
前記サーバオブジェクトの前記型情報は特殊トークンに含まれることを特徴とする請求項１に記載の方法。
【請求項４】
前記呼び出しは前記サーバの公開サービスに対するものであり、前記呼び出しは、前記サーバが前記サービスを実行して前記サーバオブジェクトを生成することをもたらすことを特徴とする請求項１に記載の方法。
【請求項５】
前記サービスに関する情報はプロキシクラスに含まれており、前記プロキシクラスは、前記クライアントが前記プロキシクラスを要求するときに前記クライアントに提供されることを特徴とする請求項４に記載の方法。
【請求項６】
前記プロキシクラスは前記サーバオブジェクトに関連付けた前記サービスと前記型情報とを定義することを特徴とする請求項５に記載の方法。
【請求項７】
前記サーバオブジェクトを任意の関連情報とともに、前記クライアントが認識可能なデータ形式にシリアル化するカスタムシリアル化メソッドを提供するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
少なくとも１つのサーバコンポーネント（「サーバ」）および少なくとも１つのクライアントコンポーネント（「クライアント」）とを含み、前記サーバは少なくとも１つのサービスを前記クライアントに提供する分散コンピューティングシステムにおいて、前記クライアントから前記サーバに渡されるクライアントオブジェクトの型情報を保存するコンピュータ実施方法であって、
前記クライアントオブジェクトを生成するステップと、
前記クライアントオブジェクトを前記サーバに送信するステップであって、前記クライアントオブジェクトは前記クライアントオブジェクトの型情報に関連付けられている、送信するステップと
を備えることを特徴とする方法。
【請求項９】
前記クライアントオブジェクトを生成するステップは、前記クライアントが受信するサーバオブジェクトの型情報で前記クライアントオブジェクトをインスタンス化するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記サーバオブジェクトは、１つまたは複数のプロパティおよびそれらの対応する型と値とに関連付けられることを特徴とする請求項９に記載の方法。
【請求項１１】
前記クライアントオブジェクトを、前記サーバオブジェクトの１つまたは複数のプロパティおよびそれらの対応する型と値とに関連付けるステップをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記サーバオブジェクトのプロパティおよびそれらの対応する型と値を前記クライアントオブジェクトと関連付ける前に、対応する前記１つまたは複数のプロパティを修正するステップをさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記クライアントオブジェクトとその関連情報を、前記サーバが認識可能なデータ形式にシリアル化するステップをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１４】
少なくとも１つのサーバコンポーネント（「サーバ」）および少なくとも１つのクライアントコンポーネント（「クライアント」）とを含む分散コンピューティングシステムにおいて、前記サーバと前記クライアントとの間で交信されるオブジェクトをシリアル化するコンピュータ実施方法であって、
カスタムシリアル化メソッドを用いて、前記サーバオブジェクトが前記クライアントの認識するデータ形式であるように、前記クライアントに渡されるサーバオブジェクトをシリアル化するステップを備えることを特徴とする方法。
【請求項１５】
前記カスタムシリアル化メソッドは、前記クライアントが認識するデータ形式を識別するクライアントカスタムシリアル化メカニズムを使用することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記クライアントが前記カスタムシリアル化メソッドを使用して、前記サーバに渡されるクライアントオブジェクトをシリアル化できるように、前記シリアル化サーバオブジェクトを前記カスタムシリアル化メソッドとともに前記クライアントに渡すステップをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
前記サーバが認識するデータ形式を識別するサーバカスタムシリアル化メカニズムを前記クライアントに渡すステップであって、前記カスタムシリアル化メソッドは前記サーバカスタムシリアル化メカニズムを使用して前記クライアントオブジェクトを、前記サーバが認識するデータ形式にシリアル化するステップをさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記クライアントカスタムシリアル化メカニズムおよび前記サーバカスタムシリアル化メカニズムの両方は、前記サーバに登録したプラグインであることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記クライアントカスタムシリアル化メカニズムまたは前記サーバカスタムシリアル化メカニズムが利用できない場合、デフォルトのシリアル化メカニズムを代替的に使用することを特徴とする請求項１７に記載の方法。
【請求項２０】
前記オブジェクトは、シリアル化した後、コンポーネントに渡す前に再フォーマットされ、前記方法は、前記オブジェクトを受信するコンポーネントに非シリアル化メカニズムを提供して前記シリアル化オブジェクトを非シリアル化するステップをさらに備えることを特徴とする請求項１４に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
クライアントコンポーネント（「クライアント」）およびサーバコンポーネント（「サーバ」）を含む分散コンピューティングシステムにおいて、クライアントが公開サービスを使用できるように、サーバはサービスを公開する。一般的なシナリオでは、クライアントはサーバ上の公開サービスが提供するメソッドを呼び出す。サーバは前記メソッドを実行して、特定の型のサーバオブジェクトをクライアントに返す。クライアントはサーバが送信したサーバオブジェクトを修正しても、しなくてもよい。また、クライアントはサーバオブジェクトを使用して新規のメソッド呼び出しを行うこともできる。例えば、クライアントはサーバオブジェクトを、新規メソッドの呼び出しパラメータとしてサーバに返すことができる。同様に、クライアントはクライアントオブジェクトをインスタンス化してそれをサーバに送信する可能性がある。このようにして、オブジェクトはサーバとクライアント間で交信できる。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
従来は、クライアントとサーバ間で交信されるオブジェクトは、オブジェクトの型を識別する情報を含まない。例えば、サーバがサーバオブジェクトをクライアントに送信するとき、従来、サーバオブジェクトは、サーバオブジェクトの型を識別する情報を含まない。従って、後にクライアントがサーバオブジェクトをサーバに返信するとき、サーバはサーバオブジェクトの元の型、例えばサーバオブジェクトが文字列型であったか、または論理型（Ｂｏｏｌｅａｎ）であったかを識別することができない。
【０００３】
既存システムの具体的な欠点を本背景技術において実証および説明したが、当業界の技術者はおよび他者は、本発明の特許請求の主題がここで説明した欠点の任意または全てを解決する特定の実装に限定されないことを理解するであろう。
【課題を解決するための手段】
【０００４】
本要約は、概念の選択を簡潔な形で導入するために与えるもので、これらの概念は以下の発明を実施するための最良の形態でさらに説明する。本要約は請求項に記載された主題の主要な特徴を特定するようには意図しておらず、請求項に記載された主題の範囲を決定するための支援として使用するようにも意図していない。
【０００５】
本発明の態様は、上記で特定した制限を、クライアントとサーバとの間で交信されるオブジェクトにオブジェクトの型を識別するメタデータを関連付けることで処理する。結果として、型情報を維持しつつオブジェクトはクライアントとサーバとの間で交信できるようになる。本発明の態様は、オブジェクトを受信するエンティティが認識可能なデータ形式であるように、オブジェクトをシリアル化することもできる。
【０００６】
本発明の１つの態様によると、少なくとも１つのサーバおよび少なくとも１つのクライアントとを含む分散コンピューティングシステムにおいて、クライアントはサーバが提供するサービスを呼び出す。クライアントは、例えばサーバが提供するプロキシクラスを検査することで、サーバが提供するサービスの種類を理解する。プロキシクラスはサーバが提供するサービスの種類を識別して、前記サービスの呼び出し方に関する情報を含める。また、クライアントは、プロキシクラスで開示される情報に従ってサーバのサービスを呼び出す。
【０００７】
クライアントからサーバのサービスに対する呼び出しを受信すると、サーバはサーバのサービスを実行して、サーバオブジェクトを生成する。そのサーバオブジェクトに、サーバオブジェクトの型に関する情報、ならびに／またはサーバオブジェクトのための１つまたは複数のプロパティおよびそれらに対応する型と値に関する情報を付け加える。次いで、サーバはサーバオブジェクトとその関連情報とをクライアントに送信する。クライアントへの送信前に、サーバオブジェクトとその関連情報をクライアントが理解可能なデータ形式にシリアル化することが望ましい。
【０００８】
本発明の別の態様によると、クライアントはクライアントオブジェクトを生成することができる。クライアントオブジェクトは、クライアントが提供する型、またはサーバが供給するプロキシクラスが提供する型を用いてインスタンス化できる。また、そのクライアントオブジェクトは、クライアントが受信するサーバオブジェクトに関連付けた型情報とプロパティ値に基づいてインスタンス化することもできる。クライアントオブジェクトをサーバオブジェクトに基づいてインスタンス化するとき、クライアントオブジェクトはサーバオブジェクトに関連したプロパティ値を使用することができる。そのクライアントオブジェクトは、サーバオブジェクトのものとは異なるプロパティ値を含んでもよい。クライアントはクライアントオブジェクトを、例えばクライアントオブジェクトをパラメータとして用いてサーバのサービスを呼び出すことで、サーバに送信できる。クライアントオブジェクトとその関連情報を、クライアントオブジェクトを受信するサーバが理解可能な形式にシリアル化することが望ましい。
【０００９】
本発明の別の態様によると、サーバとクライアントの間で交信するオブジェクトを、最初にオブジェクト受信部が認識するデータ形式にシリアル化することが可能であり、前記オブジェクト受信部はサーバまたはクライアントのいずれかで可能である。オブジェクトのシリアル化はカスタムシリアル化メソッドにより実施することが望ましい。カスタムシリアル化メソッドは、特定のオブジェクト受信部のデータ表現スキームを提供するシリアル化メカニズムを使用する。シリアル化メカニズムはデフォルトのシリアル化メカニズムであるか、または特定のオブジェクト受信部に合わせたもので、かつサーバ上に登録したカスタムシリアル化メカニズムで可能である。
【００１０】
一般的なシナリオにおいて、カスタムシリアル化メソッドはクライアントのカスタムシリアル化メソッドを使用して、サーバオブジェクトをクライアントが認識するデータ形式にシリアル化する。次いで、サーバは前記のシリアル化サーバオブジェクトをクライアントに送信する。サーバはさらにクライアントに対して、カスタムシリアル化メソッドをカスタムサーバシリアル化メカニズムとともに送信することが望ましい。従って、クライアントはカスタムシリアル化メソッドを使用してクライアントオブジェクトを、カスタムサーバシリアル化メカニズムで特定したデータ形式にシリアル化する。次いで、前記シリアル化されたクライアントオブジェクトは、サーバが認識するデータ形式でサーバに送信できる。
【００１１】
時々、特定のオブジェクト受信部への送信前に、ネットワーク帯域幅を節約するためにシリアル化オブジェクトを、例えばフォーマットし、圧縮することがある。上記の場合、本発明の態様は、受信部のシリアル化オブジェクトを、例えば解凍により非シリアル化する非シリアル化メカニズムを提供し、それにより、オブジェクト受信部はシリアル化オブジェクトのデータ形式を認識できるようになる。
【発明の効果】
【００１２】
要約すると、本発明の態様は、分散コンピューティングシステムにおけるエンティティ間で交信されるオブジェクトを、オブジェクトの型および／またはオブジェクトのプロパティ値を識別するメタデータに関連付ける。結果として、分散コンピューティングシステムにおけるエンティティ間で交信されるオブジェクトは、移動中にその型情報を維持し、従ってオブジェクトを受信するエンティティは、容易にオブジェクトの型を認識することができる。加えて、エンティティ間で交信されるオブジェクトのデータ形式は、オブジェクトを受信するエンティティがオブジェクトのデータを理解するように処理することができる。
【００１３】
本発明の前述の態様と多数の付随する利点は、添付図面と関連させて考慮すると以下の詳細な説明を参照することで容易に、より良く理解できるであろう。
【発明を実施するための最良の形態】
【００１４】
以下の文は本発明の例示的な実施形態を実証および説明する。しかしながら、当業界の技術者は本発明の精神および範囲から逸脱することなく様々な変更をそれらに加えうることを理解するであろう。
【００１５】
本発明の実施形態は、少なくともプロセッサおよびメモリを含むコンピュータにより実行されるプログラムモジュールのようなコンピュータ実行可能命令の一般的コンテキストで説明することができる。一般的に説明すると、プログラムモジュールには、特定のタスクを実施するか、または特定の抽象データ型を実装するルーチン、プログラム、ウィジェット、オブジェクト、コンポーネント、データ構造等が含まれる。本発明の実施形態を、コンピューティングサービスがいくつかのエンティティ（「サーバ」）によって他のエンティティ（「クライアント」）に提供される分散コンピューティング環境で実践することもできる。エンティティは同一のコンピューティングシステムにローカルであるか、または通信ネットワークを通してリモートに接続することができる。分散コンピューティングシステムにおいて、サービスを提供するプログラムモジュールはローカルおよび／またはリモートコンピュータ記憶媒体に配置することができる。
【００１６】
図１は少なくとも１つのクライアント１０２および少なくとも１つのサーバ１０４とを含む例示的な分散コンピューティングシステム１００を示す。サーバ１０４は、クライアント１０２が使用可能なウェブサービスのようなサービスを提供する。本発明の例示的な実施形態はプロキシクラス１０８を使用して、サーバ１０４が提供するサービスを公開する。プロキシクラス１０８は、クライアント１０２が使用するために利用可能なサーバ１０４上のサービスに関する情報を含むことができる。プロキシクラス１０８は、サービスの基本的な説明とサービスの呼び出し方に関する情報とを提供することもできる。一般に、プロキシクラス１０８はクライアント１０２に対して、サーバ１０４が提供するサービスの表現を与える。例えば、プロキシクラス１０８はサーバオブジェクトの型を記述する情報を含むことができる。
【００１７】
例えば、サーバ１０４の提供サービスをクライアント１０２が使用する必要があることを知っているクライアント１０２の開発者により、プロキシクラス１０８へのリンクをクライアント１０２に提供する。従って、サーバ１０４の提供サービスをクライアント１０２が使用する必要があることをクライアント１０２が判別すると、クライアント１０２は前記リンクを使用してプロキシクラス１０８に対する要求１０６をサーバ１０４に送信する。サーバ１０４は要求されたプロキシクラス１０８を返す。次いで、クライアント１０２はプロキシクラス１０８を検査することで、サービスにより提供されるものを判別する。従って、クライアント１０２は本サービスを使用するために呼び出し可能なメソッドが分かる。クライアント１０２は次いで、プロキシクラス１０８で提供される情報を使用して必要なサービスに対する呼び出し１１０を行う。例えば、クライアント１０２はサービスが提供する特定のメソッドを呼び出すことができる。クライアント１０２からの呼び出し１１０を受信すると、サーバ１０４は前記メソッドを実行してサーバオブジェクト１１２をクライアント１０２に返す。
【００１８】
本発明の実施形態では、クライアント１０２はプロキシクラス１０８以外の手段を通して、サーバ１０４の公開サービスに関する情報を取得できる。例えば、サーバ１０４の公開サービスに関する情報を、クライアント１０２がサービスの１つを要求する前にクライアント１０２に記憶しておくことができる。または、クライアント１０２はクライアント１０２とサーバ１０４とをホストする分散コンピューティングシステム１００の中間エンティティのような第三者を通して、サーバ１０４の公開サービスに関する必要情報を取得できる。
【００１９】
図２に示すように、本発明の実施形態では、クライアント１０２とサーバ１０４のような、クライアントとサーバの間で交信されるオブジェクト２０２には、特定のオブジェクト型を識別する型情報２０４が含まれる。さらに、オブジェクト２０２は１つまたは複数のプロパティ２０６ならびにそれらの対応する型および値に関連付けることができる。本発明の例示的実施形態では、１つまたは複数のプロパティ２０６の各々はオブジェクト２０２であり、前記プロパティの特定の型情報、１つまたは複数のプロパティならびにそれらの対応する型および値を含む。オブジェクト２０２はサーバオブジェクト、すなわちサーバが生成するオブジェクトとすることができる。オブジェクト２０２はクライアントオブジェクト、すなわちクライアントが生成するオブジェクトとすることができる。
【００２０】
図１に戻ると、本発明の例示的実施形態では、サーバオブジェクト１１２を受信すると、クライアント１０２はサーバオブジェクト１１２を修正することができる。本発明の例示的実施形態では、クライアント１０２は、サーバオブジェクト１１２に関連付けた型情報を用いて新規クライアントオブジェクト１１４をインスタンス化することで、サーバオブジェクト１１２を修正する。新規クライアントオブジェクト１１４は、サーバオブジェクト１１２に関連付けた修正済みプロパティ値または未修正プロパティ値を含むことができる。次いで、クライアント１０２はサーバ１０４に、サーバオブジェクト１１２と同じ型情報とプロパティとを有する新規クライアントオブジェクト１１４を渡すことができる。このときプロパティ値は修正されていてもよい。クライアント１０２は、例えば新規クライアントオブジェクト１１４をメソッドに対するパラメータとして用いて、サーバのサービスのメソッドに対する呼び出し１１３を行うことにより、新規クライアントオブジェクト１１４をサーバ１０４に渡すことができる。
【００２１】
本発明の例示的実施形態では、クライアント１０２はクライアント１０２にローカルな型またはサーバ１０４が提供する型に基づいて、クライアントオブジェクトをインスタンス化することもできる。例えば、サーバ１０４が提供する型に関する情報をプロキシクラス１０８に含めることができる。本発明の実施形態では、サーバオブジェクト上で実施する動作をクライアントオブジェクト上で実施することもできる。例えば、クライアント１０２はクライアントオブジェクトを、クライアントオブジェクトの型および／またはプロパティを識別する情報に関連付けることができる。クライアント１０２はクライアントオブジェクトをサーバ１０４に渡し、サーバ１０４はクライアントオブジェクトを操作してクライアントオブジェクトをクライアント１０２に戻すこと、等ができる。
【００２２】
図３はサービスＭｙＷｅｂＳｅｒｖｉｃｅ３０２と型ＭｙＴｙｐｅ３０４との例示的な定義を示す。型ＭｙＴｙｐｅ３０４は、ＭｙＷｅｂＳｅｒｖｉｃｅ３０２が返すサーバオブジェクトの型である。ＭｙＴｙｐｅ３０４は「数字（Ｎｕｍ）」３０６のプロパティと「名前（Ｎａｍｅ）」３０８のプロパティを有する。図３に示すように、ＭｙＷｅｂＳｅｒｖｉｃｅ３０２はメソッドＭｙＳｅｒｖｉｃｅ３１０を有する。ＭｙＳｅｒｖｉｃｅ３１０はパラメータ「名前（Ｎａｍｅ）」３１２を取り、例示的な型ＭｙＴｙｐｅ３０４のオブジェクト「ｍｔ」３１４を返す。
【００２３】
図４は、図３に示すＭｙＷｅｂＳｅｒｖｉｃｅ３０２に対してサーバ１０４が生成した例示的なプロキシクラス４００を示す。テキスト４０２は例示的なＭｙＷｅｂＳｅｒｖｉｃｅ３０２のクライアント側定義４０４を示す。テキスト４０４は例示的なＭｙＴｙｐｅ３０４のクライアント側定義を提供する。特に、サーバオブジェクトに関連付けた型情報を含む特殊トークン４０６を与える。本発明の例示的実施形態では、例示的なサービスＭｙＷｅｂＳｅｒｖｉｃｅ３０２を実行するとき、サーバ１０４はクライアント１０２に、特殊トークン４０６を含むサーバオブジェクト１１２のようなサーバオブジェクトを送信する。図５は、サーバ１０４がＭｙＷｅｂＳｅｒｖｉｃｅ３０２を実行した後にクライアント１０２に送信する、例示的なサーバオブジェクト１１２の例示的な構文５１０を示す。構文５１０は特殊トークン４０６と、サーバオブジェクト１１２に関連付けたプロパティ値とを識別する。
【００２４】
本発明の実施形態において、クライアント１０２は、例えば例示的なＭｙＴｙｐｅ３０４のクライアント側定義４０４を用いて新規クライアントオブジェクト１１４をインスタンス化することで、サーバオブジェクト１１２を修正できる。結果として、新規クライアントオブジェクト１１４は特殊トークン４０６で指定した型を有し、サーバオブジェクト１１２のプロパティに関連付けられる。クライアント１０２は新規クライアントオブジェクト１１４でプロパティ値を修正することもできる。図１に示すように、クライアント１０２は次いで新規クライアントオブジェクト１１４を別のメソッドに対するパラメータとしてサーバ１０４に返信する。図６は、クライアント１０２がサーバ１０４に返信可能な例示的なクライアントオブジェクト１１４に対する例示的な構文６１２を示す。その例示的なクライアントオブジェクト１１４は修正済みのサーバオブジェクト１１２である。構文６１２は特殊トークン４０６および修正済みのプロパティ値を識別する。本発明の例示的実施形態では、例示的なクライアントオブジェクト１１４を受信すると、サーバ１０４は修正済みのプロパティ値を有する型ＭｙＴｙｐｅ３０４の新規サーバオブジェクトを生成する。
【００２５】
上記の説明で示したように、本発明の実施形態によりクライアント１０２は、サーバオブジェクトに関連付けた型情報に基づいて、新規クライアントオブジェクトをインスタンス化することができる。新規クライアントオブジェクトを、クライアントの型またはサーバが提供する型に従って、例えばサーバのプロキシクラスを通してインスタンス化することもできる。一般に、新規クライアントオブジェクトに対する型情報を、特殊トークン４０６と形式上同様な特殊トークンで新規クライアントオブジェクトに加える。クライアントオブジェクトは、新規メソッド呼び出しに対するパラメータとしてサーバ１０４に送信することができる。特殊トークン４０６のような特殊トークンを新規クライアントオブジェクトに加えて、サーバ１０４に渡すことにより、サーバ１０４が新規クライアントオブジェクトの型を認識するようになる。
【００２６】
本発明の実施形態により、サーバ１０４に登録した或る特定の型のオブジェクトのみがクライアント１０２とサーバ１０４の間を往復することができる。上記の制約により、往復可能なオブジェクトが、サーバ１０４が公開を望む特定の型のオブジェクトに制限される。前記制約によりさらに、サーバ１０４が受理を望まないオブジェクトを悪意のあるクライアント１０２が製造することを防止する。結果として、クライアント１０２は任意の型のオブジェクトをインスタンス化してサーバ１０４に返信することはできない。
【００２７】
本発明の実施形態は、またカスタムシリアル化メソッドを含むことができる。カスタムシリアル化メソッドはシリアル化メカニズムを使用して、サーバ１０４とクライアント１０２との間で交信されるオブジェクトのデータ形式を変更する。シリアル化メカニズムを用いて、カスタムシリアル化メソッドはオブジェクトの表現を、オブジェクトを受信するエンティティ（「オブジェクト受信部」）により認識可能なデータ形式に変更する。オブジェクト受信部はサーバ１０４またはクライアント１０２のいずれかとすることができる。同様に、クライアント１０２またはサーバ１０４のいずれかは、オブジェクトを生成および送信するエンティティ（「オブジェクト発行部」）とすることができる。例えば、サーバオブジェクト１１２のようなサーバオブジェクトを、クライアント１０２のようなクライアントにより通常は認識可能な文字列にシリアル化することができる。
【００２８】
本発明の例示的な実施形態では、カスタムシリアル化メソッドはデフォルトのシリアル化メカニズムを使用することができる。このデフォルトのシリアル化メソッドは、一般的な実装では、オブジェクトをその元のプロパティ名でシリアル化する。例えば、シリアル化オブジェクトにおいて、オブジェクトのプロパティＡを継続的にＡと名付け、オブジェクトのプロパティＢを継続的にＢと名付ける。または、カスタムシリアル化メソッドはカスタムシリアル化メカニズムを使用して、オブジェクト受信部の特定の要件に従ってオブジェクトのデータ形式を変更することができる。例えば、カスタムシリアル化メカニズムはオブジェクトのプロパティ名を変更して、オブジェクト受信部のデータ形式の要件に適合させることができる。
【００２９】
図７は、図１に示す分散コンピューティングシステム１００におけるカスタムシリアル化メソッド７０６の例示的な利用シナリオを示す。上述のように、分散コンピューティングシステム１００におけるクライアント１０２とサーバ１０４の両方は、オブジェクトを生成および／または受信することができる。示したように、クライアントのカスタムシリアル化メカニズム７０２をサーバ１０４に登録することができる。クライアントのカスタムシリアル化メカニズム７０２は、クライアント１０２が認識する少なくとも１つのデータ形式を識別する。同様に、サーバのカスタムシリアル化メカニズム７０４をサーバ１０４に登録することができる。また、サーバのカスタムシリアル化メカニズム７０４は、サーバ１０４が認識する少なくとも１つのデータ形式を識別する。本発明の例示的な実施形態では、クライアント１０２および／またはサーバ１０４に利用可能なカスタムシリアル化メカニズムがない場合、カスタムシリアル化メソッド７０６はクライアント１０２およびサーバ１０４にローカルに存在するデフォルトのシリアル化メカニズムを使用する。
【００３０】
本発明の実施形態では、オブジェクト受信部へ送信する前にシリアル化オブジェクトを再フォーマットする場合がある。例えば、シリアル化オブジェクトを送信前に圧縮してネットワーク帯域幅を節約することができる。従って、本発明の実施形態では、オブジェクト受信部は非シリアル化メカニズムを使用して、例えば再フォーマットしたシリアル化オブジェクトを非シリアル化、解凍することができる。しかしながら、クライアントのカスタムシリアル化メカニズムをサーバ１０４に登録してクライアント上のシリアル化サーバオブジェクトを非シリアル化し、サーバのカスタムシリアル化メカニズムをサーバ１０４に登録してサーバ１０４のシリアル化クライアントオブジェクトを非シリアル化できることが望ましい。カスタム非シリアル化メカニズムが利用可能でない場合、デフォルトの非シリアル化メカニズムを使用する。
【００３１】
図７に示す利用シナリオでは、カスタムシリアル化メソッド７０６はクライアントのカスタムシリアル化メカニズム７０２を使用してサーバオブジェクト１１２を、クライアント１０２が認識するデータ形式に変換する。次いで、サーバ１０４はシリアル化サーバオブジェクト１１２をクライアント１０２に送信する。サーバ１０４は、さらにサーバのカスタムシリアル化メカニズム７０４および／またはクライアントのカスタム非シリアル化メカニズムの一方が利用可能ならば、それらとともにカスタムシリアル化メソッド７０６をクライアント１０２に送信することが望ましい。必要ならば、クライアント１０２は受信したカスタムシリアル化メソッド７０６とクライアントのカスタム非シリアル化メカニズムとを使用して、シリアル化サーバオブジェクト１１２を非シリアル化することができる。従って、クライアント１０２はシリアル化サーバオブジェクト１１２を認識することができる。
【００３２】
クライアントがクライアントオブジェクト１１４をサーバ１０４に送信する必要があるとき、クライアント１０２は受信したカスタムシリアル化メソッド７０６とサーバのカスタムシリアル化メカニズム７０４とを使用して、クライアントオブジェクト１１４をサーバ１０４が認識するデータ形式にシリアル化する。クライアント１０２は、必要ならば、例えば、シリアル化オブジェクト１１４がネットワーク帯域幅を節約するように、シリアル化クライアントオブジェクト１１４を圧縮して、シリアル化クライアントオブジェクト１１４を再フォーマットしても良い。次いで、クライアント１０２はシリアル化クライアントオブジェクト１１４をサーバ１０４に送信する。サーバ１０４にサーバのカスタム非シリアル化メカニズムが登録されている場合、例えば、そのサーバのカスタム非シリアル化メカニズムを使用して、再フォーマットしたシリアル化クライアントオブジェクトをサーバ１０４が認識するデータ形式に非シリアル化、解凍することが望ましい。
【００３３】
図８は、図１に示すサーバ１０４のような、サーバが生成したサーバオブジェクトの型情報を保存する例示的なプロセス８００を示す。本質的には、プロセス８００は、クライアント１０２のようなクライアントが要求したサーバのサービスの実行後にサーバオブジェクトを生成する。次いで、プロセス８００はサーバオブジェクトを、前記サーバオブジェクトの型情報および／または任意のプロパティ情報に関連付ける。プロセス８００は、関連情報を含むサーバオブジェクトをシリアル化することが望ましい。次いで、プロセス８００はサーバオブジェクトとその関連情報を、サーバのサービスを要求するクライアントに送信する。
【００３４】
本発明の例示的な実施形態では、プロセス８００はサーバに対するプロキシクラス１０８のようなプロキシクラスを作成することで開始する。ブロック８０２を参照されたい。図１に関連して上述したように、プロキシクラスはサーバが提供する全てのサーバのサービスを識別することができる。プロキシクラスはサーバのサービスの記述と、サーバのサービスの呼び出し方法とを提供することもできる。クライアントの開発者は、サーバが提供するサービスをクライアントが必要であるということを予期するとき、クライアントにプロキシクラスへのリンクを組み込みできることが望ましい。サーバの提供サービスをクライアントが必要とする場合、クライアントはリンクを通してプロキシクラスを要求することができる。従って、プロセス８００は、自身がプロキシクラスに対する要求をクライアントから受信したか否かを判別する。判定ブロック８０４を参照されたい。判定結果がＮＯならば、プロセス８００はそれ以上先に進まない。判定結果がＹＥＳならば、プロセス８００は先に進んで、プロキシクラスをクライアントに渡す。ブロック８０６を参照されたい。プロキシクラスを受信すると、クライアントはプロキシクラスを検査して、プロキシクラスで記述されるサーバのサービスを呼び出すか否かを判定することができる。上述のように、プロキシクラスは、サーバのサービスに関する情報をクライアントに与える多数の手段の１つである。クライアントは、サーバおよびクライアントをホストする分散コンピューティングシステムにおいて、サードパーティによるもののような代替的手段を通して公開サービスに関する情報を取得することができる。
【００３５】
従って、サーバ上のプロセス８００は、自身がサーバのサービスに対する呼び出しをクライアントから受信したか否かを判別する。判定ブロック８０８を参照されたい。判定ブロック８０８に対する結果がＮＯの場合、プロセス８００はそれ以上先に進まない。判定ブロック８０８に対する結果がＹＥＳの場合、プロセス８００は先に進んで、サーバのサービスを実行する。ブロック８１０を参照されたい。サーバのサービスの実行により、クライアントに渡されるサーバオブジェクトが生成される。本発明の実施形態では、プロセス８００はサーバオブジェクトを、サーバオブジェクトの型情報および／またはプロパティに関連付ける。ブロック８１２を参照されたい。結果として、サーバオブジェクトは、図２に示すオブジェクト２００のようなオブジェクトになる。
【００３６】
本発明のいくつかの実施形態では、（型情報とプロパティ情報を含む）サーバオブジェクトをクライアントに渡す前に、プロセス８００はルーチン１０００を実行してサーバオブジェクトをシリアル化する。ブロック１０００を参照されたい。図１０はルーチン１０００の例示的実施形態を示し、後で詳述する。ルーチン１０００の実行後、サーバオブジェクトを、クライアントが認識できるデータ形式にシリアル化する。次いで、プロセス８００はサーバオブジェクトをクライアントに送信する。ブロック８１４を参照されたい。その後、プロセス８００は終了する。
【００３７】
図９は、図１に示すクライアント１０２のようなクライアントが生成したクライアントオブジェクトの型情報を保存する例示的なプロセス９００を示す。本質的には、プロセス９００はクライアントが提供する型に基づいて、またはサーバオブジェクト１１２のようなサーバオブジェクトに関連付けた型情報に基づいて、クライアントオブジェクトをインスタンス化する。クライアントオブジェクトがサーバオブジェクトに関連付けた型情報に基づく場合、サーバオブジェクトに関連付けたプロパティ値を、クライアントオブジェクトに付け加える前に修正することができる。そのクライアントオブジェクトを、サーバが提供するサービスへの呼び出しのパラメータとして、サーバに送信する前に、シリアル化することができる。
【００３８】
本発明の例示的な実施形態では、図９に示すように、プロセス９００はクライアントオブジェクトをサーバに送信するか否かを判別することで開始する。判定ブロック９０２を参照されたい。結果がＮＯの場合、プロセス９００はそれ以上先に進まない。判定ブロック９０２に対する判定結果がＹＥＳの場合、プロセス９００は先に進んで、クライアントオブジェクトをサーバオブジェクトに基づいてインスタンス化するべきものか否かを判別する。判定ブロック９０４を参照されたい。判定ブロック９０４に対する判定結果がＮＯの場合、クライアントオブジェクトをクライアントまたはサーバが提供する型に基づいて、例えばプロキシクラスを通してインスタンス化する。ブロック９０６を参照されたい。次いで、プロセス９００はクライアントオブジェクトを、適切な型およびプロパティ情報に関連付ける。ブロック９０８を参照されたい。
【００３９】
判定ブロック９０４に対する判定結果がＹＥＳの場合、これはクライアントオブジェクトをサーバオブジェクトに基づいてインスタンス化することを意味するが、プロセス９００は、サーバから受信したサーバオブジェクトに関連付けた型およびプロパティ情報に基づいてクライアントオブジェクトをインスタンス化する。ブロック９１０を参照されたい。いくつかの場合において、サーバオブジェクトに関連付けたプロパティ値をクライアントオブジェクトに直接コピーする。他の場合において、サーバオブジェクトに関連付けたプロパティ値を、クライアントオブジェクトに関連付ける前に修正することができる。従って、プロセス９００はサーバオブジェクトに関連付けたプロパティ値を修正するか否かを判別する。判定ブロック９１２を参照されたい。判定結果がＹＥＳの場合、プロセス９００は先に進んで、サーバオブジェクトのプロパティ値を修正する。ブロック９１４を参照されたい。次いで、ルーチン９００はクライアントオブジェクトを、サーバオブジェクトの型情報および更新したプロパティ情報に関連付ける。ブロック９１６を参照されたい。
【００４０】
ブロック９１６または９０８から、クライアントオブジェクトをサーバオブジェクトの適切な型およびプロパティ情報と関連付けした後、プロセス９００はルーチン１０００を実行してクライアントオブジェクトをシリアル化することができ、それによりクライアントオブジェクトは、クライアントオブジェクトを受信するサーバが認識するデータ形式となる。ルーチン１０００の実行後、プロセス９００はクライアントオブジェクトを、例えばクライアントオブジェクトをパラメータとして用いたサーバのサービスの呼び出しを通してサーバに送信する。ブロック９１８を参照されたい。その後、ルーチン９００は終了する。
【００４１】
図１０は、オブジェクト受信部がオブジェクトを認識可能になるように、オブジェクト発行部がオブジェクトをシリアル化するルーチン１０００の例示的な実装を示す。ルーチン１０００は、オブジェクトをオブジェクト受信部に渡す必要があるか否かを判別することで開始する。判定ブロック１００２を参照されたい。判定結果がＮＯの場合、ルーチン１０００はそれ以上先に進まない。判定結果がＹＥＳの場合、ルーチン１０００はオブジェクト受信部のシリアル化メカニズムを取得する。ブロック１００４を参照されたい。図７に関連して上述したように、オブジェクト受信部のシリアルメカニズムはデフォルトのシリアル化メカニズムであるか、またはオブジェクト受信部用に特別に設計したカスタムシリアル化メカニズムとすることができる。次いで、ルーチン１０００はカスタムシリアル化メソッド７０６のようなカスタムシリアル化メソッドを呼び出して、オブジェクト受信部のシリアル化メカニズムを用いてオブジェクトをシリアル化する。ブロック１００６を参照されたい。ルーチン１０００はシリアル化オブジェクトを返す。ブロック１００８を参照されたい。その後、ルーチン１０００は終了する。本発明の実施形態では、ルーチン１０００は、シリアル化オブジェクトを返す前に、シリアル化オブジェクトを再フォーマットして特定のシステムニーズを解決することができる。例えば、オブジェクト受信部への移動の際に、シリアル化オブジェクトはより少ないネットワーク帯域幅を使用するために、ルーチン１０００はシリアル化オブジェクトを圧縮することができる。
【００４２】
本発明の態様を構造的特徴および／または方法論的動作に固有な言葉で説明したが、添付請求項で定義した主題は必ずしも上述の特定の特徴または動作に限定されないことは理解されるべきである。むしろ、上述の特定の特徴または動作は、請求項を実施する形態の例として開示してある。
【図面の簡単な説明】
【００４３】
【図１】サーバオブジェクトはクライアントとサーバの間を移動する、クライアントとサーバの間の例示的なやりとりを示すブロック図である。
【図２】前記の例示的なオブジェクトにオブジェクトの型を示す情報を関連付けた、サーバとクライアントの間で交信される例示的なオブジェクトを示すブロック図である。
【図３】例示的な型のオブジェクトを返す例示的なサーバのサービスの例示的な定義を示すブロック図である。
【図４】例示的なプロキシクラスに対する構文を示すブロック図である。
【図５】サーバによりクライアントに送信される例示的なオブジェクトに対する構文を示すブロック図である。
【図６】クライアントによりサーバに送信される例示的なオブジェクトに対する構文を示すブロック図である。
【図７】サーバとクライアントの間で交信されるオブジェクトをシリアル化する例示的なシナリオを示すブロック図である。
【図８】サーバが生成するオブジェクトの型情報を保存する例示的なプロセスを示すフロー図である。
【図９】クライアントが生成するオブジェクトの型情報を保存する例示的なプロセスを示すフロー図である。
【図１０】図８および図９において使用に適した、サーバとクライアントの間で交信されるオブジェクトをシリアル化する例示的なルーチンを示すフロー図である。
【図１】
2009508250.tif 000003
【図２】
2009508250.tif 000004
【図３】
2009508250.tif 000005
【図４】
2009508250.tif 000006
【図５】
2009508250.tif 000007
【図６】
2009508250.tif 000008
【図７】
2009508250.tif 000009
【図８】
2009508250.tif 000010
【図９】
2009508250.tif 000011
【図１０】
2009508250.tif 000012
【国際調査報告】
2009508250.tif 000013
2009508250.tif 000014