(57)【特許請求の範囲】
【請求項１】
コンピュータが、コンピュータ通信ネットワークで接続された他のコンピュータに対してデータオブジェクトを転送する転送方法であって、
前記コンピュータが、前記他のコンピュータからの転送要求を受信するステップ（Ｅ１１）と、
前記コンピュータが、前記他のコンピュータからの転送要求からコンピュータアドレス（ＵＲＩ）を取り出すステップ（Ｅ１２）と、
前記コンピュータが、データオブジェクトを含むデータフィールドとコンピュータアドレスとを関連付けた関連付けテーブル（Ｔ）において、取り出された前記コンピュータアドレス（ＵＲＩ）と関連するデータオブジェクトを識別するステップ（Ｅ１３〜Ｅ１４）と、
前記コンピュータが、前記識別されたデータオブジェクトに含まれたデータフィールドを読み、該データフィールドの構造をあらかじめ定めたデータ構造のリストと比較して、前記データフィールドが前記予め定めたデータ構造を持つ場合には、前記データフィールドを、前記関連付けテーブルによって前記データフィールドに関連付けられたコンピュータアドレスで置換し、前記関連付けテーブルにおいて前記コンピュータアドレスと関連付けられた前記データフィールドをマーシャリングすることで、前記識別されたデータオブジェクトを前記コンピュータ通信ネットワーク（４）の通信プロトコルにより使用できる通信言語へマーシャリングするステップ（Ｅ１６）と、
前記コンピュータが、前記マーシャリングされたデータオブジェクトを前記他のコンピュータに転送するステップ（Ｅ１７）と
を有することを特徴とする転送方法。
【請求項２】
前記マーシャリングするステップは、前記データフィールドに関連付けられた前記コンピュータアドレスを前記関連付けテーブルに格納する格納サブステップを含むことを特徴とする請求項１に記載の転送方法。
【請求項３】
前記格納サブステップでは、前記データフィールドはプログラミング言語で作成して格納することを特徴とする請求項２に記載の転送方法。
【請求項４】
前記あらかじめ定めた構造を持つデータフィールドは、データオブジェクトまたはアレイまたは最小限の長さの文字のチェーンうちの少なくともいずれかであることを特徴とする請求項１乃至３のいずれか一項に記載の転送方法。
【請求項５】
前記コンピュータが、前記関連付けテーブルを、他のコンピュータから更新要求を受信する都度更新するステップを更に有することを特徴とする請求項１に記載の転送方法。
【請求項６】
前記更新要求から取り出されたデータオブジェクトを、他のコンピュータのコンピュータアプリケーションにより用いられたプログラミング言語へマーシャリングするステップ（Ｅ２３）を更に有することを特徴とする請求項５に記載の転送方法。
【請求項７】
前記コンピュータが、他のコンピュータの有する関連付けテーブルにおいて、前記更新要求から取り出されたコンピュータアドレスを識別するステップ（Ｅ２４）と、
識別できた場合、前記コンピュータが、前記取り出されたコンピュータアドレスと関連付けて前記関連付けテーブルに格納されている以前のデータオブジェクトを、前記更新要求から取り出されたデータオブジェクトで置換するステップ（Ｅ２６）と
をさらに含むことを特徴とする請求項５又は６に記載の転送方法。
【請求項８】
前記置換するステップ（Ｅ２６）で、前記更新要求から取り出されたデータオブジェクトのデータフィールドが、前記他のコンピュータの有する前記関連付けテーブルに格納されている、以前のデータオブジェクトにコピーされることを特徴とする請求項７に記載の転送方法。
【請求項９】
他のコンピュータの有する関連付けテーブルにおいて、前記更新要求から取り出されたコンピュータアドレスを識別するステップ（Ｅ２４）と、
識別できない場合、更新要求から取り出されたデータオブジェクトと前記取り出されたコンピュータアドレスとの関連付けを、前記関連付けテーブルに追加するステップ（Ｅ２７）と
をさらに含むことを特徴とする請求項５乃至８のいずれか一項に記載の転送方法。
【請求項１０】
ローカルコンピュータ（Ｃ１）で、請求項１に記載の転送方法で送信される、遠隔データオブジェクト（Ｏ２）のインタフェースを参照するための少なくとも１つのコンピュータアドレス（ＵＲＩ１'）を有する遠隔データオブジェクト（Ｏ２）のファンクションを起動する起動方法であって、前記インタフェースはデータオブジェクトのファンクションと実行コードを関連付けており、
ローカルコンピュータ（Ｃ１）で、通信ネットワーク（４）の通信プロトコルにより使用できる通信言語（XML）へマーシャリングされた前記遠隔データオブジェクト（Ｏ２）のコピーを、前記コンピュータ通信ネットワークから受信するステップ（Ｅ４０）と、
受信された前記データオブジェクト（Ｏ２）から前記データオブジェクト（Ｏ２）のインタフェースを参照するための少なくとも１つのコンピュータアドレス（ＵＲＩ１'）を取り出すステップ（Ｅ４１）と、
前記取り出されたコンピュータアドレス（ＵＲＩ１'）を含む前記インタフェースの獲得要求を遠隔コンピュータ（Ｃ３）へ送信するステップ（Ｅ４２）と、
前記送信に対する応答として、ファンクションの実行コードがそれぞれ関連付けられた１つ又は複数のファンクションを有する前記インタフェース（Ｉ１）を前記遠隔コンピュータから受信するステップ（Ｅ４３）と
を有することを特徴とする起動方法。
【請求項１１】
前記受信されたインタフェース（Ｉ１）の１つ又は複数のファンクションと前記ファンクションの実行コードとを有するクラスを前記ローカルコンピュータ（Ｃ１）のデータ処理アプリケーションにより使用されるプログラミング言語で作成するステップ（Ｅ４５〜Ｅ５０）をさらに含むことを特徴とする請求項１０に記載の起動方法。
【請求項１２】
コンピュータ通信ネットワークで接続された他のコンピュータに対してデータオブジェクトを転送する転送装置であって、
前記他のコンピュータからの転送要求を受信する手段（５００、５０１、５０２）と、
前記他のコンピュータからの転送要求からコンピュータアドレスを取り出す手段（５００、５０１、５０２）と、
データオブジェクトを含むデータフィールドとコンピュータアドレスとを関連付けた関連付けテーブル（Ｔ）において、取り出された前記コンピュータアドレスと関連するデータオブジェクトを識別する手段（５００、５０１、５０２）と、
前記識別されたデータオブジェクトに含まれたデータフィールドを読む手段（５００，５０１，５０２）と、該データフィールドの構造をあらかじめ定めたデータ構造のリストと比較して、前記データフィールドが予め定めたデータ構造を持つ場合には、前記データフィールドを、前記関連付けテーブルによって前記データフィールドに関連付けられたコンピュータアドレスで置換し、前記関連付けテーブルにおいて前記コンピュータアドレスと関連付けられた前記データフィールドをマーシャリングする手段（５００，５０１，５０２）とを有する、前記識別されたデータオブジェクトを前記通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングする手段（１０）と、
前記マーシャリングされたデータオブジェクトを前記他のコンピュータに転送する手段（５００、５０１、５０２）とを有することを特徴とする転送装置。
【請求項１３】
前記マーシャリングする手段は、前記データフィールドに関連付けられた前記コンピュータアドレスを前記関連付けテーブルに格納する格納手段を含むことを特徴とする請求項１２に記載の転送装置。
【請求項１４】
前記格納手段は、前記データフィールドをプログラミング言語で作成して格納することを特徴とする請求項１３に記載の転送装置。
【請求項１５】
前記あらかじめ定めた構造を持つデータフィールドは、データオブジェクトまたはアレイまたは最小限の長さの文字のチェーンうちの少なくともいずれかであることを特徴とする請求項１２乃至１４のいずれか一項に記載の転送装置。
【請求項１６】
マイクロプロセッサ（５００）、遠隔データオブジェクトにおけるファンクションを起動するためのプログラムを格納する読み取り専用メモリ（５０１）、及び前記プログラムの実行中に変更される変数を格納するための複数のレジスタを有するランダムアクセスメモリ（５０２）を含むことを特徴とする請求項１２乃至１５のいずれか一項に記載の転送装置。
【請求項１７】
前記関連付けテーブルを、他のコンピュータから更新要求を受信する都度更新する手段を更に備えることを特徴とする請求項１２に記載の転送装置。
【請求項１８】
前記更新要求から取り出されたデータオブジェクトを、他のコンピュータの有するコンピュータアプリケーションにより用いられたプログラミング言語へマーシャリングする手段を更に有することを特徴とする請求項１７に記載の転送装置。
【請求項１９】
他のコンピュータの有する関連付けテーブルにおいて、前記更新要求から取り出されたコンピュータアドレスを識別する手段と、
識別できた場合、前記取り出されたコンピュータアドレスと関連付けて前記関連付けテーブルに格納されている以前のデータオブジェクトを、前記更新要求から取り出されたデータオブジェクトで置換する手段と
をさらに含むことを特徴とする請求項１７又は１８に記載の転送装置。
【請求項２０】
前記置換する手段は、前記更新要求から取り出されたデータオブジェクトのデータフィールドを、前記他のコンピュータの前記関連付けテーブルに格納されている、以前のデータオブジェクトにコピーすることを特徴とする請求項１９に記載の転送装置。
【請求項２１】
前記更新要求から取り出されたデータオブジェクトと前記取り出されたコンピュータアドレスとの関連付けを前記関連付けテーブルに追加する手段をさらに含むことを特徴とする請求項１７乃至２０のいずれか一項に記載の転送装置。
【請求項２２】
ローカルコンピュータ（Ｃ１）で、請求項１２に記載の転送装置で送信される、遠隔データオブジェクト（Ｏ２）のインタフェースを参照するための少なくとも１つのコンピュータアドレス（ＵＲＩ１'）を有する遠隔データオブジェクト（Ｏ２）のファンクションを起動する起動装置であって、前記インタフェースはデータオブジェクトのファンクションと属性とで構成されており、
ローカルコンピュータ（Ｃ１）で、通信ネットワーク（４）の通信プロトコルにより使用できる通信言語（XML）へマーシャリングされた前記遠隔データオブジェクト（Ｏ２）のコピーを、前記コンピュータ通信ネットワークから受信する手段（５００、５０１、５０２）と、
受信された前記データオブジェクト（Ｏ２）から前記オブジェクト（Ｏ２）のインタフェース（Ｉ１）を参照するための少なくとも１つのコンピュータアドレス（ＵＲＩ１'）を取り出す手段（５００、５０１、５０２）と、
前記取り出されたコンピュータアドレス（ＵＲＩ１'）を含む前記インタフェースの獲得要求を遠隔コンピュータ（Ｃ３）へ送信する手段（５００、５０１、５０２）と、
前記送信に対する応答として、ファンクションの実行コードがそれぞれ関連付けられた１つ又は複数のファンクションを有する前記インタフェース（Ｉ１）を前記遠隔コンピュータから受信する手段（５００、５０１、５０２）とを有することを特徴とする起動装置。
【請求項２３】
前記受信されたインタフェースの１つ又は複数のファンクションと前記ファンクションの実行コードとを有するクラスを前記ローカルコンピュータ（Ｃ１）のデータ処理アプリケーションにより使用されるプログラミング言語（XML）で作成する手段（５００、５０１、５０２）をさらに有することを特徴とする請求項２２記載の起動装置。
【請求項２４】
マイクロプロセッサ（５００）、遠隔データオブジェクトにおけるファンクションを起動するためのプログラムを格納する読み取り専用メモリ（５０１）、及び前記プログラムの実行中に変更される変数を格納するための複数のレジスタを有するランダムアクセスメモリ（５０２）を含むことを特徴とする請求項２２又は２３に記載の起動装置。
【請求項２５】
請求項１２乃至２１のいずれか１項に記載の、データオブジェクトを転送する転送装置を有することを特徴とするコンピュータ。
【請求項２６】
請求項２２乃至２４のいずれか１項に記載の、遠隔データオブジェクトのファンクションをコンピュータで起動する起動装置を有することを特徴とするコンピュータ。
【請求項２７】
請求項１２乃至２１のいずれか１項に記載の、データオブジェクトを転送する転送装置及び請求項２２乃至２４のいずれか１項に記載の、遠隔データオブジェクトのファンクションをローカルコンピュータで起動する起動装置またはそのいずれか一方を有することを特徴とするコンピュータ通信ネットワーク。
【請求項２８】
前記コンピュータ通信ネットワークは、ワイドエリアネットワークを形成することを特徴とする請求項２７に記載のコンピュータ通信ネットワーク。
【請求項２９】
コンピュータにより請求項１乃至９のいずれか一項に記載の転送方法を実行させるためのコンピュータプログラムを記憶したコンピュータ可読記憶媒体。
【請求項３０】
コンピュータにより、請求項１０又は１１に記載の、ローカルコンピュータでファンクションを起動する起動方法を実行させるためのコンピュータプログラムを記憶したコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、概括的な言葉では、通信ネットワークにおけるデータ対象物（オブジェクト）の共用管理を改善することを目指している。
【０００２】
第１の態様によれば、本発明は、コンピュータ通信ネットワークでデータオブジェクトをマーシャリング（marshalling）する方法に関する。
【０００３】
また、本発明は、コンピュータ通信ネットワークでデータオブジェクトを転送する方法及びコンピュータ通信ネットワークの１つのサイトにおいてデータオブジェクトを遠隔更新する方法に関する。
【０００４】
別の態様によれば、本発明は、コンピュータ通信ネットワークで、データオブジェクトに対しファンクションを遠隔実行する方法に関する。
【０００５】
また、本発明は、遠隔データオブジェクトのファンクションをローカルコンピュータで起動する方法、コンピュータ通信ネットワークでインタフェースを転送する方法、遠隔コンピュータでデータオブジェクトのファンクションを起動するためのコンピュータ要求を生成する方法、及びコンピュータ通信ネットワークで遠隔コンピュータのデータオブジェクトのファンクションを起動する方法にも関する。
【０００６】
これに相関して、本発明は、全て本発明による上記の方法を実現するのに適合する装置であるデータオブジェクトをマーシャリングする装置、データオブジェクトを転送する装置、及びコンピュータ通信ネットワークの１つのサイトにおいてデータオブジェクトを遠隔更新する装置に関する。
【０００７】
また、本発明は、コンピュータ通信ネットワークで、データオブジェクトに対しファンクションを遠隔実行する装置、遠隔データオブジェクトのファンクションをローカルコンピュータで起動する装置、コンピュータ通信ネットワークでインタフェースを転送する装置、遠隔コンピュータでデータオブジェクトのファンクションを起動するためのコンピュータ要求を生成する装置、及びコンピュータ通信ネットワークで遠隔コンピュータにおけるデータオブジェクトのファンクションを起動する装置にも関する。
【０００８】
本発明は、概括的な言葉ではネットワークに接続するサイト間の情報の転送を可能にするコンピュータ通信ネットワークの分野にある。
【０００９】
本発明は、ネットワークに接続する異なるサイトの間の通信プロトコルを定義する通信ネットワークに適用される。
【００１０】
【従来の技術】
このようなネットワークの一例は、HTTP（Hypertext Transfer Protocol）通信プロトコルに基づいて構築される、インターネットなどの世界にまたがる通信ネットワークであると考えられるが、これには限定されない。
【００１１】
このような通信ネットワークは、例えば、XML（Extended Markup Language）などの注釈言語も定義するので、特に、これらのネットワークを介して、通常は「ポインタ」と呼ばれるハイパーテキストリンクにより文書を互いに連結することが可能になる。
【００１２】
本発明は、特にこのようなコンピュータ通信ネットワークにおけるデータオブジェクトの共用管理を改善することを目的としている。
【００１３】
分散オブジェクトシステムにおいては、データオブジェクトは属性と呼ばれるデータと、入力引数をおそらく使用するファンクションとから構成される１つの要素である。従来、それらのファンクションはオブジェクトのデータを操作するために呼び出し可能である。
【００１４】
オブジェクト及び属性に適用可能である全てのファンクションはそのインタフェースを構成する。
【００１５】
各データオブジェクトは、そのオブジェクトが作成されたネットワークの中のサイトで使用されるデータ処理アプリケーションが使用するプログラミング言語で作成される。
【００１６】
そのようなプログラミング言語は、例えばJAVA又はＣ++などの名称で知られている。
【００１７】
データオブジェクトを通信ネットワークで共用できるようにするには、データオブジェクトが通信ネットワークのアーキテクチャにも、データ処理アプリケーションがそのオブジェクトを作成したときのプログラミング言語にも左右されないように、オブジェクトを符号化することが必要である。
【００１８】
これは、別のコンピュータが同一のネットワークアーキテクチャをもてないため、又は異なるデータ処理アプリケーションを実現する可能性があるために必要である。
【００１９】
データオブジェクトが別のサイトで受信された場合、この第２のサイトで使用されるデータ処理アプリケーションのオブジェクトの表現を獲得するためにオブジェクトに逆マーシャリング動作を適用しなければならない。
【００２０】
Allaire Corporation社は、最近、ネットワークでデータオブジェクトを分散させることを可能にするWDDXシステムを開発した。このWDDXシステムは、通信ネットワークを介する複雑なデータ構造の交換を容易にするために、XML通信言語を使用する。
【００２１】
例えば、WDDXシステムはＣ言語でプログラムされたデータ構造をXML通信言語へマーシャリングした後、ネットワークにおける第１のコンピュータから第２のコンピュータへ転送し、最終的に第２のコンピュータにおいて等価のデータ構造へ逆マーシャリングすることができる。
【００２２】
しかし、このWDDXシステムは、複雑な構造のデータフィールドを有するデータオブジェクトのマーシャリング及び転送にはあまり適していない。そのような複雑な構造は、特に、１つのデータフィールドがそれ自体複雑でもある少なくとも１つの他のデータフィールドを指示する又は含んでいる場合に見られる。
【００２３】
この場合、WDDXシステムは、下位のデータ構造のXML表現をも含ませるためにより上位のデータ構造のXML表現を要求し、これは再帰的に循環する。
【００２４】
この進行方式は、ネットワークを介するデータオブジェクトのマーシャリング及び転送の性能に大きな影響を及ぼす。
【００２５】
加えて、XML通信言語での表現はネットワークの広い帯域幅を無用に占め、その一方で、宛先サイトが現実には下位のデータ構造を必要としない場合も起こりうる。
【００２６】
更に、このWDDXシステムはデータの転送にのみ関連し、遠隔場所でデータのファンクションを呼び出すことはできない。
【００２７】
通常、オブジェクトのインタフェースはWDDXシステムには関係しない。
【００２８】
また、Datachannel社は、通信ネットワークを介するデータオブジェクトの分散を可能にするWeb Brokerシステムを提案した。
【００２９】
このWeb Brokerシステムによれば、ネットワークにおけるインタフェースの概念を定義することができる。
【００３０】
【発明が解決しようとする課題】
しかし、このシステムでは、インタフェースに記載されるファンクションに関わるソースコードを獲得することは不可能である。従って、ローカルコンピュータでこのファンクションを再実行したり、遠隔オブジェクトのコピーでファンクションをローカルに呼び出したりすることはできない。
【００３１】
本発明の目的は、通信ネットワークにおけるデータオブジェクトの共用を容易にすることである。
【００３２】
【課題を解決するための手段】
この目的を達成するために、本発明は、第一に、コンピュータ通信ネットワークにおいてデータオブジェクトをデータ処理アプリケーションにより使用されるプログラミング言語から前記コンピュータ通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングするマーシャリング方法であって、
前記データオブジェクトに含まれるデータフィールドを読み取るステップと、
前記データフィールドの構造が複雑である場合、前記データフィールドと関連するコンピュータアドレスを前記データフィールドの代わりに用いるステップと、
前記データフィールドと関連する前記コンピュータアドレスを関連付けテーブルに格納するステップとを有するマーシャリング方法に関する。
【００３３】
即ち、本発明によるデータオブジェクトをマーシャリングする方法によれば、少なくとも１つの複雑なデータフィールドをコンピュータアドレスと一時的に置き換え、通信ネットワークにおけるサイトにより要求される場合に限り、必要に応じて、このデータフィールドの通信言語へのマーシャリングを進行することができる。
【００３４】
データオブジェクトに含まれるデータフィールドには、データ又は属性プロパーと、このオブジェクトに関連するインタフェースと、適用可能なファンクションとがある。
【００３５】
コンピュータアドレスを各データフィールドと関連付けて格納する関連付けテーブルの使用により、ネットワークに接続するあらゆるサイトで、異なる複雑なデータフィールドを見ることができる。
【００３６】
リテラルオブジェクトのみが値によりマーシャリングされる。
【００３７】
これらのリテラルオブジェクトは、例えば、整数、十進数、ブール要素、文字又は短い文字列である。
【００３８】
本発明の好ましい特徴によれば、格納するステップで、前記データフィールドは前記プログラミング言語で格納される。
【００３９】
即ち、このデータフィールドを実際にプログラミング言語から通信言語へマーシャリングする必要なく、関連付けテーブルに格納されているコンピュータアドレスを利用することによって、異なるデータフィールドの表現をあらかじめ生成しておくことが可能である。
【００４０】
コンピュータアドレスを介してネットワーク中のサイトの１つからオブジェクトが要求されるまで、通信言語へのマーシャリングを延期することができる。
【００４１】
実際には、複雑なデータ構造は少なくとも１つのデータオブジェクト、アレイ又は最小限の長さの文字のチェーンの中から選択される。
【００４２】
即ち、複雑なデータフィールドそれ自体がデータオブジェクトである場合、本発明のマーシャリング方法によれば、インターネットで使用されているHTML注釈言語に含まれるポインタと同様に、他のデータオブジェクトを指示するリンクによってデータオブジェクトの表現を獲得することが可能である。
【００４３】
このようにして、インターネット型の通信ネットワークにおいてワールドワイドウェブを形成する、互いを指示し合う文書の図と同様の、データオブジェクトの図が得られる。
【００４４】
本発明の有利な特徴によれば、マーシャリング方法は、データフィールドの構造をあらかじめ確定された複雑なデータ構造のリストと比較するステップを含む。
【００４５】
実際に、この比較により、データオブジェクトに含まれる複雑なデータフィールドを検出し、それらとコンピュータアドレスを関連付けることが容易になる。
【００４６】
本発明の第２の態様によれば、コンピュータ通信ネットワークでデータオブジェクトを転送する方法は、
コンピュータの転送要求を受信するステップと、
前記コンピュータの要求からコンピュータアドレスを取り出すステップと、
関連付けテーブルにおいて前記コンピュータアドレスと関連するデータオブジェクトを識別するステップと、
前記識別されたデータオブジェクトを前記通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングするステップと、
前記マーシャリングされたデータオブジェクトを転送するステップとを有する。
【００４７】
即ち、関連付けテーブルにおける各データオブジェクトをそのコンピュータアドレスによって識別することにより、コンピュータオブジェクトを通信ネットワークで容易に共用でき、また、要求に応じてデータオブジェクトを１つのサイトから別のサイトへ転送することができる。
【００４８】
本発明の第３の態様によれば、コンピュータ通信ネットワークにおけるサイトでデータオブジェクトを遠隔更新する方法は、
コンピュータの更新要求を受信するステップと、
前記コンピュータの要求からコンピュータアドレスを取り出すステップと、
前記コンピュータの要求から前記コンピュータ通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングされたデータオブジェクトを取り出すステップと、
取り出された前記コンピュータアドレス及びデータオブジェクトを前記サイトの関連付けテーブルで関連付けるステップとを有する。
【００４９】
即ち、コンピュータアドレスと、通信言語へマーシャリングされたデータオブジェクトの双方を含むコンピュータの要求から、遠隔サイトの関連付けテーブルを更新することが可能である。
【００５０】
実際に、あるデータオブジェクトに対して動作が実行され、データフィールドが変更されたとき、そのデータオブジェクトが変更されたサイトはネットワークにおけるあらゆるサイトへ一斉更新コンピュータ要求を送信できるので、送信を受けたサイトはそれぞれ格納されている関連付けテーブルを更新する。
【００５１】
各サイトは、遠隔サイトでコピーされたデータオブジェクトのリストを、それらの遠隔サイトのアドレスと関連付けてメモリに格納し、関連するオブジェクトが変更されたとき、それらの遠隔サイトへ更新要求を送信することもできる。
【００５２】
遠隔更新方法は、取り出されたデータオブジェクトを前記サイトのコンピュータアプリケーションにより使用されるプログラミング言語へマーシャリングするステップを更に含むのが好ましい。
【００５３】
即ち、各サイトは、そのサイトのデータ処理アプリケーションに特有のプログラミング言語へマーシャリングされたデータオブジェクトをその内部データにおいて更新することができる。
【００５４】
この遠隔更新方法の好ましい特徴によれば、関連付けるステップは、
前記サイトの関連付けテーブルにて取り出されたコンピュータアドレスを識別するステップと、
識別された場合、取り出されたデータオブジェクトを、関連付けテーブルにて前記取り出されたコンピュータアドレスと関連付けて格納された以前のデータオブジェクトの代わりに用いるステップとを含む。
【００５５】
即ち、関連付けテーブルは、コンピュータアドレスが転送されてくる新たなデータオブジェクトと関連付けられるように更新される。
【００５６】
代わりに用いるステップにおいて、取り出されたデータオブジェクトのデータフィールドは前記サイトの関連付けテーブルに格納された以前のデータオブジェクトにコピーされるのが好ましい。
【００５７】
即ち、関連付けテーブルに格納されている以前のデータオブジェクトを全て排除するのではなく、新たなオブジェクトのデータフィールドを以前のデータオブジェクトに１つずつコピーする。その結果、以前のデータオブジェクトを指示していたアプリケーション内部の全てのリンクはそのまま有効であり、この後は更新されたデータオブジェクトを指示することになる。
【００５８】
あるいは、関連付けるステップは、
前記サイトの関連付けテーブルにて取り出されたコンピュータアドレスを識別するステップと、
識別されなかった場合、前記取り出されたデータオブジェクトと取り出されたコンピュータアドレスとの関連を前記サイトの関連付けテーブルに追加するステップとを含む。
【００５９】
この場合、更新の要求の結果として得られた新たなデータオブジェクトを挿入することにより、遠く離れてサイトの関連付けテーブルに追加することができる。
【００６０】
本発明の第４の態様によれば、本発明は、コンピュータ通信ネットワークで、データオブジェクトのファンクションを遠隔場所から実行する方法に関する。
【００６１】
実際、周知のシステムにおいては、遠隔コンピュータに格納されたデータオブジェクトに対しファンクションを実現することは一般には不可能である。
【００６２】
しかし、コンピュータ通信ネットワークでは、主な制約はこのネットワークで利用できる伝送速度と帯域幅である。
【００６３】
本発明の別の目的は、コンピュータ通信ネットワークで、データオブジェクトのファンクションを遠隔地から実行できるようにすることである。
【００６４】
本発明によれば、この実行方法は、通信ネットワークの通信プロトコルに従って、ファンクションの実行コードと関連する前記ファンクションを転送するステップを含む。
【００６５】
従って、データオブジェクトのインタフェースにリストアップされているファンクションの実行コードを遠隔地から獲得することが可能である。
【００６６】
これにより、データオブジェクトの状態のみではなく、データオブジェクトの行動をネットワークを介して搬送することが可能になる。
【００６７】
この方法によれば、ネットワークの中のコンピュータで実現されるデータ処理アプリケーションが少なくとも１つの実行コード、例えば、ECMA Script（JAVA Script１．３）などのソースコードを支援するため、遠隔地でファンクションを再定義する可能性が開ける。
【００６８】
即ち、ファンクション実行コードはネットワーク上で見ることができるものとなる。
【００６９】
本発明の好ましい特徴によれば、前記転送するステップにおいて、前記ファンクションはコンピュータ通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングされた少なくとも１つのパラメータとも関連付けられる。
【００７０】
即ち、前記転送するステップでは入力引数も転送され、選択された入力引数をファンクションと関連付けることにより、ファンクションを実現することができる。
【００７１】
遠隔実行方法は、通信ネットワークの通信プロトコルに従って、前記ファンクションの実行コードとそれぞれ関連する１つ又は複数のファンクションを含むデータオブジェクトのインタフェースを転送するステップを含むのが好ましい。
【００７２】
データオブジェクトと関連するファンクションのみならず、そのインタフェース全体をも通信ネットワーク上で転送し、見ることができるようにすることが可能である。インタフェースにおいては、通信ネットワークの遠隔場所からファンクションを実行できるようにするために、リストアップされている各ファンクションがその実行コードと関連付けられている。
【００７３】
実際に、実行コードはデータ処理アプリケーションによりいつでも実行できる、JAVA Scriptコードなどのソースコード、バイトコードなどの事前コンパイル済みコード又はコンパイルされたコードである。
【００７４】
本発明の第５の態様によれば、ローカルコンピュータで、コンピュータ通信ネットワーク上の遠隔データオブジェクトのファンクションを起動する方法は、
ローカルコンピュータで、通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングされた前記遠隔データオブジェクトのコピーを受信するステップと、
受信された前記データオブジェクトから前記データオブジェクトのインタフェースを参照する少なくとも１つのコンピュータアドレスを取り出すステップと、
コンピュータアドレスを含む前記インタフェースの獲得要求を遠隔コンピュータへ送信するステップと、
前記ファンクションの実行コードとそれぞれ関連する１つ又は複数のファンクションを含む前記インタフェースを受信するステップとを含む。
【００７５】
即ち、この起動方法により、ローカルコンピュータで、遠隔データオブジェクトと、少なくとも１つの関連インタフェースの双方をコピーすることが可能になるので、オブジェクトのファンクションをオブジェクトのコピーによりローカルコンピュータに直接に適用することができる。
【００７６】
そこで、ファンクションの実行は、このような通信システムにおいてボトルネックとなっているネットワーク利用可能帯域幅には左右されなくなる。
【００７７】
加えて、このファンクションの起動は、ローカルコンピュータが間欠的にしかネットワークに接続されない場合でも実現可能である。
【００７８】
尚、インタフェースの各ファンクションと関連する実行コードをネットワークにより使用できる通信言語へマーシャリングして、直接に応答に含めるか、あるいは、ネットワークでこの実行コードを参照するコンピュータアドレスによって参考として含めるだけにとどめるかのいずれかが可能であることに注意すべきである。後者の場合、ローカルコンピュータは、関連するファンクションを実行すべきときに限り、一旦据え置き方式でこの実行コードの転送を要求することができる。
【００７９】
有利な特徴によれば、起動方法は、受信した前記インタフェースの１つ又は複数のファンクションと、これらファンクションの実行コードとを含むクラスを前記ローカルコンピュータのデータ処理アプリケーションにより使用されるプログラミング言語で作成するステップを更に含む。
【００８０】
このようにして、ローカルコンピュータにおいて関連するソースコードからクラスをコンパイルすることにより得られたであろうクラスに類似する標準クラスを獲得する。
【００８１】
本発明の第６の態様によれば、コンピュータ通信ネットワークで、本発明による起動方法の送信するステップで送信される獲得要求に応答してインタフェースを転送する方法は、
前記獲得要求を受信するステップと、
前記インタフェースを参照するコンピュータアドレスを取り出すステップと、
前記コンピュータアドレスをインタフェースと関連付けて格納する関連付けテーブルにおいて前記インタフェースを識別するステップと、
前記ファンクションの実行コードとそれぞれ関連する１つ又は複数のファンクションを含み、ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングされた前記インタフェースを転送するステップとを含む。
【００８２】
このインタフェースを転送する方法により、データオブジェクトのコピーに対しこのファンクションを遠隔場所で実行できるようにするために、関連付けテーブルに基づいて、データオブジェクトと関連するインタフェースを見出し、このインタフェースをネットワークにおける別のコンピュータへ転送することが実用に即した方式で可能になる。
【００８３】
本発明の第７の態様によれば、コンピュータ通信ネットワークにおける遠隔コンピュータで、データオブジェクトのファンクションを起動するためのコンピュータ要求を生成する方法は、
前記データオブジェクトを参照するコンピュータアドレスを入力するステップと、
ファンクションの識別子を入力するステップと、
前記ファンクションと関連する実行コードを追加するステップとを含む。
【００８４】
実行すべきファンクションに加え、このファンクションと関連する実行コードも導入されるようにして、このコンピュータ要求を生成することにより、ネットワークにおける遠隔コンピュータに格納されているデータオブジェクトに対し、遠く離れてこのファンクションを実行することが可能である。
【００８５】
即ち、遠隔コンピュータのファンクション性は固定されているわけではなく、遠隔起動のための、ファンクションとその実行コードの双方を識別することを可能にするそのようなコンピュータの要求を受信することにより、ファンクション性を拡張することができる。
【００８６】
本発明の第８の態様によれば、コンピュータ通信ネットワークで、遠隔コンピュータ上のデータオブジェクトのファンクションを起動する方法は、
本発明による生成方法に従って生成された起動要求を受信するステップと、
前記起動要求から、データオブジェクトを参照するコンピュータアドレスを取り出すステップと、
前記ファンクションの識別子を取り出すステップと、
前記ファンクションと関連する実行コードを取り出すステップと、
データオブジェクトに対して前記取り出されたコードを実行するステップとを含む。
【００８７】
即ち、通信ネットワークのデータオブジェクトに対し、遠隔場所からファンクションを呼び出し、起動することができる。
【００８８】
これと関連して、本発明は、コンピュータ通信ネットワークでデータオブジェクトをデータ処理アプリケーションにより使用されるプログラミング言語から前記コンピュータ通信ネットワークの通信プロトコルにより使用できる通信言語にマーシャリングする装置であって、
前記データオブジェクトに含まれるデータフィールドを読み取る手段と、
前記データフィールドの構造が複雑である場合、前記データフィールドと関連するコンピュータアドレスを前記データフィールドの代わりに用いる手段と、
前記データフィールドと関連する前記コンピュータアドレスを関連付けテーブルに格納する手段とを有するマーシャリング装置に関する。
【００８９】
本発明の第２の態様によれば、コンピュータ通信ネットワークでデータオブジェクトを転送する装置は、
コンピュータの転送要求を受信する手段と、
前記コンピュータの要求からコンピュータアドレスを取り出す手段と、
関連付けテーブルにおいて前記コンピュータアドレスと関連するデータオブジェクトを識別する手段と、
前記識別されたデータオブジェクトを前記通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングする手段と、
前記マーシャリングされたデータオブジェクトを転送する手段とを有する。
【００９０】
本発明の第３の態様によれば、コンピュータ通信ネットワークにおけるサイトでデータオブジェクトを遠隔更新する装置は、
コンピュータの更新要求を受信する手段と、
前記コンピュータの要求からコンピュータアドレスを取り出す手段と、
前記コンピュータ要求から前記コンピュータ通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングされたデータオブジェクトを取り出す手段と、
前記サイトの関連付けテーブルで、前記コンピュータアドレスと取り出されたコンピュータオブジェクトとを関連付ける手段とを有する。
【００９１】
本発明の第４の態様によれば、コンピュータ通信ネットワークで、データオブジェクトのファンクションを遠く離れて実行する装置は、通信ネットワークの通信プロトコルに応じて前記ファンクションの実行コードと関連するファンクションを転送する転送手段を有する。
【００９２】
本発明の第５の態様によれば、ローカルコンピュータでコンピュータ通信ネットワーク上の遠隔データオブジェクトのファンクションを起動する装置は、
ローカルコンピュータで、通信ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングされた前記遠隔データオブジェクトのコピーを受信する手段と、
受信された前記データオブジェクトから前記オブジェクトのインタフェースを参照する少なくとも１つのコンピュータアドレスを取り出す手段と、
コンピュータアドレスを含む前記インタフェースを獲得するための要求を遠隔コンピュータへ送信する手段と、
前記ファンクションの実行コードとそれぞれ関連する１つ又は複数のファンクションを有する前記インタフェースを受信する手段とを有する。
【００９３】
本発明の第６の態様によれば、本発明による前記起動装置の送信する手段により送信される獲得要求に応答して、コンピュータ通信ネットワークでインタフェースを転送する装置は、
前記獲得要求を受信する手段と、
前記インタフェースを参照するコンピュータアドレスを取り出す手段と、
前記コンピュータアドレスをインタフェースと関連付けて格納する関連付けテーブルで前記インタフェースを識別する手段と、
ネットワークの通信プロトコルにより使用できる通信言語へマーシャリングされ、前記ファンクションの実行コードとそれぞれ関連する１つ又は複数のファンクションを有する前記インタフェースを転送する手段とを有する。
【００９４】
本発明の第７の態様によれば、コンピュータ通信ネットワークの遠隔コンピュータでデータオブジェクトのファンクションを起動するためのコンピュータ要求を生成する装置は、
前記データオブジェクトを参照するコンピュータアドレスを入力する手段と、
ファンクションの識別子を入力する手段と、
前記ファンクションと関連する実行コードを追加する手段とを有する。
【００９５】
本発明の第８の態様によれば、コンピュータ通信ネットワークで、遠隔コンピュータ上のデータオブジェクトのファンクションを起動する装置は、
本発明による生成方法に従って生成された起動要求を受信する手段と、
前記起動要求からデータオブジェクトを参照するコンピュータアドレスを取り出す手段と、
前記ファンクションの識別子を取り出す手段と、
前記ファンクションと関連する実行コードを取り出す手段と、
取り出されたコードをデータオブジェクトで実行する手段とを有する。
【００９６】
これら様々な装置の特徴及び利点は、先に、それらの装置が実現する本発明による方法に関してそれぞれ説明した特徴及び利点と同様である。
【００９７】
また、本発明は、全て本発明に従った装置であるデータオブジェクトをマーシャリングする装置及び／又はデータオブジェクトを転送する装置及び／又は遠隔更新装置及び／又は遠隔実行装置及び／又はファンクションをローカルコンピュータで起動する装置及び／又はインタフェース転送装置及び／又は起動のためのコンピュータ要求を生成する装置及び／又は遠隔コンピュータでファンクションを起動する装置を有するコンピュータに関する。
【００９８】
更に、本発明は、全て本発明に従って装置であるデータオブジェクトをマーシャリングする装置及び／又はデータオブジェクトを転送する装置及び／又は遠隔更新装置及び／又は遠隔実行装置及び／又はファンクションをローカルコンピュータで起動する装置及び／又はインタフェース転送装置及び／又は起動のためのコンピュータ要求を生成する装置及び／又は遠隔コンピュータでファンクションを起動する装置を含むコンピュータ通信ネットワークにも関する。
【００９９】
これらのコンピュータ及びコンピュータ通信ネットワークは、先に本発明による方法に関連して説明したのと同様の利点を有する。
【０１００】
更に、本発明は、コンピュータに組み込まれているか又は組み込まれていないかに関わらず、おそらくは着脱自在である記憶手段又は情報キャリアに格納され、全て本発明に従った方法である本発明によるマーシャリング方法のステップ及び／又は本発明による転送方法のステップ及び／又は本発明による遠隔更新方法のステップ及び／又は遠隔実行方法のステップ及び／又はローカルコンピュータでファンクションを起動する方法及び／又はインタフェース転送方法のステップ及び／又は起動のためのコンピュータ要求を生成する方法及び／又は遠隔コンピュータでファンクションを起動する方法のステップを、コンピュータで実行されたときに実現するためのソフトウェアコード又はプログラム命令の一部を含むコンピュータプログラムにも関する。
【０１０１】
【発明の実施の形態】
以下に一実施形態を説明する本発明は、通常コンピュータ通信ネットワークに適用される。
【０１０２】
本発明は、特に非常に多くの数のコンピュータサーバが互いに接続されているワイドエリア通信ネットワークに適している。
【０１０３】
そのようなネットワークとしては、例えば、通信ネットワークに接続するコンピュータの間の文書交換を可能にする通信プロトコルに基づいて構築された、インターネットなどの世界的通信ネットワークが考えられる。
【０１０４】
そのようなインターネットネットワークを一例として図１に示す。
【０１０５】
この例では、３つのコンピュータネットワークＲ１、Ｒ２及びＲ３は、例えばインターネットネットワークによって互いに接続されたイーサネット型のネットワークであるが、この構成には限定されない。
【０１０６】
各ネットワークＲ１、Ｒ２及びＲ３は１台又は複数台のコンピュータを有する。この場合、例えばネットワークＲ１は２台のコンピュータＣ１及びＣ２を有し、ネットワークＲ２は１台のコンピュータＣ３を有し、ネットワークＲ３は３台のコンピュータＣ４、Ｃ５及びＣ６を有する。
【０１０７】
従って、それぞれのコンピュータＣ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５及びＣ６は他のいずれかのコンピュータとの間でデータを送受信することができる。
【０１０８】
このようなネットワークでは、情報を文書の形で格納する情報システムは通信ネットワークに基づいて構築されるのが普通である。
【０１０９】
格納される文書がいくつかの文書を互いにリンクする、ポインタとも呼ばれるハイパーテキストリンクを含むように、このような情報システムはハイパーテキストシステムであっても良い。言い換えれば、文書は他の文書を指示するポインタを含み、ネットワークのユーザは最初の文書のポインタを起動することにより、他の文書の送信を要求することができる。
【０１１０】
インターネット通信ネットワークに基づいて構築された従来のハイパーテキストシステムの一例は、ハイパーテキスト転送プロトコル（HTTP）を通信プロトコルとして使用できるＷＷＷ（World Wide Web）システムである。
【０１１１】
このような通信ネットワークにおいては、データ処理サイトから全ての文書を１つのコンピュータサーバのメモリにグルーピングするので、通信ネットワークは非常に多くの数のサイトを互いに接続することができる。図１に示すそれぞれのコンピュータＣ１からＣ６自体がネットワークを介して送信されて来る要求に応答して文書をサーブするコンピュータサーバ、又はこのネットワークを介して文書を要求するための要求を送信する通信ネットワークのユーザ（クライアントとも言う）になりうることは容易に理解されるであろう。
【０１１２】
通信ネットワークにおいて従来の情報システムを形成するそれらの文書に加え、コンピュータＣ１からＣ６はデータ処理アプリケーションによってデータオブジェクトを格納し、作成することも可能である。
【０１１３】
データオブジェクトは異なる属性を同時に含み、且つオブジェクトのデータを操作することを可能にする一組のファンクションを含む要素であると定義される。それら一連のファンクションと属性がデータオブジェクトのインタフェースを形成している。
【０１１４】
各データオブジェクトは、データ処理アプリケーションにより使用されるプログラミング言語で作成できる。そのようなプログラミング言語は、例えば、JAVA又はＣ++の名称で知られている。
【０１１５】
従来、そのような分散型オブジェクトシステムにおいては、それらのデータオブジェクトは互いを指示し合っていた。即ち、１つのオブジェクトのいくつかのデータフィールドそれ自体がデータオブジェクトである。
【０１１６】
図２に、矢印により示されるリンクによって互いに指示し合うオブジェクトを明確に示す。
【０１１７】
即ち、コンピュータＣ１に常駐する第１のオブジェクトＯ１は、コンピュータＣ３に常駐するオブジェクトＯ２と、コンピュータＣ５に常駐するオブジェクトＯ３の双方を指示する。
【０１１８】
オブジェクトＯ３は、第１のコンピュータＣ１に常駐するオブジェクトＯ４を指示する。
【０１１９】
この場合、オブジェクトＯ４はオブジェクトＯ１を指示しており、これら２つのオブジェクトＯ１及びＯ４は同じコンピュータＣ１にある。
【０１２０】
図２は、互いに指示し合うオブジェクトのシステムの単なる一例であるに過ぎない。一般的に言えば、Ｏ１及びＯ３のようないくつかのオブジェクトは指示するオブジェクトであると同時に指示されるオブジェクトでもあり、また、互いに指示し合うオブジェクトはオブジェクトＯ１及びＯ４のように同じコンピュータに属する場合もあり、オブジェクトＯ１及びＯ２のように異なるコンピュータに属する場合もあるということを指摘しておけば十分である。
【０１２１】
本発明を実現するコンピュータ、例えば、通信ネットワークＲ１におけるコンピュータＣ１は図３にも示されている。
【０１２２】
このコンピュータはマイクロプロセッサ５００と、本発明を実現するためのプログラムを格納する読み取り専用メモリ５０１と、プログラムの実行中に変更される変数を記録するための複数のレジスタを具備するランダムアクセスメモリ５０２とを有する。
【０１２３】
このコンピュータＣ１は、例えば、文書を受信し且つ格納するために、入出力カード５１１によりデジタルカメラ８００、マイクロホン６０１、ヘッドホン６０２又はスピーカ６００などの様々な周辺装置に接続可能である。
【０１２４】
このコンピュータＣ１は、イーサネットネットワークＲ１などの通信ネットワーク４に接続する通信インタフェース５１０を有する。
【０１２５】
コンピュータＣ１はハードディスク５０６などの文書格納手段を更に有するか、或いはディスクドライブ５０７、コンパクトディスクドライブ５０８又はコンピュータカード読取装置５０９によって、それぞれ、ディスケット７００、コンパクトディスク（ＣＤ）７０１又はコンピュータカード（ＰＣカード）７０２などの着脱自在の文書格納手段と協働する。
【０１２６】
これらの固定格納手段又は着脱自在の格納手段は、本発明による方法のコードを格納することもできる。このコードは、マイクロプロセッサ５００により読み取られると、ハードディスク５０６に格納される。
【０１２７】
変形例として、本発明を実現するためのプログラムを読み取り専用メモリ５０１に格納することも可能であろう。
【０１２８】
第２の変形例として、プログラムを通信ネットワークＲ１により受信し、先に説明したように格納することも可能であろう。
【０１２９】
コンピュータＣ１は、例えば、キーボード５０４、マウス５０５又は他の何らかの手段によってオペレータとの間のインタフェースとなる画面５０３を更に有する。
【０１３０】
マイクロプロセッサ（中央装置）５００は、本発明の実現に関連する命令を実行する。コンピュータＣ１を始動させると、不揮発性メモリ、例えば、読み取り専用メモリ５０１に格納されている、本発明に関連するプログラム及び方法はランダムアクセスメモリ５０２へ転送される。この時点で、ランダムアクセスメモリ５０２は本発明の実行可能コードと、本発明を実現するために必要な変数とを格納することになる。
【０１３１】
通信バス５１２を介して、コンピュータＣ１の様々な部分要素の間又はコンピュータＣ１に接続する要素との間の通信が可能になる。ここで示した通信バス５１２の構成は限定的な意味を持つものではなく、詳細にいえば、マイクロプロセッサ５００は何らかの部分要素に直接又は別の部分要素によって命令を通信することができる。
【０１３２】
このコンピュータＣ１は、図４に概略的に示すマーシャリング装置１０を有する。
【０１３３】
言うまでもなく、通信ネットワークにおける各コンピュータＣ１〜Ｃ６はこのようなマーシャリング装置を含むことができる。
【０１３４】
マーシャリング装置により、あるコンピュータ言語で作成されたデータオブジェクト１１、ここではオブジェクトＣ++をインターネットネットワークのHTTP通信プロトコルにて使用できるXML言語などの通信言語へマーシャリングすることができる。
【０１３５】
同じコンピュータは、通信言語で示されたオブジェクト１２をデータ処理言語のオブジェクト１１へ変換するために逆変換を実行することができる逆マーシャリング装置１３を更に含む。
【０１３６】
従って、マーシャリング装置１０により実行されるマーシャリング動作により、コンピュータにおいてそのコンピュータのアプリケーションにより作成されたオブジェクトを見ることができるようにする、言い換えれば、それらのオブジェクトをネットワーク上で公開することができる。
【０１３７】
インターネットネットワークで使用できる通信言語の一例を、その通信ネットワークに接続する異なるサイトの間でデータオブジェクトを共用するためにマーシャリングする必要のある様々に異なるデータフィールドの説明と共に、以下に示す。
【０１３８】
この通信言語はXML言語の改良バージョンである。
【０１３９】
フィールド:Objects
これは、いくつかのオブジェクトを遠隔アプリケーションへ送信することができる。この遠隔アプリケーションは、逆マーシャリング装置１３による、遠隔アプリケーションにより使用されるデータ処理言語への逆マーシャリングを開始するために、全てのオブジェクトが受信され終わるのを待つ必要はない。
【０１４０】
0004965014.tif 000002
これは、整数、十進数、ブール要素、文字又は短い文字チェーンのようなリテラルオブジェクトではなく、種々のオブジェクトのチェーン、インタバル又はテーブルのようなコンテナオブジェクトでもないオブジェクトを符号化することができる。
【０１４１】
0004965014.tif 000003
オブジェクトは１つの属性としてそのＵＲＩコンピュータアドレスを有することができる。オブジェクトは他のデータオブジェクト、コンテナオブジェクト、リテラルオブジェクト及びオブジェクトへの参照を含むことができる。また、オブジェクトはインタフェースへの１つ又は複数の参照も含むことができ、それにより、このインタフェースに含まれるあらゆる動作又はファンクションを支援することができる。
【０１４２】
本発明のマーシャリング方法によれば、この通信言語へマーシャリングされるデータオブジェクトにデータオブジェクトとコンテナオブジェクトを直接に含めることはできるが、リテラルオブジェクトのみをマーシャリングし、他のオブジェクトは参照としてのみ含めるのが好ましい。
【０１４３】
フィールド:Interfaces
本発明の１つの態様によれば、いくつかのインタフェースを遠隔アプリケーションへ送信することが可能である。先の場合と同様、遠隔アプリケーションは、そのアプリケーションにより使用される言語への逆マーシャリングを実行し、それらを使用するために、全てのインタフェースの受信を待つ必要はない。
【０１４４】
0004965014.tif 000004
これは、JAVA又はＣ++言語で定義されている「Type」又は「Class」のオブジェクトの類型的概念に相当する。
【０１４５】
インタフェースは、オブジェクトにより支援される動作を記述する。それらの動作は通常入力引数を使用し、おそらくはある結果を供給する。
【０１４６】
インタフェースは、そのインタフェースを支援する全てのオブジェクトが通信言語へマーシャリングされるときに含む属性又はデータフィールドを更に記述する。
【０１４７】
インタフェースは、他のインタフェースへ拡張するか、又はそれら他のインタフェースを使用するためのショートハンドを供給するのみであるかに関わらず、他のインタフェースへの参照を含むことができる。その場合、オブジェクトは参照されるそれら他の全てのインタフェースを支援する。
【０１４８】
リテラルオブジェクト及び複雑オブジェクトに関しては、事前定義済みインタフェースも存在する。
【０１４９】
0004965014.tif 000005
これは、インタフェースを支援するオブジェクトが通信言語へマーシャリングされるときに含む属性のリストを格納している。このリストにはリテラルオブジェクト、コンテナオブジェクト、データオブジェクト自体及びオブジェクトへの参照が含まれる。このフィールドは空であっても良い。
【０１５０】
データオブジェクトとコンテナオブジェクトは、マーシャリングの時点で、ＵＲＩコンピュータアドレスを使用するそれらのオブジェクトへの参照と置き換えられるのが好ましい。
【０１５１】
0004965014.tif 000006
これは、このインタフェースを支援するデータオブジェクトと関連するファンクション又は動作のリストを格納している。
【０１５２】
0004965014.tif 000007
これは、「function」又は「method」の類型的概念に相当する。１つのファンクションはそのシグネチャ、例えば名前、使用される入力引数の型及びこのファンクションが実行されるときに得られるオブジェクトの型により識別される。
【０１５３】
本発明の第４の態様によれば、ファンクションはソースコード、バイトコード又はコンパイルされたコードなどの実行コードを含むことができる。この場合、ファンクションは遠隔アプリケーションにより実現できる。
【０１５４】
0004965014.tif 000008
これは、ファンクションがその実現のために必要とする入力引数のリストを格納している。
【０１５５】
0004965014.tif 000009
これは１つのファンクションの入力引数に相当し、リテラルオブジェクト、コンテナオブジェクト、データオブジェクト、又はＵＲＩコンピュータアドレスによりそれらのオブジェクトの１つへの参照であれば良い。
【０１５６】
0004965014.tif 000010
これは、１つのファンクションの実行コードと、おそらくはそのコードが供給されるであろうコンピュータ言語とを格納している。コードの型は、例えばJavaScriptなどのソースコード、Javaなどのバイトコード又はＣ++などのコンパイルされたコードと指定できる。
【０１５７】
尚、データオブジェクトをマーシャリングする場合、ファンクションがその実行コードを指定しないこともありうるという点に注意すべきである。更に、このコードが大きすぎる場合は、属性「href」による参照によってコードが含まれることになるであろう。
【０１５８】
0004965014.tif 000011
以下に、リテラルオブジェクトを表現するフィールドの非限定的リストを示す。
【０１５９】
0004965014.tif 000012
このフィールドは、本発明の第１の態様に従って、短い文字チェーンについてのみ使用されるのが好ましいという点に注意すべきであり、その他のチェーンは属性「ref」による参照によって含まれるのが好ましい。
【０１６０】
0004965014.tif 000013
これは、誤りが発生したことを指示できるようにする例外の類型的概念に相当する。
【０１６１】
0004965014.tif 000014
以下に、コンテナオブジェクトを表現するフィールドの非限定的リストも示す。
【０１６２】
フィールド:Interval
これは、上限と下限を有し、同じ型であり、順序が重要であるインタバルの類型的概念に相当する。
【０１６３】
0004965014.tif 000015
これは、順序が重要ではない様々なオブジェクトを含むセットの類型的概念に相当する。
【０１６４】
0004965014.tif 000016
これは、順序が重要である様々なオブジェクト含むアレイの類型的概念に相当する。
【０１６５】
0004965014.tif 000017
これらのセットにデータオブジェクト又はコンテナオブジェクトを含める場合には、ＵＲＩコンピュータアドレスによる参照を使用すべきである。
【０１６６】
フィールド:Coded sequence
これは、オブジェクトを直接的にではなく、キーによってアクセス可能であるようなアレイ又は辞書の類型的概念に相当する。それらのキーは、それ自体、様々なオブジェクトであっても良い。オブジェクトの順序は重要ではない。
【０１６７】
0004965014.tif 000018
これはキーの集合体の中から１つのキーを区別するために使用される。
【０１６８】
0004965014.tif 000019
これはキーの集合体の中で１つのキーの値を区別するために使用される。
【０１６９】
0004965014.tif 000020
フィールドは、参照により別のフィールドを含める目的でも定義される。
【０１７０】
フィールド:Interface reference
これにより、名前及びＵＲＩコンピュータアドレスに基づいてインタフェースを参照することが可能になる。
【０１７１】
0004965014.tif 000021
これにより、名前及びＵＲＩコンピュータアドレスに基づいてオブジェクトを参照することが可能になる。
【０１７２】
0004965014.tif 000022
これにより、名前及びＵＲＩコンピュータアドレスに基づいてチェーンを参照することが可能になる。
【０１７３】
短い文字チェーンはオブジェクトとしてマーシャリングされ、長いチェーンは参照によりマーシャリングされて、通信ネットワークの占有時間を短縮するのが好ましい。長いチェーンと短いチェーンとを分類するために選択される閾値は、データ処理アプリケーションによって決まるであろう。
【０１７４】
0004965014.tif 000023
これにより、名前及びＵＲＩコンピュータアドレスによってunordered set（順序なし集合）を参照することができる。
【０１７５】
0004965014.tif 000024
これにより、名前及びＵＲＩコンピュータアドレスによってordered set（順序付き集合）を参照することができる。
【０１７６】
0004965014.tif 000025
これにより、名前及びＵＲＩコンピュータアドレスによってunordered coded set（順序なし符号化集合）を参照することができる。
【０１７７】
0004965014.tif 000026
これにより、非既存オブジェクトを参照することができる。
【０１７８】
0004965014.tif 000027
これにより、例えば、アプリケーションがネットワークに間欠的に接続されるような場合に、遠隔オブジェクトに適用しなければならないファンクションのリストを一旦据え置きモードで含めることが可能になる。アプリケーションはあらかじめ要求を準備し、その後にその要求を送信し、その応答としてオブジェクトの集合を受信することができる。
【０１７９】
0004965014.tif 000028
応答は、要求の中で挙げられたファンクションの実行の順序に従った様々なオブジェクトの集合である。
【０１８０】
0004965014.tif 000029
これにより、遠隔オブジェクトでファンクションを呼び出すことが可能になる。先に説明した通り、ターゲットオブジェクトと、ファンクションのパラメータとを指定する必要がある。要求がオブジェクトのＵＲＩコンピュータアドレスに直接アドレッシングされている場合には、ターゲットオブジェクトを省略できる。その応答は、オブジェクトから成るか、或いは誤り発生の場合は例外から構成される。
【０１８１】
0004965014.tif 000030
本発明の１つの態様によれば、アプリケーションが遠隔オブジェクトデコードを実行することを望む場合、そのファンクション自体ではなく、実行コードを供給する必要がある。遠隔アプリケーションがファンクションを動的に評価するキャパシティを持っていない場合には、例外を返信することになる。
【０１８２】
0004965014.tif 000031
この通信言語により、ネットワーク上でデータオブジェクト及びその属性のみならず、それらのオブジェクトのインタフェースをも交換できるようになる。
【０１８３】
このようにして、オブジェクトと関連するファンクションはネットワーク上で容易に共用され、遠隔オブジェクトで実行されることができる。
【０１８４】
図５に示すように、同じコンピュータＣ１が互いに協働する２つのアプリケーション２０、２１を使用することができる。これら２つのアプリケーション２０、２１は同じオブジェクトサーバ２２を介してデータを共用できる。それぞれのアプリケーション２０、２１は一方では内部データ２３を使用し、他方では先に図４を参照して説明したマーシャリング装置を使用することによりその他のアプリケーションに対し見える状態とされる外部データ２４を使用する。
【０１８５】
外部データ２４は、実際には、それぞれのアプリケーション２０、２１により作成又は使用される内部データ２３であり、マーシャリング装置１０により２つのアプリケーションに共通する通信言語へマーシャリングされており、従って、オブジェクトサーバ２２を介していずれかのアプリケーションへ送信可能である。
【０１８６】
インタフェース２５はデータオブジェクトにリンクするファンクション及び属性をリストアップすることができる。
【０１８７】
言うまでもなく、インタネット型のネットワーク４に接続する２つのコンピュータＣ１、Ｃ３の間でも類似のファンクションが得られる。
【０１８８】
図５に示すように、コンピュータＣ３は、同様に内部データ２３と、外部データ２４とを使用する第３のアプリケーション２６を有する。それらの外部データ２４も、コンピュータＣ３のデータ処理アプリケーション２６により作成された何らかの内部データ２３をマーシャリングすることにより得られる。
【０１８９】
従って、外部データ２４は通信ネットワーク４によって、コンピュータＣ１のオブジェクトサーバ２２と同様のオブジェクトサーバ２２を介してコンピュータＣ１のアプリケーション２０及び２１に対して見える状態となっている。
【０１９０】
次に、図６、図７及び図１１を参照して、データオブジェクト及びそのインタフェースをネットワーク４上で公開することを可能にするマーシャリング方法を説明する。
【０１９１】
この例では、図２に示すようなコンピュータＣ１におけるオブジェクトＯ１のマーシャリングを考えるが、本発明はこれには限定されない。
【０１９２】
言うまでもなく、マーシャリングはネットワーク４のどのコンピュータＣ１からＣ６においても実行可能である。
【０１９３】
このオブジェクトＯ１は、コンピュータＣ１で実現されるデータ処理アプリケーション２０により使用されるプログラミング言語、例えば、Ｃ++言語で作成されていると考える。
【０１９４】
このデータオブジェクトＯ１を、コンピュータ通信ネットワーク４のHTTP通信プロトコルにより使用できる通信言語にマーシャリングする。
【０１９５】
マーシャリングの方法は、まずデータオブジェクトＯ１に含まれるデータフィールドを読み取るステップＥ１を含む。このため、オブジェクトＯ１に含まれる第１のデータフィールドを選択する。
【０１９６】
一連のテストステップＥ２、Ｅ３及びＥ４は、このデータフィールドの構造が複雑な構造であるか、又は単純な構造であるかを判定する。
【０１９７】
典型的には、複雑なデータ構造とは、例えばアレイ、最短の長さの文字のチェーン又はデータオブジェクトそれ自体である。複雑な構造を持つデータフィールドの他の例は、使用される通信言語を挙げたときに先に示してある。
【０１９８】
実際には、各データフィールドの構造を事前に確定しておいた複雑データ構造リストＬと比較する。この事前確定済みリストＬは、図３に示すように、コンピュータＣ１の読み取り専用メモリ５０１に格納可能である。
【０１９９】
従って、まず、テストステップＥ２においては、データ構造がそれ自体データオブジェクトであるか否かを判定する。
【０２００】
その答えが肯定であれば、参照によるマーシャリングのステップＥ５を以下に説明するように実行する。
【０２０１】
否定であれば、第２のテストステップＥ３で、データフィールドの構造がアレイであるか否かを判定する。
【０２０２】
その答えが肯定であれば、同様に参照によるマーシャリングのステップＥ６を以下に説明するように実行する。
【０２０３】
否定であれば、最後のテストステップＥ４を実行し、データフィールドが最小の長さの文字のチェーンＴであるか否かを判定する。
【０２０４】
その答えが肯定であれば、参照によるマーシャリングの第３のステップＥ７を以下に説明するように実行する。否定であれば、データフィールドの構造は単純であると考え、値によるマーシャリングのステップＥ８を実行する。これにより、あらゆるデータフィールドを通信言語へマーシャリングすることができる。
【０２０５】
参照によるマーシャリングのステップＥ５、Ｅ６及びＥ７は、データフィールドをＵＲＩ（「Uniform Resource Identifier」）コンピュータアドレスと置き換えるステップを構成する。
【０２０６】
この置き換えステップＥ５，Ｅ６及びＥ７は、現実には、複雑なデータフィールド全体を直接にマーシャリングするのではなく、それをコンピュータアドレスと置き換えることから成るので、必要に応じて、このデータフィールドを見出すことは可能である。
【０２０７】
参照によるマーシャリングを実行するこれら同一のステップＥ５、Ｅ６及びＥ７は、またデータフィールドと関連するＵＲＩコンピュータアドレスを図６及び図１１に示すような関連付けテーブルＴ及びＴ’に格納するステップでもある。
【０２０８】
これらの関連付けテーブルＴ及びＴ’は、例えばランダムアクセスメモリ５０２でセットアップされ、その後、図３に示すコンピュータＣ１のハードディスク５０６のような不揮発性メモリに格納される。
【０２０９】
従って、関連付けテーブルＴ及びＴ’は複雑なデータフィールドとＵＲＩコンピュータアドレスとの関連を格納することができる。
【０２１０】
ここで、一例を挙げると、データオブジェクトＯ１をマーシャリングする場合、データオブジェクトＯ１のデータフィールドに含まれる他の２つのデータオブジェクトＯ２及びＯ３がコンピュータアドレスＵＲＩ１及びＵＲＩ３とそれぞれ関連付けて第１のテーブルＴに格納されることになる。
【０２１１】
データオブジェクトＯ１は、コンピュータアドレスＵＲＩ２と関連付けて格納される、アレイＡ１の形態を取るデータ構造を更に含むことも考えられる。
【０２１２】
また、別のコンピュータアドレスＵＲＩ４と関連して、所定の閾値より大きい長さを有するチェーンＳ１を更に含む場合もある。
【０２１３】
このマーシャリング方法は、コンピュータオブジェクトＯ１の全てのデータフィールドがマーシャリングされるのを回避するものである。
【０２１４】
更に、第２の関連付けテーブルＴ’はコンピュータアドレスＵＲＩ１’、ＵＲＩ２’、…、ＵＲＩｐ’とそれぞれ関連付けてインタフェースＩ１、Ｉ２、…、Ｉｐを格納することができる。
【０２１５】
これらのテーブルＴ及びＴ’において、データフィールドＯ２、Ａ１、Ｏ３，Ｓ１、…、Ｏｍ及びインタフェースＩ１、Ｉ２、…、Ｉｐはプログラミング言語、即ちこの場合にはコンピュータ言語Ｃ++で格納されるのが好ましい。
【０２１６】
従って、コンピュータＣ１のデータ処理アプリケーションはインタフェースを標準クラスの形態で直接使用することができる。
【０２１７】
データフィールド又はインタフェースが別のデータ処理アプリケーションにより要求され、そのデータフィールド又はインタフェースを通信ネットワークを介して転送しなければならない場合に限り、必要に応じて実行されるように、マーシャリングは一旦据え置かれる。
【０２１８】
第２のインタフェーステーブルＴ’により、コンピュータアドレスＵＲＩ’が与えられた場合に、対応するインタフェースを見出すことが可能になる。そこで、サーバはそれが支援するオブジェクトのインタフェースを管理することができる。
【０２１９】
また、データオブジェクトの型と対応するインタフェースのアドレスＵＲＩ’とを関連付けることができるようにするため、別のテーブルをサーバに格納しても良いであろう。
【０２２０】
本発明の第１の態様によるマーシャリング方法を実現するために、データフィールドを読み取る手段、置き換える手段及び格納する手段はコンピュータＣ１のマイクロプロセッサ５００に組み込まれており、読み取り専用メモリ５０１は方法を実現するためのプログラム命令を格納し、ランダムアクセスメモリは、マーシャリングの実行中に変更される変数、特に関連付けテーブルＴ、Ｔ’を複数のレジスタに格納している。
【０２２１】
更に、本発明は、図８に示すように、コンピュータ通信ネットワークを介してデータオブジェクトを転送する方法にも関する。このコンピュータオブジェクト転送方法によれば、先に説明したようなマーシャリング方法によってデータオブジェクトが見える状態になり、それらデータオブジェクトのＵＲＩコンピュータアドレスによって関連付けテーブルＴで参照されるやいなや、通信ネットワークを介してそれらのオブジェクトを呼び出すことが可能である。
【０２２２】
この転送方法は、本質的には、転送のためのコンピュータ要求を受信するステップＥ１１を含む。
【０２２３】
この転送のためのコンピュータ要求は、インターネットの通信プロトコルにより定義される従来のHTTP要求フォーマットを有すると考えられる。
【０２２４】
これは、特に、要求されているオブジェクトのコンピュータアドレスが入力されたフィールドを含むことができる。
【０２２５】
オブジェクトの転送要求GETの一例を以下に挙げる。
【０２２６】
データオブジェクトは以下の通りである。
【０２２７】
0004965014.tif 000032
このオブジェクト（「person1」）は、以下のコンピュータアドレスに位置している。
【０２２８】
http://oceania/web-obj/obj/employee1.xml
HTTP通信プロトコルに従って、転送要求GETを使用してオブジェクトを転送できる。
【０２２９】
GET/web-obj/obj/person1.xml HTTP/1.1
...
その他のオブジェクトに含まれるオブジェクトは、オブジェクトのアドレスを含まれるオブジェクトの名前と連結することにより得られるような名前を有する。例えば、先の例のオブジェクト「age」は、次のＵＲＩコンピュータアドレスを使用して直接に得ることができる。
【０２３０】
http://oceania/web-obj/obj/employee1.xml#age
このリテラルオブジェクトはそれ独自のＵＲＩアドレスを有することもできる。
【０２３１】
http://oceania/web-obj/obj/interger1.xml
ファンクションも、それが定義するインタフェースのアドレスをファンクションの名前と連結することにより参照できる。
【０２３２】
http://oceania/web-obj/class/Calculator.xml#square
次に、転送のためのコンピュータ要求のコンピュータアドレス、例えばＵＲＩ１を取り出すために、取り出しステップＥ１２を実行する。
【０２３３】
次の識別ステップＥ１３により、要求を受信したコンピュータは、関連付けテーブルＴでコンピュータアドレスＵＲＩ１と関連するデータオブジェクトＯ２を見出すことができる。
【０２３４】
更に厳密を期して、テストステップＥ４により、データオブジェクトが本当に関連付けテーブルＴから取り出されたコンピュータアドレスＵＲＩ１と関連しているか否かを検査することができる。
【０２３５】
その答えが否定であれば、従来のように、コンピュータは通信ネットワークを介して「object absent（オブジェクトなし）」型のメッセージと共に、応答として例外を返送する。
【０２３６】
これに対し、関連付けテーブルＴでオブジェクトＯ２が見つかった場合には、マーシャリングステップＥ１６を実行して、この識別されたデータオブジェクトＯ２を通信ネットワークにより定義されるXML通信言語へマーシャリングする。
【０２３７】
次に、送信されてきた転送要求に応答して、マーシャリング済みのこのデータオブジェクトＯ２を転送するステップＥ１７を実行する。
【０２３８】
転送装置の受信する手段、取り出す手段、識別する手段、マーシャリングする手段及び転送する手段はコンピュータＣ１のマイクロプロセッサ５００に組み込まれており、読み取り専用メモリ５０１はオブジェクトを転送するためのプログラム命令を格納し、ランダムアクセスメモリは、転送方法の実行中に変更される変数を格納するための複数のレジスタを含む。
【０２３９】
このように、本発明によるマーシャリング方法により、通信ネットワークにおいて、このネットワークでアクセス可能である全ての文書により形成されるウェブに類似する分散オブジェクトシステムが得られる。
【０２４０】
既存の分散オブジェクトシステムと比較して、本発明によれば、ネットワーク上の共用データオブジェクトのシステムに、通信ネットワークに関連する以下のような様々な利点を導入することが可能になる。
・ウェブのプロキシサーバではオブジェクトが隠蔽される；
・それらのオブジェクトがSSL（Secure Socket Layer）プロトコル又はSHTTP （Secure HTTP）プロトコルに従って安全に搬送される；
・それらのオブジェクトに数値サインが付される；
・それらのオブジェクトがＥメール型の電子メッセージに含まれる；
・例えば、XSL言語（Extended Style Sheet）で書かれたスタイルシートを使用して、それらのオブジェクトが視覚的に表現される；
・標準XML/DOM（Extended Markup Language/Document Object Management）アプリケーションによってオブジェクトがアクセスされる；
・ウェブの従来のツールによってそれらのオブジェクトが発見され、且つそれらがウェブのディレクトリで参照される；
・それらのオブジェクトがJavaScript型のソースコードと一体化される；
・ウェブでは従来より慣例となっているＵＲＩコンピュータアドレスによってそれらのオブジェクトに名前が付けられる；及び
・ウェブの従来通りの方法に従ってそれらのオブジェクトが符号化される。
【０２４１】
本発明の第３の態様によれば、図９に示す実施例に従ってサイトのデータオブジェクトを遠隔更新する方法をも実現することができる。
【０２４２】
このため、更新のためのコンピュータ要求をコンピュータから、例えばネットワークの中の全てのコンピュータへ送信する。そのような要求は、「一斉要求」と呼ばれる一般的要求であると考えられる。
【０２４３】
また、他のサイトへ送信されていたデータオブジェクトをそれらのサイトのアドレスと関連付けて格納し、更新の要求を関係するサイトへのみ送信することも可能である。
【０２４４】
この更新の要求はインターネットのHTTPプロトコルに従ったフォーマットで書かれても良く、特に、更新すべきオブジェクトのコンピュータアドレスを含めるためのフィールド、並びにXML言語へマーシャリングされたオブジェクト自体を含むことができる。
【０２４５】
更新要求PUTの一例を以下に示す。これによれば、要求が「oceania」と呼ばれるコンピュータへ送信されたと仮定して、アドレスhttp://oceania/web-obj/obj/person2.xmlでアクセス可能である、オブジェクト「Person」を作成することができる。
【０２４６】
0004965014.tif 000033
この更新要求PUTにより、遠隔場所にある既存のオブジェクトを変更することもできる。
【０２４７】
0004965014.tif 000034
関係するネットワークコンピュータの要求に対し、データオブジェクト自体を一旦据え置き方式で送信することができる。
【０２４８】
そこで、遠隔コンピュータは、それぞれ、まず更新のためのコンピュータ要求を受信するステップＥ２０を実行する。
【０２４９】
取り出すステップＥ２１では、このコンピュータ要求のコンピュータアドレス、例えばＵＲＩ３を取り出すことができる。
【０２５０】
取り出すステップＥ２２では、これと並行して、同じコンピュータ要求から、更新すべき、XML通信言語へマーシャリングされたデータオブジェクトＯ３を取り出すことができる。
【０２５１】
必ずしも必要ではないが、このデータオブジェクトＯ３をマーシャリングするステップＥ２３により、データオブジェクトＯ３を遠隔サイトで使用されるデータ処理アプリケーションにより使用されるプログラミング言語へ逆マーシャリングすることが可能であるのが好ましい。
【０２５２】
言うまでもなく、このマーシャリングステップＥ２３は、遠隔サイトのデータ処理アプリケーションがこのオブジェクトＯ３を必要とするときが来るまで実行を遅延されていても良いであろう。
【０２５３】
識別するステップＥ２４では、取り出されたコンピュータアドレスＵＲＩ３が遠隔サイトの関連付けテーブルＴに存在するか否かを検査することができる。
【０２５４】
テストステップＥ２５の終了時、その答えが肯定であれば、取り出されたデータオブジェクトＯ３を関連付けテーブルＴに取り出されたコンピュータアドレスＵＲＩ３と関連付けて格納されている以前のデータオブジェクトと置き換える。
【０２５５】
この更新するステップＥ２６では、オブジェクト自体を直接置き換えるのではなく、取り出されたデータオブジェクトＯ３のデータフィールドをそのサイトの関連付けテーブルＴに格納されている以前のデータオブジェクトにコピーするのが好ましい。
【０２５６】
この予防措置により、この更新後のオブジェクトＯ３を指示するリンク、即ちポインタを変化しないままに保持することができる。
【０２５７】
これに対し、テストステップＥ２５で取り出されたコンピュータアドレスＵＲＩ３に対応するオブジェクトが関連付けテーブルＴで見つからなかった場合には、取り出されたデータオブジェクトと、取り出されたコンピュータアドレスとのこの新たな関連をサイトの関連付けテーブルＴに追加するように、追加するステップＥ２７を実行する。
【０２５８】
従って、遠隔場所において、ネットワーク中のサイトの関連付けテーブルＴの内容を追加することが可能である。
【０２５９】
いずれの場合にも、この遠隔更新方法は、遠隔サイトの関連付けテーブルＴにおいて、更新要求から取り出されたコンピュータアドレスとデータオブジェクトとを関連付けることから成る。
【０２６０】
必要に応じて、更新が本当に実行されたことを証明するために更新要求を送信したコンピュータへ応答するステップＥ２８をアドレッシングしても良い。
【０２６１】
要求を受信する手段、アドレス及びオブジェクトを取り出す手段、このアドレスとオブジェクトをテーブルＴにおいて置き換え又は追加により関連付ける手段、及びオブジェクトをマーシャリングする手段は、コンピュータＣ１のマイクロプロセッサ５００に組み込まれている。読み取り専用メモリ５０１は、更新方法を実行するためのプログラム命令を格納し、ランダムアクセスメモリは更新された関連付けテーブルＴを格納している。
【０２６２】
同様に、通信ネットワークから何らかのデータオブジェクトを削除するために関連付けテーブルＴからデータオブジェクトを削除する要求も通信ネットワークを介して送信できるであろう。
【０２６３】
この場合、削除すべきオブジェクトのコンピュータアドレスを含む削除要求はネットワーク中の全てのサイト又は関係するサイトへアドレッシングされる。
【０２６４】
オブジェクトを削除するための要求DELETEの一例を以下に示す。
【０２６５】
要求DELETEが「oceania」と呼ばれるコンピュータへアドレッシングされると仮定し、この例で削除すべきオブジェクトは、アドレスhttp://oceania/web-obj/obj/person2.xmlに位置している。
【０２６６】
DELETE/web-obj/obj/person2.xml HTTP/1.1
オブジェクトは以前のＵＲＩアドレスからはアクセスできなくなっているが、メモリには残っており、コンピュータのデータ処理アプリケーションによりこれを使用することは可能である。更に、別のコンピュータアドレスを介してオブジェクトをアクセスすることは依然として可能であろう。
【０２６７】
図１０に示すように、この削除要求を受信すると（Ｅ３０）、このコンピュータアドレスとデータオブジェクトとの関連が存在すれば、その関連が関連付けテーブルＴから削除される。
【０２６８】
実際には、取り出すステップＥ３１は削除すべきデータオブジェクトのＵＲＩコンピュータアドレスを取り出す。
【０２６９】
識別するステップＥ３２を実行して、テーブルＴの中でこのＵＲＩアドレスをシークする。
【０２７０】
テストステップＥ３３の終了時に、取り出されたＵＲＩアドレスが識別されなかったならば、応答するステップＥ３４で例外を送信する。
【０２７１】
一方、取り出されたアドレスが識別された場合には、このアドレスと、それと関連するデータオブジェクトとの関連が、削除するステップＥ３５でテーブルＴから削除される。
【０２７２】
最終ステップＥ３６では、要求された削除が正しく実行されたことを指示するために、「OK」型の応答を送信することができる。
【０２７３】
先に説明した通信言語の利用と、データオブジェクトのマーシャリングによって、コンピュータ通信ネットワーク４の遠隔場所でも、このデータオブジェクトに対しファンクションを実行することが可能になる。
【０２７４】
通常、通信ネットワーク４により定義される通信プロトコルに従った転送ステップは、このファンクションの実行コードと関連するファンクションを転送する。
【０２７５】
前述したように、実行コードはソースコード、バイトコード、又はコンパイルされたコードのいずれかであれば良い。
【０２７６】
この転送するステップの間には、実行コードに加えて、ファンクションはその実行に必要なパラメータと関連付けられる。それらのパラメータもネットワーク４の通信プロトコルにより使用できる通信言語へマーシャリングされる。
【０２７７】
遠隔場所でデータオブジェクトに対しファンクションをそのインタフェースから実行することが望まれる場合、転送するステップは、それぞれが実行コードと関連する１つ又は複数のファンクションから構成される、このオブジェクトのインタフェースの全てを転送する。
【０２７８】
次に、図１２から図１５を参照して、本発明の２つの実用に即した実施形態を説明する。
【０２７９】
以下の説明を容易にし、且つ限定的な意味合いを持たせないようにするために以下の説明においては、ネットワークＲ１のコンピュータＣ１はローカルコンピュータであり、且つインターネット４を介してコンピュータＣ１に接続するネットワークＲ２のコンピュータＣ３は遠隔コンピュータであると考える。
【０２８０】
言うまでもなく、通信ネットワーク４の全てのコンピュータはローカルコンピュータ又は遠隔コンピュータのいずれかである。
【０２８１】
まず、図１２及び図１３を参照して、ローカルコンピュータＣ１において、遠隔データオブジェクト、例えば、遠隔コンピュータＣ３により作成されたデータオブジェクトＯ２に対しコンピュータ通信ネットワーク４を介してファンクションを起動することを可能にする方法を説明する。
【０２８２】
図１２に示すように、この起動方法は、まず、通信ネットワーク４の通信プロトコルにより使用できるXML通信言語へマーシャリングされた、遠隔データオブジェクトＯ２のコピーをローカルコンピュータＣ１で受信するステップＥ４０を含む。
【０２８３】
この遠隔データオブジェクトＯ２の受信は、例えば先に説明した転送要求GETなどの転送コンピュータ要求及び図８に示すような転送方法を使用して実行される。
【０２８４】
ローカルコンピュータＣ１でオブジェクトＯ２を受信したならば、このデータオブジェクトから、オブジェクトのインタフェースを参照するコンピュータアドレスＵＲＩ’を取り出すステップＥ４１を実行する。
【０２８５】
言うまでもなく、オブジェクトＯ２は、それぞれ通信ネットワーク上でコンピュータアドレスにより参照されるいくつかのインタフェースを含むことができる。
【０２８６】
遠隔コンピュータＣ３にこのインタフェースの獲得要求GETを送るステップＥ４２が実行される。このインターフェスGET要求は、取り出されたコンピュータアドレス、例えばコンピュータアドレスＵＲＩ１を含んでいる。
【０２８７】
次に、送信されてきた獲得要求に応答して、コンピュータ通信ネットワーク４を介してインタフェースを転送する方法を遠隔コンピュータＣ３で実行する。
【０２８８】
図１３に示すように、この転送方法は、まずインタフェースGET要求を受信するステップＥ５１を含む。
【０２８９】
次に、取り出すステップＥ５２は、この獲得要求から，要求されたインタフェースを参照するコンピュータアドレスＵＲＩ１’を取り出す。
【０２９０】
次に、インタフェースの関連付けテーブルＴ’でそのインタフェースを見出すために、識別するステップＥ５３を実行する。
【０２９１】
この場合、例えばインタフェースの関連付けテーブルＴ’を読み取ることにより、コンピュータアドレスＵＲＩ１’と関連させてインタフェースＩ１を見出すことができる。
【０２９２】
テストステップＥ５４は、そのようなインタフェースＩ１が本当に見出されたか否かを検査する。
【０２９３】
その答えが否定であれば、ステップＥ５５において、誤りを指示する例外を送信することにより応答を送信する。
【０２９４】
これに対し、インタフェースＩ１が識別された場合には、必要に応じて、このインタフェースをXML言語へマーシャリングするために、マーシャリングするステップＥ５６を実行する。
【０２９５】
関連付けテーブルＴ’に格納されているインタフェースＩ１がプログラミング言語であり、まだマーシャリングされていない場合に限り、このマーシャリングするステップＥ５６が実行されることは自明である。
【０２９６】
次に、XML通信言語へマーシャリングされたこのインタフェースをローカルコンピュータＣ１へ送信するために、インタフェースを転送するステップＥ５７を実行する。
【０２９７】
このマーシャリング済みインタフェースは、先にXML通信言語に関連して説明したように、それぞれが実行コードと関連する１つ又は複数のファンクションから構成されている。
【０２９８】
次に、ローカルコンピュータＣ１において、インタフェースGET要求の結果を受信するステップＥ４３を実行する。
【０２９９】
次の取り出すステップＥ４４は、それぞれが実行コードと関連する１つ又は複数のファンクションから構成されるインタフェースＩ１を取り出す。
【０３００】
この実施形態では、ステップＥ４５からＥ５０により、ローカルコンピュータＣ１のデータ処理アプリケーションにより使用されるプログラミング言語でクラスを作成できるようにするのが好ましい。
【０３０１】
このクラスは受信したインタフェースＩ１のファンクションと、ローカルコンピュータＣ１のデータ処理アプリケーションにより直接に実行可能であるそれらのファンクションの実行コードとから構成されている。
【０３０２】
この目的のために、作成するステップＥ４５で対応するクラスを作成し、選択するステップＥ４６でインタフェースの第１のファンクションを選択する。
【０３０３】
テストステップＥ４７は、このインタフェースの未処理のファンクションが存在するか否かを検査する。ファンクションが残っていれば、ステップＥ４８で、そのファンクションの名前と実行コードを獲得し、追加するステップＥ４９で、このコードを対応するクラスに入れる。
【０３０４】
次に、ステップＥ５０においてインタフェースＩ１の続くファンクションを考慮し、各々のファンクションのコードを対応するクラスに追加するために、ステップＥ４７からＥ４９を繰り返し実行する。
【０３０５】
全てのファンクションを処理し終わったならば、ローカルコンピュータＣ１で、クラスに記録されているコードからコピーされたデータオブジェクトＯ２に対しファンクションを直接に実行することができる。
【０３０６】
本発明によるこの実施形態では、ローカルコンピュータＣ１で直接、遠隔オブジェクトＯ２のコピーに対しファンクションを起動することが可能である。
【０３０７】
この実施形態においては、本発明による遠隔実行装置及びその装置により実現される遠隔実行方法が遠隔コンピュータＣ３に組み込まれていることが分かるであろう。
【０３０８】
即ち、獲得要求を受信する手段、コンピュータアドレスを取り出す手段、インタフェースを識別する手段、及びこのインタフェースを転送する手段はコンピュータＣ３のマイクロプロセッサ５００に組み込まれており、読み取り専用メモリ５０１はコンピュータ通信ネットワークを介してデータオブジェクトのインタフェースを転送するためのプログラムを格納し、ランダムアクセスメモリ５０２は、プログラムの実行中に変更される変数、特に、図８に示すような関連付けテーブルＴ’を格納するための複数のレジスタを含む。
【０３０９】
同様に、ローカルコンピュータＣ１で、遠隔データオブジェクトＯ２に対しファンクションを起動する装置は、このデータオブジェクトＯ２のコピーを受信する手段と、このオブジェクトのインタフェースと関連するコンピュータアドレスを取り出す手段と、このインタフェースを獲得するための要求を送信する手段と、このインタフェースを受信する手段と、ローカルコンピュータＣ１により使用されるプログラミング言語でクラスを作成する手段とを有する。
【０３１０】
起動装置のこれらの手段はローカルコンピュータＣ１のマイクロプロセッサ５００に組み込まれており、読み取り専用メモリは遠隔データオブジェクトＯ２のファンクションをこのローカルコンピュータＣ１で起動するためのプログラムを格納し、ランダムアクセスメモリはこのプログラムの実行中に変更される変数をレジスタに格納する。
【０３１１】
次に、図１４及び図１５を参照して、遠隔コンピュータＣ３に格納されているデータオブジェクトＯ２のファンクションをコンピュータ通信ネットワークを介して起動することを可能にする本発明の第２の実施形態を説明する。
【０３１２】
この実施形態では、図１４に示すように、ローカルコンピュータＣ１で、コンピュータ要求を生成する方法を実現する。
【０３１３】
初期設定するステップＥ６０は、ファンクションを遠隔呼び出しするために、空呼び出し要求POSTを作成する。
【０３１４】
次に、遠隔データオブジェクトＯ２を参照するコンピュータアドレスを記録するために、記録するステップＥ６１を実行する。
【０３１５】
この例では、遠隔オブジェクトＯ２のコンピュータアドレスはＵＲＩ１である。
【０３１６】
次に、記録するステップＥ６２は、呼び出されたファンクションの識別子をこの要求POSTに追加する。
【０３１７】
典型的には、このファンクションは名前により識別できる。
【０３１８】
この実施形態では、テストステップＥ６３で、このファンクションを実行するために入力引数が必要であるか否かを検査するのが好ましい。
【０３１９】
その答えが肯定であれば、先に説明したマーシャリング方法に従ってそれらの入力引数をプログラミング言語、この場合はＣ++からXML通信言語へマーシャリングするために、マーシャリングするステップＥ６４を実行する。
【０３２０】
ステップＥ６５は、それらの入力引数を呼び出し要求POSTに追加する。
【０３２１】
次に、ステップＥ６６では、ファンクションと関連する次の入力引数を考慮し、全ての入力引数についてステップＥ６３からＥ６６を繰り返す。
【０３２２】
ファンクションの全ての入力引数を処理し、呼び出し要求POSTに追加し終わったならば、テストステップＥ６７で、実行コードがこのファンクションと関連しているか否かを検査する。
【０３２３】
その答えが肯定であれば、追加するステップＥ６８で、この実行コードを呼び出し要求POST中のファンクションと関連付ける。
【０３２４】
次に、転送するステップＥ６９で、この要求POSTを遠隔コンピュータＣ３へ送信する。
【０３２５】
以下に、遠隔ファンクションに対する呼び出し要求POSTの一例を示す。要求POSTが送信される先のアドレスは、ファンクションが適用されるオブジェクトのアドレスでなければならない。
【０３２６】
0004965014.tif 000035
図１５に示すように、次に、遠隔コンピュータＣ３でデータオブジェクトＯ２に対しファンクションを起動する方法を実現する。
【０３２７】
受信するステップＥ７０により、先に説明したようにして生成された呼び出し要求POSTを受信することができる。
【０３２８】
次に、ファンクションが呼び出されるデータオブジェクトＯ２を参照するコンピュータアドレスを取り出すために、取り出すステップＥ７１を実行する。
【０３２９】
また、要求からファンクションの識別子を取り出すために、取り出すステップＥ７２を実行する。
【０３３０】
テストステップＥ７３で、このファンクションを実行するために入力引数が必要であるか否かを検査するのが好ましい。その答えが肯定であれば、それらの入力引数を取り出すステップＥ７４を実行し、その後、逆マーシャリングするステップＥ７５で、それら全ての入力引数をXML通信言語からＣ++などのプログラミング言語へマーシャリングする。
【０３３１】
ステップＥ７６では、次の入力引数を考慮する。従って、ステップＥ７３からＥ７６を繰り返すことにより、それら全ての入力引数が解析されることになる。
【０３３２】
要求POSTから全ての入力引数を取り出し、マーシャリングし終わったならば、ステップＥ７７で、要求POSTに実行コードが挿入されているか否かを検査する。
【０３３３】
その答えが肯定であれば、起動する方法は、ファンクションと関連するこの実行コードを取り出すステップＥ７８と、このコードを遠隔データオブジェクトＯ２で実行するステップＥ７９とを含む。
【０３３４】
言うまでもなく、呼び出し要求POSTに実行コードが挿入されていない場合には、ステップＥ８０で、遠隔コンピュータＣ３で利用可能なローカルな方法を実行することになる。
【０３３５】
テストステップＥ８１は、このファンクションの起動が誤りなく実行されたか否かを検査する。
【０３３６】
誤りが起こっていた場合、ステップＥ８２において、ローカルコンピュータＣ１へ応答を送信する。周知のように、この応答は発生した誤りを指示するための例外を含む。
【０３３７】
誤りが起こっていなければ、テストステップＥ８３で、実行されたファンクションが結果を供給するか否かを検査する。
【０３３８】
その答えが否定であれば、ステップＥ８４で、「OK」のメッセージのみを含む応答をローカルコンピュータに向けて送信する。
【０３３９】
これに対し、変更済みオブジェクトなどの結果を供給しなければならない場合には、ファンクションが実行されたデータオブジェクトＯ２に対し、マーシャリングするステップＥ８５を実行して、このデータオブジェクトＯ２をプログラミング言語Ｃ++からXML通信言語へマーシャリングする。
【０３４０】
次に、結果、即ちマーシャリングされたデータオブジェクトＯ２を遠隔場所でそのファンクションを呼び出したローカルコンピュータＣ１へ返送するために、送信するステップＥ８６を実行する。
【０３４１】
この実施形態では、本発明による遠隔場所で実行する装置及び関連する方法は、ローカルコンピュータＣ１に組み込まれている。
【０３４２】
即ち、コンピュータアドレスを記録する手段と、呼び出すべきファンクションの識別子を記録する手段と、このファンクションと関連する実行コードを追加する手段とを有し、コンピュータ要求POSTを生成する装置はローカルコンピュータＣ１のマイクロプロセッサ５００に組み込まれており、読み取り専用メモリ５０１はこのようなPOSTコンピュータ要求を生成するためのプログラムを格納し、ランダムアクセスメモリ５０２は、このプログラムの実行中に変更される変数を格納するための複数のレジスタを有する。
【０３４３】
同様に、本発明による起動装置は、遠隔コンピュータＣ３に組み込まれている。
【０３４４】
起動装置は起動要求POSTを受信する手段と、遠隔コンピュータオブジェクトを参照するコンピュータアドレスを取り出す手段と、呼び出すべきファンクションの識別子を取り出す手段と、このファンクションの実行コードを取り出す手段と、このコードを実行する手段とを有し、これらの手段はコンピュータＣ３のマイクロプロセッサ５００に組み込まれている。
【０３４５】
コンピュータＣ３の読み取り専用メモリ５０１は、コンピュータ通信ネットワークで起動方法を実現するためのプログラムを格納し、ランダムアクセスメモリ５０２は、このプログラムの実行中に変更される変数を格納するための複数のレジスタを有する。
【０３４６】
このように、本発明によれば、通信ネットワークの様々なサイトにある各々のデータ処理アプリケーションにより作成されたデータオブジェクトをこのネットワークに接続する異なるサイトにより容易に共用することができる。
【０３４７】
オブジェクトが独自のＵＲＩコンピュータアドレスによって公開される、即ち見える状態にされると、直ちにネットワーク中のその他のアプリケーションは、コンピュータアドレスを使用して、ネットワークに共通する通信言語による表現を介してこのオブジェクトをアクセスすることができる。
【０３４８】
特に、オブジェクトと関連するファンクションを通信ネットワークの遠隔場所から呼び出すことが可能であり、特に通信ネットワークプロパーを介する不必要な転送を回避することができる。
【図面の簡単な説明】
【図１】本発明を実現する通信ネットワークを概略的に示す図。
【図２】分散型オブジェクトシステムを概略的に示す図。
【図３】本発明を実現するコンピュータを示すブロック図。
【図４】データオブジェクトをプログラミング言語から通信言語への直接マーシャリング及び逆マーシャリングを示す図。
【図５】本発明を実現する２台のコンピュータを示すブロック図。
【図６】関連付けテーブルを格納するメモリスペースを概略的に表す図。
【図７】本発明の第１の態様に従ってデータオブジェクトをマーシャリングする方法を示すアルゴリズム。
【図８】本発明の第２の態様に従ってデータオブジェクトを転送する方法を示すアルゴリズム。
【図９】本発明の第３の態様に従ってデータオブジェクトを遠隔更新する方法を示すアルゴリズム。
【図１０】データオブジェクトを排除する方法を示すアルゴリズム。
【図１１】インタフェースの関連付けテーブルを格納するメモリスペースを概略的に表す図。
【図１２】本発明の第５の態様に従ってローカルコンピュータにおいてファンクションを起動する方法を示すアルゴリズム。
【図１３】本発明の第６の態様に従ったインタフェース転送方法を示すアルゴリズム。
【図１４】本発明の第７の態様に従ってコンピュータ起動要求を生成する方法を示すアルゴリズム。
【図１５】本発明の第８の態様に従って遠隔コンピュータにおいてファンクションを起動する方法を示すアルゴリズム。
【図１】
0004965014.tif 000036
【図２】
0004965014.tif 000037
【図３】
0004965014.tif 000038
【図４】
0004965014.tif 000039
【図５】
0004965014.tif 000040
【図６】
0004965014.tif 000041
【図７】
0004965014.tif 000042
【図８】
0004965014.tif 000043
【図９】
0004965014.tif 000044
【図１０】
0004965014.tif 000045
【図１１】
0004965014.tif 000046
【図１２】
0004965014.tif 000047
【図１３】
0004965014.tif 000048
【図１４】
0004965014.tif 000049
【図１５】
0004965014.tif 000050