(57)【要約】【課題】  ネットワーク間の通信を効率的に実行することができる情報処理システムを提供する。【解決手段】  クライアントコンピュータ１１は、サーバコンピュータ１４に送信する移動オブジェクトを保持し、該移動オブジェクトに関連した処理を行うメソッド群を持つスタブオブジェクトを生成する。次に、スタブオブジェクトのメソッドのメソッド識別子と、移動オブジェクトと、メソッド呼出時に与えられるメソッドパラメータからなる要求データをサーバコンピュータ１４に送信する。サーバコンピュータ１４は、移動オブジェクトを保持し、スタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成する。次に、要求データ内の移動オブジェクトを処理するリモートオブジェクトを生成し、要求データ内のメソッド識別子に対応したメソッドを実行する。そして、その実行結果を応答データとしてクライアントコンピュータ１１に送信する。【選択図】  図１
2005266928.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムであって、
前記クライアントコンピュータは、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成手段と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する第１送信手段と、
前記サーバコンピュータは、
前記移動オブジェクトを内部データとして保持し、前記スタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成手段と、
前記要求データを受信する受信手段と、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成手段と、
前記生成手段で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行手段と、
前記実行手段の実行結果を応答データとして前記クライアントコンピュータに送信する第２送信手段と
を備えることを特徴とする情報処理システム。
【請求項２】
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムであって、
前記クライアントコンピュータからの要求ごとに、前記サーバコンピュータに送信される移動オブジェクトを内部データとして該サーバコンピュータ内に生成する第１生成手段と、
前記移動オブジェクトに関連した処理を行うためのメソッド群を持つリモートオブジェクトの持つメソッド群のインタフェース記述に基づいて、同様のインタフェースを持ち、各メソッドのプログラムコードとして、
呼び出されたメソッドのメソッド識別子と
内部保持している移動オブジェクトと
メソッド呼び出し時に与えられた他のパラメータ
からなる要求データをサーバに送信する処理を行うスタブオブジェクトのプログラムコードを生成する第２生成手段と、
前記要求データのメソッド識別子とリモートオブジェクトを受け取り、前記メソッド識別子に従って該リモートオブジェクトの対応するメソッドを実行するスケルトンオブジェクトのプログラムコードを生成する第３生成手段と
を備えることを特徴とする情報処理システム。
【請求項３】
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムの制御方法であって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成工程と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する第１送信工程と、
前記移動オブジェクトを内部データとして保持し、前記スタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成工程と、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成工程と、
前記生成工程で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行工程と、
前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する第２送信工程と
を備えることを特徴とする情報処理システムの制御方法。
【請求項４】
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトとともにスケルトンオブジェクトを生成するスケルトンオブジェクト生成工程とを更に備え、
前記実行工程は、前記スケルトンオブジェクトのメソッドを実行することにより、該スケルトンオブジェクトが前記リモートオブジェクトに対する要求データ内のメソッド識別子に対応したメソッドを実行する
ことを特徴とする請求項３に記載の情報処理システムの制御方法。
【請求項５】
前記リモートオブジェクトと前記スタブオブジェクトは、それぞれが内部に保持する移動オブジェクトに関連した処理を前記ネットワークを介さずに実行する共通のプログラムコードを持つメソッド群を有する
ことを特徴とする請求項３に記載の情報処理システムの制御方法。
【請求項６】
前記移動オブジェクトは、該移動オブジェクトを識別する識別情報とその他の付帯情報を有し、
前記リモートオブジェクトは、前記移動オブジェクトの識別情報よりその他の付帯情報を設定して返すメソッドを備え、
前記スタブオブジェクトは、前記リモートオブジェクトのメソッドにより、保持している移動オブジェクトの付帯情報を設定可能である
ことを特徴とする請求項３に記載の情報処理システムの制御方法。
【請求項７】
前記移動オブジェクトに対して生成された前記リモートオブジェクトは、メソッドの実行中に内部に保持する移動オブジェクトの付帯情報に変更があるか否かをチェックし、そのチェック結果に基づいて、前記スタブオブジェクトは、内部に保持する移動オブジェクトの付帯情報を再設定する
ことを特徴とする請求項６に記載の情報処理システムの制御方法。
【請求項８】
前記スタブオブジェクトは、メソッドの実行結果として他のスタブオブジェクトを返すことが可能である
ことを特徴とする請求項３に記載の情報処理システムの制御方法。
【請求項９】
前記移動オブジェクトの識別情報と、該移動オブジェクトに対して生成されたスタブオブジェクトのペアからなるデータを保持し、前記スタブオブジェクトがメソッドの実行結果として他のスタブオブジェクトを返す場合、該他のスタブオブジェクトが内部に保持する移動オブジェクトと同じ識別情報がすでに該データ中にある場合にはそのペアであるスタブオブジェクトを返す
ことを特徴とする請求項８に記載の情報処理システムの制御方法。
【請求項１０】
前記リモートオブジェクトとその処理対象とした移動オブジェクトの識別情報のペアからなるデータを前記サーバコンピュータ内に保持し、前記クライアントコンピュータからの要求データ内の移動オブジェクトからそれを処理するリモートオブジェクトを生成する場合、前記実行工程は、同じ識別情報が該データに存在するときには、そのペアであるリモートオブジェクトを得て要求データ内のメソッド識別子に対応した該リモートオブジェクトのメソッドを実行し、
前記第２送信工程は、前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する
ことを特徴とする請求項３に記載の情報処理システムの制御方法。
【請求項１１】
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムの制御方法であって、
前記クライアントコンピュータからの要求ごとに、前記サーバコンピュータに送信される移動オブジェクトを内部データとして該サーバコンピュータ内に生成する第１生成工程と、
前記移動オブジェクトに関連した処理を行うためのメソッド群を持つリモートオブジェクトの持つメソッド群のインタフェース記述に基づいて、同様のインタフェースを持ち、各メソッドのプログラムコードとして、
呼び出されたメソッドのメソッド識別子と
内部保持している移動オブジェクトと
メソッド呼び出し時に与えられた他のパラメータ
からなる要求データをサーバに送信する処理を行うスタブオブジェクトのプログラムコードを生成する第２生成工程と、
前記要求データのメソッド識別子とリモートオブジェクトを受け取り、前記メソッド識別子に従って該リモートオブジェクトの対応するメソッドを実行するスケルトンオブジェクトのプログラムコードを生成する第３生成工程と
を備えることを特徴とする情報処理システムの制御方法。
【請求項１２】
前記リモートオブジェクトの持つメソッド群のインタフェース記述は、メソッドごとにそれがネットワークを介さずに実行するローカルメソッドであるかネットワークを介して実行するリモートメソッドであるかの識別記述と、少なくとも該ローカルメソッドに対しては該メソッドの実行プログラムコードを有し、
前記リモートメソッドに対しては、同様のインタフェースを持ち、
呼び出されたメソッドのメソッド識別子と
内部保持している移動オブジェクトと
メソッド呼び出し時に与えられた他のパラメータ
からなる要求データをサーバに送信する処理を行うスタブオブジェクトのプログラムコードを生成し、
前記ローカルメソッドに対しては、同様のインタフェース記述と同様の実行プログラムコードを生成する
ことを特徴とする請求項１１に記載の情報処理システムの制御方法。
【請求項１３】
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムの制御のプログラムコードが格納されたコンピュータ可読メモリであって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成工程のプログラムコードと、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する第１送信工程のプログラムコードと、
前記移動オブジェクトを内部データとして保持し、前記スタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成工程のプログラムコードと、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成工程のプログラムコードと、
前記生成工程で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行工程のプログラムコードと、
前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する第２送信工程のプログラムコードと
を備えることを特徴とするコンピュータ可読メモリ。
【請求項１４】
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムの制御のプログラムコードが格納されたコンピュータ可読メモリであって、
前記クライアントコンピュータからの要求ごとに、前記サーバコンピュータに送信される移動オブジェクトを内部データとして該サーバコンピュータ内に生成する第１生成工程のプログラムコードと、
前記移動オブジェクトに関連した処理を行うためのメソッド群を持つリモートオブジェクトの持つメソッド群のインタフェース記述に基づいて、同様のインタフェースを持ち、各メソッドのプログラムコードとして、
呼び出されたメソッドのメソッド識別子と
内部保持している移動オブジェクトと
メソッド呼び出し時に与えられた他のパラメータ
からなる要求データをサーバに送信する処理を行うスタブオブジェクトのプログラムコードを生成する第２生成工程のプログラムコードと、
前記要求データのメソッド識別子とリモートオブジェクトを受け取り、前記メソッド識別子に従って該リモートオブジェクトの対応するメソッドを実行するスケルトンオブジェクトのプログラムコードを生成する第３生成工程のプログラムコードと
を備えることを特徴とするコンピュータ可読メモリ。
【請求項１５】
ネットワークで接続されたサーバコンピュータと通信を行って処理を実行する情報処理装置であって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成手段と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する送信手段と
を備えることを特徴とする情報処理装置。
【請求項１６】
ネットワークで接続されたクライアントコンピュータと通信を行って処理を実行する情報処理装置であって、
前記クライアントコンピュータから送信される移動オブジェクトを内部データとして保持し、該クライアントコンピュータが有する該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成手段と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記クライアントコンピュータから受信する受信手段と、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成手段と、
前記生成手段で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行手段と、
前記実行手段の実行結果を応答データとして前記クライアントコンピュータに送信する送信手段と
を備えることを特徴とする情報処理装置。
【請求項１７】
ネットワークで接続されたサーバコンピュータと通信を行って処理を実行する情報処理装置の制御方法であって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成工程と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する送信工程と
を備えることを特徴とする情報処理装置の制御方法。
【請求項１８】
ネットワークで接続されたクライアントコンピュータと通信を行って処理を実行する情報処理装置の制御方法であって、
前記クライアントコンピュータから送信される移動オブジェクトを内部データとして保持し、該クライアントコンピュータが有する該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成工程と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記クライアントコンピュータから受信する受信工程と、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成工程と、
前記生成工程で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行工程と、
前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する送信工程と
を備えることを特徴とする情報処理装置の制御方法。
【請求項１９】
ネットワークで接続されたサーバコンピュータと通信を行って処理を実行する情報処理装置の制御のプログラムコードが格納されたコンピュータ可読メモリであって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成工程のプログラムコードと、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する送信工程のプログラムコードと
を備えることを特徴とするコンピュータ可読メモリ。
【請求項２０】
ネットワークで接続されたクライアントコンピュータと通信を行って処理を実行する情報処理装置の制御のプログラムコードが格納されたコンピュータ可読メモリであって、
前記クライアントコンピュータから送信される移動オブジェクトを内部データとして保持し、該クライアントコンピュータが有する該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成工程のプログラムコードと、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記クライアントコンピュータから受信する受信工程のプログラムコードと、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成工程のプログラムコードと、
前記生成工程で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行工程のプログラムコードと、
前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する送信工程のプログラムコードと
を備えることを特徴とするコンピュータ可読メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システム、その制御方法、コンピュータ可読メモリに関するものである。
【背景技術】
【０００２】
あるコンピュータ上のプログラムより、ネットワークを介して接続されている他のコンピュータに処理を実行させる、いわゆるネットワークプログラミングは、近年のパーソナルコンピュータや通信回線その他の関連ハードウエアの進歩や、インターネットの普及によりますます重要になっている。
【０００３】
ネットワークプログラミングは古くより、ＴＣＰ／ＩＰ等のネットワークプロトコルを利用しコンピュータ間で通信を行うＢｅｒｋｌｅｙ  Ｓｏｃｋｅｔ等のＡＰＩ（アプリケーション・プログラミング・インタフェース）が用意され、このようなＡＰＩを用いてネットワークプログラムの開発が行われてきた。
【０００４】
しかし、Ｂｅｒｋｌｅｙ  Ｓｏｃｋｅｔ等の低レベルのＡＰＩを用いてネットワークプログラムを開発するには高度な知識が必要で、信頼性や異機種間の接続性を確保するためには熟練した専門家と、難解で相当量のプログラムコードの作成を必要としていた。
【０００５】
このような問題の解決のために、米国サンマイクロシステムズ社はＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）とよばれるネットワークプログラミングの概念と関連したプログラムライブラリ群、プログラムジェネレータ等の開発ツール群を開発した。
【０００６】
ＲＰＣは、ネットワークプログラミングを、ちょうどＣ言語における関数のような手続きの集まりとしてとらえる。
【０００７】
即ち、通常のスタンドアローンのプログラムでは、Ｃ言語の関数は、関数の引数として適当なパラメータを与えて実行すると、その関数は記述されたプログラムコードを実行して結果として関数の戻り値を返す。このプログラムを以下のように考えれば、スタンドアローンのプログラムと同様にネットワークプログラミングも簡単に作成できることを示した。
【０００８】
・必要な関数の名前と引数／戻り値のデータ型などのインタフェース定義を作成する。
【０００９】
・インタフェース定義に対してプログラム本体、即ち、スタンドアローンのプログラムと同様に各関数の実際の処理を作成する。
【００１０】
・ＲＰＣで提供されるプログラムジェネレータは、このインタフェース定義を元に、以下のような動作を行う２つのプログラムコード（スタブコード、スケルトンコード）を生成する。
【００１１】
即ち、
・スタブコードは、クライアント内で動作し、上記のインタフェース定義と同様なインタフェースを持つ関数群である。
【００１２】
但し、各関数の処理としては、適当な規則で番号等に変換された関数名と、引数となるパラメータとをＳｏｃｋｅｔ等のＡＰＩを介してサーバに送信し、サーバの応答を受信し、受信したデータを関数の戻り値として返すという動作を行うプログラムコードである。
【００１３】
・スケルトンコードは、サーバ内で動作し、スタブコードが送信した関数名を判断し、受信したパラメータを引数として上記プログラム本体の関数を実行し、その戻り値をクライアントに送信するという動作を行うプログラムコードである。
【００１４】
このＲＰＣを用いてＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等の多くの実用的なネットワークプログラムが開発された。
【００１５】
また、ＲＰＣはスタブ／スケルトンコードの生成や、ネットワーク透過性（同じクライアントプログラムコードでサーバマシン上で処理を行うかわりにクライアントマシン上で同じ処理を行うことができること）など、ネットワークプログラミングでの多くの基本的な考え方を提供した。
【００１６】
一方で、ネットワークプログラムに限らず、コンピュータプログラム全般に対する設計方法論／プログラム言語として、オブジェクト指向が提唱された。
【００１７】
オブジェクト指向では、自身のみがアクセスできるデータ群と、それらに関連した実際の処理手続きであるメソッド群からなるオブジェクトをプログラム設計の基本単位ととらえる。これにより、独立性の高いモジュールが作成可能であり、変更や拡張が容易なプログラム設計を行う上で有用である。
【００１８】
また、呼び出されたメソッドに対する実際の処理手続きは、処理対象となったオブジェクト自身が決めるという動的束縛（ｄｙｎａｍｉｃ  ｂｉｎｄｉｎｇ）の機構により、柔軟で汎用性の高いモジュールが作成可能となる。
【００１９】
また、親クラス、サブクラスといったオブジェクト間の階層関係と継承の機構の導入により、必要に応じて一部のメソッドのみを修正したり追加するだけで既存のモジュールを拡張できる差分プログラムが可能になる。
【００２０】
このような進展をもとに、現在はオブジェクト指向のネットワークプログラミングへの適用として分散オブジェクトモデルが提唱されている。代表的なものとしては、業界団体であるＯＭＧグループのＣＯＲＢＡや、米国マイクロソフト社のＤＣＯＭ、米国サンマイクロシステムズ社のＪａｖａ  ＲＭＩなどの規格・実装がある。
【００２１】
これらは、簡単に言えば、上述したＲＰＣのオブジェクト指向的拡張である。
【００２２】
即ち、ＲＰＣでは、サーバ上には１つのサーバプログラム本体（リモートオブジェクト）があり、クライアントは１つのスタブコード（スタブオブジェクト）を通してサーバプログラムの関数（リモートオブジェクトのメソッド）を実行する。
【００２３】
分散オブジェクトモデルでは、これを以下のように拡張する。
【００２４】
・サーバ上には、実際に処理を行う複数のリモートオブジェクトが存在できる。（これらは複数のサーバコンピュータ上に分散していてもよい）
・クライアントは、これら複数のリモートオブジェクトごとに、これにアクセスするためのスタブオブジェクトを保持する。
【００２５】
・ＲＰＣと同様に、スタブオブジェクトのメソッドを実行させると、実行すべきメソッド名とパラメータはサーバに送信され、対応するリモートオブジェクトの対応するメソッドが実行され、結果がスタブオブジェクトのメソッドの結果として返る。
【００２６】
この分散オブジェクトモデルは、ＲＰＣによるネットワークプログラミングの簡易性と、オブジェクト指向によるプログラムの部品化や動的束縛・継承など有用なプログラミング手法の長所を合わせ持ったものである。
【００２７】
また、分散オブジェクトモデルにおいてもＲＰＣと同様にリモートオブジェクトのインタフェース定義をもとに、スタブオブジェクトやスケルトンオブジェクトなどの定型的なプログラムコードを生成することが可能である（例えば、特許文献１参照）。
【００２８】
また、近年ではモバイルエージェントと呼ばれる概念があり、特許文献２等に開示されている。これは、モバイルエージェントとよばれるオブジェクトをネットワークで接続された種々のコンピュータに転送し、転送されたエージェントが自立的に処理を行うことにより、それぞれの環境に適したより柔軟な処理を可能にしようとするものである。
【００２９】
このためにモバイルエージェントでは、単なる処理要求とデータの転送だけでなく、実際に処理を行うプログラムコード自体を他のコンピュータに転送し、そのコンピュータ上でそのプログラムコードを実行する機構を有する。
【００３０】
転送されるプログラムコードは、多数の異機種のコンピュータ上で動作する必要があるため、簡易的な独自のプログラム言語とインタープリタを使用するものや、近年においては多様なプラットフォームで動作可能なＪａｖａバイトコードを使用するものなどがある。
【特許文献１】特開平７−２２５６８５号
【特許文献２】特開平７−１８２１７４号
【発明の開示】
【発明が解決しようとする課題】
【００３１】
上述のように分散オブジェクトモデルは、ネットワークプログラミングの上で非常に有用であるが、しかしながら、ある場合には以下のような問題が発生する。
【００３２】
まず、分散オブジェクトモデルでは、基本的にクライアントから参照されている間、複数のリモートオブジェクトがサーバ内に常駐する。
【００３３】
このためクライアントが多数のリモートオブジェクトを参照するようなプログラムを作成すると、サーバのメモリ負荷が増大する。特に、ある種のアプリケーションでは１つのサーバに対し、数１０〜数１００の複数のクライアントから同時に接続されるため、このサーバのメモリ負荷の増大は軽視できない。
【００３４】
また、分散オブジェクトモデルでは、クライアント側に保持されるのは単にサーバ上のリモートオブジェクトとデータの送受信を行うだけのスタブオブジェクトである。このため、クライアントがリモートオブジェクトの単なる属性値を知りたい場合などでも、そのたびにネットワークを介した通信が必要で、低速回線では大きな問題となる。
【００３５】
本発明は上記の問題点に鑑みてなされたものであり、ネットワーク間の通信を効率的に実行することができる情報処理システム、情報処理装置及びそれらの制御方法、コンピュータ可読メモリを提供することを目的とする。
【課題を解決するための手段】
【００３６】
上記の目的を達成するための本発明による情報処理システムは以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムであって、
前記クライアントコンピュータは、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成手段と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する第１送信手段と、
前記サーバコンピュータは、
前記移動オブジェクトを内部データとして保持し、前記スタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成手段と、
前記要求データを受信する受信手段と、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成手段と、
前記生成手段で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行手段と、
前記実行手段の実行結果を応答データとして前記クライアントコンピュータに送信する第２送信手段と
を備える。
【００３７】
上記の目的を達成するための本発明による情報処理システムは以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムであって、
前記クライアントコンピュータからの要求ごとに、前記サーバコンピュータに送信される移動オブジェクトを内部データとして該サーバコンピュータ内に生成する第１生成手段と、
前記移動オブジェクトに関連した処理を行うためのメソッド群を持つリモートオブジェクトの持つメソッド群のインタフェース記述に基づいて、同様のインタフェースを持ち、各メソッドのプログラムコードとして、
呼び出されたメソッドのメソッド識別子と
内部保持している移動オブジェクトと
メソッド呼び出し時に与えられた他のパラメータ
からなる要求データをサーバに送信する処理を行うスタブオブジェクトのプログラムコードを生成する第２生成手段と、
前記要求データのメソッド識別子とリモートオブジェクトを受け取り、前記メソッド識別子に従って該リモートオブジェクトの対応するメソッドを実行するスケルトンオブジェクトのプログラムコードを生成する第３生成手段と
を備える。
【００３８】
上記の目的を達成するための本発明による情報処理システムの制御方法は以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムの制御方法であって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成工程と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する第１送信工程と、
前記移動オブジェクトを内部データとして保持し、前記スタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成工程と、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成工程と、
前記生成工程で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行工程と、
前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する第２送信工程と
を備える。
【００３９】
上記の目的を達成するための本発明による情報処理システムの制御方法は以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムの制御方法であって、
前記クライアントコンピュータからの要求ごとに、前記サーバコンピュータに送信される移動オブジェクトを内部データとして該サーバコンピュータ内に生成する第１生成工程と、
前記移動オブジェクトに関連した処理を行うためのメソッド群を持つリモートオブジェクトの持つメソッド群のインタフェース記述に基づいて、同様のインタフェースを持ち、各メソッドのプログラムコードとして、
呼び出されたメソッドのメソッド識別子と
内部保持している移動オブジェクトと
メソッド呼び出し時に与えられた他のパラメータ
からなる要求データをサーバに送信する処理を行うスタブオブジェクトのプログラムコードを生成する第２生成工程と、
前記要求データのメソッド識別子とリモートオブジェクトを受け取り、前記メソッド識別子に従って該リモートオブジェクトの対応するメソッドを実行するスケルトンオブジェクトのプログラムコードを生成する第３生成工程と
を備える。
【００４０】
上記の目的を達成するための本発明によるコンピュータ可読メモリは以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムの制御のプログラムコードが格納されたコンピュータ可読メモリであって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成工程のプログラムコードと、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する第１送信工程のプログラムコードと、
前記移動オブジェクトを内部データとして保持し、前記スタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成工程のプログラムコードと、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成工程のプログラムコードと、
前記生成工程で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行工程のプログラムコードと、
前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する第２送信工程のプログラムコードと
を備える。
【００４１】
上記の目的を達成するための本発明によるコンピュータ可読メモリは以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータとクライアントコンピュータ間で通信を行って処理を実行する情報処理システムの制御のプログラムコードが格納されたコンピュータ可読メモリであって、
前記クライアントコンピュータからの要求ごとに、前記サーバコンピュータに送信される移動オブジェクトを内部データとして該サーバコンピュータ内に生成する第１生成工程のプログラムコードと、
前記移動オブジェクトに関連した処理を行うためのメソッド群を持つリモートオブジェクトの持つメソッド群のインタフェース記述に基づいて、同様のインタフェースを持ち、各メソッドのプログラムコードとして、
呼び出されたメソッドのメソッド識別子と
内部保持している移動オブジェクトと
メソッド呼び出し時に与えられた他のパラメータ
からなる要求データをサーバに送信する処理を行うスタブオブジェクトのプログラムコードを生成する第２生成工程のプログラムコードと、
前記要求データのメソッド識別子とリモートオブジェクトを受け取り、前記メソッド識別子に従って該リモートオブジェクトの対応するメソッドを実行するスケルトンオブジェクトのプログラムコードを生成する第３生成工程のプログラムコードと
を備える。
【００４２】
上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータと通信を行って処理を実行する情報処理装置であって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成手段と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する送信手段と
を備える。
【００４３】
上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。即ち、
ネットワークで接続されたクライアントコンピュータと通信を行って処理を実行する情報処理装置であって、
前記クライアントコンピュータから送信される移動オブジェクトを内部データとして保持し、該クライアントコンピュータが有する該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成手段と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記クライアントコンピュータから受信する受信手段と、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成手段と、
前記生成手段で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行手段と、
前記実行手段の実行結果を応答データとして前記クライアントコンピュータに送信する送信手段と
を備える。
【００４４】
上記の目的を達成するための本発明による情報処理装置の制御方法は以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータと通信を行って処理を実行する情報処理装置の制御方法であって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成工程と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する送信工程と
を備える。
【００４５】
上記の目的を達成するための本発明による情報処理装置の制御方法は以下の構成を備える。即ち、
ネットワークで接続されたクライアントコンピュータと通信を行って処理を実行する情報処理装置の制御方法であって、
前記クライアントコンピュータから送信される移動オブジェクトを内部データとして保持し、該クライアントコンピュータが有する該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成工程と、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記クライアントコンピュータから受信する受信工程と、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成工程と、
前記生成工程で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行工程と、
前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する送信工程と
を備える。
【００４６】
上記の目的を達成するための本発明によるコンピュータ可読メモリは以下の構成を備える。即ち、
ネットワークで接続されたサーバコンピュータと通信を行って処理を実行する情報処理装置の制御のプログラムコードが格納されたコンピュータ可読メモリであって、
前記サーバコンピュータに送信する移動オブジェクトを内部データとして保持し、該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトを生成するスタブオブジェクト生成工程のプログラムコードと、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記サーバコンピュータに送信する送信工程のプログラムコードと
を備える。
【００４７】
上記の目的を達成するための本発明によるコンピュータ可読メモリは以下の構成を備える。即ち、
ネットワークで接続されたクライアントコンピュータと通信を行って処理を実行する情報処理装置の制御のプログラムコードが格納されたコンピュータ可読メモリであって、
前記クライアントコンピュータから送信される移動オブジェクトを内部データとして保持し、該クライアントコンピュータが有する該移動オブジェクトに関連した処理を行うためのメソッド群を持つスタブオブジェクトと同様なメソッド群を持つリモートオブジェクトを生成するリモートオブジェクト生成工程のプログラムコードと、
前記スタブオブジェクトのメソッドを用いて、該メソッドのメソッド識別子と、内部に保持している前記移動オブジェクトと、メソッド呼び出し時に与えられるメソッドパラメータからなる要求データを前記クライアントコンピュータから受信する受信工程のプログラムコードと、
前記要求データ内の移動オブジェクトより該移動オブジェクトを処理する前記リモートオブジェクトを生成する生成工程のプログラムコードと、
前記生成工程で生成されたリモートオブジェクトに対して、前記要求データ内のメソッド識別子に対応したメソッドを実行する実行工程のプログラムコードと、
前記実行工程の実行結果を応答データとして前記クライアントコンピュータに送信する送信工程のプログラムコードと
を備える。
【発明の効果】
【００４８】
本発明によれば、ネットワーク間の通信を効率的に実行することができる情報処理システム、情報処理装置及びそれらの制御方法、コンピュータ可読メモリを提供できる。
【発明を実施するための最良の形態】
【００４９】
以下、図面を参照して本発明の好適な実施形態を詳細に説明する。
［実施形態１］
図１は実施形態１のネットワークプログラムの基本的な動作環境を説明する図である。
【００５０】
クライアントコンピュータ１１、サーバコンピュータ１４があり、それらはそれぞれ不図示のネットワークインタフェース回路を通じて、ネットワーク回線１７に接続されている。そして、クライアントコンピュータ１１とサーバコンピュータ１４間は、オペレーションシステムにより提供されるＴＣＰ／ＩＰ等のネットワークプロトコルを通して通信が可能である。また、それぞれのコンピュータには、ハードディスク等の外部記憶装置１３、１６と、メモリ１２、１５を備える。
【００５１】
本実施形態に係るネットワークプログラムのうち、クライアントプログラムとなる部分はクライアントコンピュータ１１の外部記憶装置１３に収容されており、メモリ１２にロードして実行される。同様に、サーバプログラムとなる部分はサーバコンピュータ１４の外部記憶装置１６に収容されており、メモリ１５にロードして実行される。
【００５２】
尚、クライアントコンピュータ１１、サーバコンピュータ１４は、ある処理を行うときの単なるコンピュータの役割であり、必要なプログラムが外部記憶装置に収容されていれば、クライアントコンピュータ１１がサーバ、サーバコンピュータ１４がクライアントとなって動作することもできる。
【００５３】
次に、実施形態１のネットワークプログラムの基本構成について、図２を用いて説明する。
【００５４】
図２は実施形態１のネットワークプログラムの基本構成を示す図である。
【００５５】
２１はクライアント側のアプリケーションプログラム、２２はスタブオブジェクト、２３はクライアント側の通信管理を行うクライアント通信管理オブジェクトであり、２１〜２３がクライアントプログラムを構成する。
【００５６】
クライアント通信管理オブジェクト２３は、基本的には通信の相手となるサーバプロセス（あるいはスレッド）ごとに存在し、サーバへの接続、サーバとのデータの送受信、および送受信に伴うエラーの監視等を行う。
【００５７】
スタブオブジェクト２２は、後述のリモートオブジェクト２５と同じ形式のメソッド群を備える。また、後述する移動オブジェクト２６を内部保持する形で生成され、リモートオブジェクト２５のメソッドをクライアントアプリケーション２１から仮想的に実行可能にする。
【００５８】
２４はサーバ側で通信管理を行うサーバ通信管理オブジェクト、２５は実際にサーバ上で処理を行うリモートオブジェクトであり、２４〜２５がサーバプログラムを構成する。
【００５９】
また、クライアント、サーバ間で送受信されるデータとして、移動オブジェクト２６、クライアントからサーバへ送信される要求データ２７、その処理結果としてサーバからクライアントに送信される応答データ２８がある。
【００６０】
サーバ通信管理オブジェクト２４は、クライアント通信管理オブジェクト２３からの接続要求によりサーバ上に生成される。次に、後述のように、クライアント通信管理オブジェクト２３からの要求データ２７を受信して、実際に処理を行うリモートオブジェクト２５を生成し、そのリモートオブジェクト２５のメソッドを実行する。そして、その実行結果を応答データ２８の形でクライアント通信管理オブジェクト２３に送信する。
【００６１】
要求データ２７は、内部データとして後述する移動オブジェクト２６と、リモートオブジェクト２５のメソッドを識別するためのメソッド識別子、そのメソッドを実行する際の引数となるメソッドパラメータを指定して、クライアント通信管理オブジェクト２３からサーバ通信管理オブジェクト２４に送信される。
【００６２】
移動オブジェクト２６は、クライアント側のスタブオブジェクト２２とサーバ側のリモートオブジェクト２５の対応をとるためにクライアントからサーバに送信されるデータオブジェクトであり、内部データとして移動オブジェクト２６を識別する情報と、その他の付帯情報を保持する。
【００６３】
例えば、サーバで管理されている製品情報データベースをクライアントから利用する場合には、移動オブジェクト２６として汎用的な移動オブジェクトＭＤａｔａのサブクラスであるＰｒｏｄｕｃｔＭＤａｔａクラスの製品情報オブジェクトを使用する。
【００６４】
この場合には、製品を識別する製品コードが移動オブジェクト２６の識別情報であり、その製品に関連した情報（例えば、製品の名称、種類、製品の製作会社名など）が付帯情報となる。
【００６５】
リモートオブジェクト２５は、サーバ通信管理オブジェクト２４により、クライアントから送信された移動オブジェクト２６と、生成元のサーバ通信管理オブジェクト２４を内部保持する形で生成され、保持している移動オブジェクト２６に関連した処理を実行する。
【００６６】
例えば、上述のＰｒｏｄｕｃｔＭＤａｔａクラスの製品情報オブジェクトに対しては、それに対応したＰｒｏｄｕｃｔＲｅｍＯｂｊクラスのリモートオブジェクトが処理を行う。
【００６７】
この例においては、ＰｒｏｄｕｃｔＲｅｍＯｂｊクラスは製品情報データベースへのアクセスするメソッド群、例えば
・製品コードに対応する製品情報をデータベースから得るロードメソッド
・新たに製品情報をデータベースに追加する追加メソッド
・データベースの製品情報を更新する更新メソッド
・データベースから製品情報を削除する削除メソッド
などを持つことになる。
【００６８】
クライアントアプリケーション２１は、ネットワークに関連した処理を行う場合、少なくとも識別情報の指定された移動オブジェクト２６と、サーバを指定するためのマシン名、ポート番号等を指定してスタブオブジェクト２２を生成し、そのメソッドを呼び出す。
【００６９】
スタブオブジェクト２２は、内部データとして生成時に指定された移動オブジェクト２６と、相手のサーバへの送受信を行うクライアント通信管理オブジェクト２３を内部に保持した形で生成される。ここで、スタブオブジェクト２２も移動オブジェクト２６のクラスに対応したクラスのものが使用される。
【００７０】
上述の例では、ＰｒｏｄｕｃｔＭＤａｔａクラスの製品情報オブジェクトに対しては、それに対応したＰｒｏｄｕｃｔＳｔｕｂクラスのスタブオブジェクトを使用する。ＰｒｏｄｕｃｔＳｔｕｂクラスは、対応するリモートオブジェクトＰｒｏｄｕｃｔＲｅｍＯｂｊと同じメソッド群、即ち、上述のロードメソッド、追加メソッド、更新メソッド、削除メソッドを持つことになる。
【００７１】
クライアントアプリケーション２１が、スタブオブジェクト２２を生成するためには、移動オブジェクト２６は自分に対応したスタブオブジェクト２２を生成するｃｒｅａｔｅＳｔｕｂメソッドを備える。
【００７２】
クライアントアプリケーション２１は、最初に所望のクラスの移動オブジェクト２６を生成し、そのｃｒｅａｔｅＳｔｕｂメソッドに相手となるサーバを指定してスタブオブジェクト２２を生成する。あるいは、クライアントアプリケーション２１がスタブオブジェクト２２のクラスを指定してスタブオブジェクト２２の生成メソッド（コンストラクタ）を直接呼び出し、その中でスタブオブジェクト２２が自分に対応した移動オブジェクト２６と指定されたサーバに対応するクライアント通信管理オブジェクト２３を生成保持するようにしてもよい。
【００７３】
また、スタブオブジェクト２２のメソッドとして生成済みのスタブオブジェクト２２に、他の移動オブジェクト２６を指定し、もとと同じクライアント通信管理オブジェクト２３を持ったスタブオブジェクト２２を生成させるものを用意し、生成済みのスタブオブジェクト２２からつぎつぎに他のスタブオブジェクト２２を生成させることもできる。
【００７４】
以下、クライアントアプリケーション２１によって、内部データとして移動オブジェクト２６とクライアント通信管理オブジェクト２３を保持する形でスタブオブジェクト２２が生成された後の基本的な動作について、図３〜図６を用いて説明する。
【００７５】
図３は実施形態１のスタブオブジェクトの動作を示すフローチャートである。
【００７６】
クライアントアプリケーション２１は、リモートオブジェクト２５の所望のメソッドに対応したスタブオブジェクト２２のメソッド、例えば、メソッドＸＸを所望のパラメータの引数として呼び出す。スタブオブジェクト２２は、ステップＳ３２で、このメソッド名に対応した識別子、指定されたパラメータ、保持している移動オブジェクト２６からなるサーバへの要求データ２７を作成する。次に、ステップＳ３３で、この要求データ２７を引数として保持する。そして、クライアント通信管理オブジェクト２３の送受信メソッドを呼び出す。
【００７７】
クライアント通信管理オブジェクト２３は、内部データとして生成時に指定された相手サーバのマシン名（あるいはネットワークアドレス）とＴＣＰ／ＩＰのポート番号等の接続に必要なパラメータを保持する。
【００７８】
ここで、クライアント通信管理オブジェクト２３の動作について、図４を用いて説明する。
【００７９】
図４は実施形態１のクライアント通信管理オブジェクトの動作を示すフローチャートである。
【００８０】
クライアント通信管理オブジェクト２３の送受信メソッドは、まず、ステップＳ３８で、相手サーバへすでに接続済みであるかをチェックする。未接続であれば、接続処理を行って実際にデータを送受信するソケット等のポートを得て、それを内部データとして設定する。次に、ステップＳ３９で、スタブオブジェクト２２から引数として指定された要求データ２７をサーバに送信する。次に、ステップＳ３１０で、サーバからの応答データ２８を受信する。
【００８１】
次に、サーバ通信管理オブジェクト２４の動作について、図５を用いて説明する。
【００８２】
図５は実施形態１のサーバ通信管理オブジェクトの動作を示すフローチャートである。
【００８３】
サーバ通信管理オブジェクト２４は、この例ではサーバプログラムの起動時にＴＣＰ／ＩＰのポート番号等必要なパラメータを指定して生成されており、ステップＳ３１３で、このポートへの接続を待った状態で実行が開始される。次に、ステップＳ３１３で、クライアント通信管理オブジェクト２３の接続要求（ステップＳ３８）に対応して、この接続を受付け、データ送受信用のソケット等のポートのを確保等を行う。
【００８４】
以後は、このポートを使用して、ステップＳ３１４〜ステップＳ３２０で要求データ２７の受信、要求処理の実行、応答データ２８の送信処理を繰り返す。
【００８５】
まず、ステップＳ３１４で、クライアント通信管理オブジェクト２４の要求データ２７の送信（ステップＳ３９）で送信される要求データ２７を受信する。そして、受信した要求データ２７より、移動オブジェクト、メソッド識別子、メソッドパラメータを取り出す。
【００８６】
次に、ステップＳ３１５で、取り出した移動オブジェクトより後述のようにそれに対応したリモートオブジェクト２５を生成する。次に、ステップＳ３１６で、取り出したメソッド識別子に対応したリモートオブジェクト２５のメソッドＸＸを得られているパラメータの引数として呼び出す。
【００８７】
ここで、リモートオブジェクト２５の動作について、図６を用いて説明する。
【００８８】
図６は実施形態１のリモートオブジェクトの動作を示すフローチャートである。
【００８９】
リモートオブジェクト２５のメソッドＸＸは、ステップＳ３２２で、内部保持しているとして指定された移動データオブジェクトと、生成を行ったサーバ通信管理オブジェクト２４を使用して必要な処理を行う。次に、ステップＳ３２３で、処理を監視し、エラーが生じたか否かを判定する。エラーが生じていない場合（ステップＳ３２３でＮＯ）、ステップＳ３２４に進み、処理結果を戻り値として返す。一方、エラーが生じた場合（ステップＳ３２３でＹＥＳ）、ステップＳ３２５に進み、不図示のサーバ内のグローバル変数にエラー情報をセットして戻る。
【００９０】
ここで、サーバ管理オブジェクト２４は、ステップＳ３１６の処理を終了したので、図５のステップＳ３１７で、リモートオブジェクト２５がエラーをセットしたか否かを判定する。エラーがセットされた場合（ステップＳ３１７でＹＥＳ）、ステップＳ３１９に進み、そのエラー情報を応答データ２８の結果オブジェクトとして設定する。一方、エラーがセットされていない場合（ステップＳ３１７でＮＯ）、ステプＳ３１８に進み、ステップＳ３２４で、返された戻り値を応答データ２８の結果オブジェクトとして設定する。
【００９１】
そして、ステップＳ３２０で、応答データ２８をクライアントに送信し、再び、ステップＳ３１４に戻り、処理を繰り返す。
【００９２】
ステップＳ３２０に対応して、図４のステップＳ３１０で、サーバからの応答を待っていたクライアント通信管理オブジェクト２３は、応答データ２８を受信する。そして、ステップＳ３１１で、この応答データ２８を戻り値として呼び出したスタブオブジェクト２２の図３のステップＳ３３の動作に戻る。
【００９３】
スタブオブジェクト２２は、図３のステップＳ３４で、得られた応答データ２８の内容を調べ、エラー情報がセットされているか否かを判定する。エラー情報がセットされている場合（ステップＳ３４でＹＥＳ）、ステップＳ３６に進み、サーバ処理が失敗したことを示すために、不図示のグローバル変数にこのエラー情報を設定する。一方、エラー情報がセットされていない場合（ステップＳ３４でＮＯ）、ステップＳ３５に進み、応答データ２８の結果オブジェクトをこのメソッドの戻り値として呼び出したクライアントアプリケーション２１に返す。
【００９４】
上述のステップＳ３１５で、サーバ通信管理オブジェクト２４がリモートオブジェクト２５を生成する方法について補足すれば、１つには移動オブジェクト２６が自分に関連したリモートオブジェクト２５を生成するメソッドを備えており、これを呼び出すことにより実現する。
【００９５】
あるいは移動オブジェクト２６の内部データあるいはメソッドによって、この移動オブジェクト２６に対応したリモートオブジェクト２５のクラス名が得られるようにしておき、このクラス名によってリモートオブジェクト２５の生成メソッド（コンストラクタ）を呼び出してもよい。
【００９６】
また、サーバ通信管理オブジェクト２４の処理では、ここでは簡単のため、同一のプロセス（あるいはスレッドで）接続を受付た後、要求受信・要求処理・応答送信の無限ループに入る形で説明した。そのため、複数のクライアントからの要求を並行処理することができないが、これは公知のようにステップＳ３１３の接続受付処理を１つの独立したプロセス（あるいはスレッド）とし、クライアントからの接続受付けにより新たなプロセス（あるいはスレッド）を生成し、生成したプロセス（あるいはスレッド）が、ステップＳ３１４よりの無限ループに入るようにすれば並行処理が可能になる。
【００９７】
また、以上ではネットワークを介して送受信される要求データ２７、応答データ２８のエンコーディングについては説明しなかったが、これについては独自に行うこともできるし、ＲＰＣで使用されるＸＤＲ（Ｅｘｔｅｒｎａｌ  Ｄａｔａ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）のような汎用的な規約とライブラリを利用することもできる。
【００９８】
また、上述ではリモートオブジェクト２５は、サーバ通信管理オブジェクト２４を内部データとして保持しているが、これは、サーバ通信管理オブジェクト２４を通してサーバで管理されている資源にアクセス可能にするためである。これを、例えば、サーバの起動時にオープンしたデータベースをサーバ通信管理オブジェクト２４の内部データとして設定しておき、リモートオブジェクト２５はサーバ通信管理オブジェクト２４を通してこのデータベースを得てアクセスを行う。
【００９９】
但し、必ずしもリモートオブジェクト２５は、サーバ通信管理オブジェクト２４を内部データとして保持する必要はなく、サーバ通信管理オブジェクト２４がリモートオブジェクト２５のメソッドを呼び出す際に、その引数として付加しても良い。
【０１００】
スタブオブジェクト２２とリモートオブジェクト２５のメソッドには、上述のようにスタブオブジェクト２２が処理要求をリモートオブジェクト２５に転送し、リモートオブジェクト２５が実際の処理を実行するもの（リモートメソッド）の他に、本発明においては以下のようなネットワークを介さずに実行可能なメソッド（ローカルメソッド）も共通に備えることが有効である。
【０１０１】
即ち、スタブオブジェクト２２、リモートオブジェクト２５はいずれも移動オブジェクト２６を内部保持した形で生成されるため、その移動オブジェクト２６のみに関する処理（例えば、移動オブジェクト２６の内部データへのアクセスやチェック）や、移動オブジェクト２６とローカルな資源へのアクセスのみからなる処理（例えば、移動オブジェクト２６をローカルなデータファイルに保存する）等の処理はまったく同じプログラムコードで実行可能である。
【０１０２】
以上説明したように、実施形態１によれば、クライアント側のスタブオブジェクト２２はサーバに送信される移動オブジェクト２６のクラスに対応したものを使用し、実際にサーバで処理を行うリモートオブジェクト２５も送信された移動オブジェクト２６に対応したクラスを使用することで、メソッドの動的呼び出しが可能になる。即ち、サーバに多くのオブジェクトが存在することなく多様なリモート処理が実行可能であり、また、頻繁なネットワーク通信を伴うことなくリモートオブジェクトの属性へのアクセスが可能である。
【０１０３】
また、スタブオブジェクト２２とリモートオブジェクト２５とは、上述のリモートメソッド、ローカルメソッドともに同じ形式のメソッド群を持つので、ネットワーク透過性を実現することができる。
【０１０４】
即ち、クライアントアプリケーション２１は、ローカルな処理のみを行う場合には、スタブオブジェクト２２ではなく、直接リモートオブジェクト２５を生成すれば、他はリモート処理の場合とまったく同じプログラムコードが使用できる。
【０１０５】
また、スタブオブジェクト２２のメソッドが実行されるごとに、サーバ側でリモートオブジェクト２５が一時的に生成されて処理を行うので、リモートオブジェクト２５はサーバ内に常駐する必要がない。
［実施形態２］
実施形態１では、要求データ２７のメソッド識別子を使用して、サーバ管理オブジェクト２４はリモートオブジェクト２５の対応するメソッドを直接呼び出す形で説明したが、これは使用するプログラム言語に依存する。
【０１０６】
例えば、ＳｍａｌｌｔａｌｋやＪａｖａのようなプログラム言語ではメソッド名を示す文字列を使用してメソッドを呼び出すことが可能であるが、例えば、Ｃ＋＋ではメソッドはプログラム言語のシンボルでなければならないため、図７に示すようなスケルトンオブジェクト４１を使用する必要がある。
【０１０７】
図７は実施形態２のネットワークプログラムの基本的な動作環境を説明する図である。
【０１０８】
図７は図２と基本的に同様であるが、サーバ通信管理オブジェクト２４とリモートオブジェクト２５の間に、スケルトンオブジェクト４１が介在する。
【０１０９】
動作は基本的に、図３〜図６と同様であるが、サーバ通信管理オブジェクト２４による処理の図５のステップ３１５では、受信した移動オブジェクト２６よりスケルトンオブジェクト４１を生成する。そして、ステップ３１６で、このスケルトンオブジェクト４１を通して間接的にリモートオブジェクト２５のメソッドを実行する。
【０１１０】
このためには、ステップ３１６で、このスケルトンオブジェクト４１の所定のメソッド（例えば、ディスパッチメソッド）を、引数としてこの移動オブジェクト、受信したメソッド識別子、メソッドパラメータと呼び出し元のサーバ通信管理オブジェクト２４を指定して実行する。
【０１１１】
スケルトンオブジェクト４１のディスパッチメソッドは、まず指定された移動オブジェクトからそれを処理するリモートオブジェクト２５を生成する。次に、渡されたメソッド識別子を判断し、対応するリモートオブジェクト２５のメソッドを実行してその結果を返す処理を行う。
【０１１２】
後述のように、このスケルトンオブジェクト４１もスタブオブジェクト２２とともに、プログラムコードを自動生成することが可能である。
【０１１３】
以上説明したように、実施形態２によれば、スケルトンオブジェクト４１を使用することで、メソッドがシンボルでなればならないプログラム言語を使用する場合でも、実施形態１と同様の効果を得ることができる。
［実施形態３］
実施形態１、２では、移動オブジェクト２６は、クライアントからサーバへの送信のみに使用されたが、以下のようにサーバからクライアントへも受け渡されるようにすることにより、さらに有用な結果が得られる。前述したリモートオブジェクト２５は、メソッドの実行結果として、他のリモートオブジェクト２５を返すこともできる。
【０１１４】
ここで返されるリモートオブジェクト２５は、もとのリモートオブジェクト２５が保持している移動オブジェクト２６とは異なる（異なるクラス、あるいは同じクラスであるが異なる識別子を持つ）移動オブジェクト２６を保持するものである。
【０１１５】
例えば、前述の例では、製品１の製品情報を示す移動オブジェクト２６に対して、データベースからこの製品の関連製品を求めるメソッドでは、同じ製品情報クラスの異なる製品コードの設定された移動オブジェクト２６を保持するリモートオブジェクト２５のリストが返される。また、この製品の製造会社を求めるメソッドでは、会社クラスのオブジェクトを保持するリモートオブジェクト２５が返される。
【０１１６】
このようにリモートオブジェクト２５のメソッドの実行結果として、リモートオブジェクト２５が返される場合には、スタブオブジェクト２２のメソッドの実行結果としてそれに対応したスタブオブジェクト２２を返す。このようにすれば、クライアントアプリケーション２１は、元のスタブオブジェクト２２とまったく同様に、返されたスタブオブジェクト２２を通して関連した新たなリモートオブジェクト２５にアクセスすることができる。
【０１１７】
また、スタブオブジェクト２２に保持されている移動オブジェクト２６の内容をサーバ上のリモートオブジェクト２５から得られる最新の情報に保つことができれば、クライアントアプリケーション２１はネットワークを介さずに、スタブオブジェクト２２を通して移動オブジェクト２６の内容にアクセスできる。
【０１１８】
また、移動オブジェクト２６は、多くの場合サーバで管理されている何らかの資源（例えば、データベースの１つのレコード）に対応するため、等価な（即ち、同じクラスで同じ識別情報を持つ）移動オブジェクト２６に対しては、それを保持するスタブオブジェクト２５は１つだけ生成するようにすることが望ましい。
【０１１９】
これらを考慮したネットワークプログラムの基本的な動作環境について、図８を用いて説明する。
【０１２０】
図８は実施形態３のネットワークプログラムの基本的な動作環境を示する図である。
【０１２１】
図８は、基本的に図２と同様であるが、図２における応答データ２８は、応答データ５２のように、変更状態、移動オブジェクトの２つのメンバーが追加される。また、クライアントプログラム上には、新たにスタブオブジェクト管理テーブル５１が追加される。このスタブオブジェクト管理テーブル５１は、移動オブジェクト２６のクラス名と識別情報に対し、その移動オブジェクト２６を保持しているすでに生成済みのスタブオブジェクト２２を記憶する。
【０１２２】
次に、実施形態３のスタブオブジェクト２２、サーバ通信管理オブジェクト２４の動作について、図９、図１０を用いて説明する。尚、クライアント通信管理オブジェクト２３、リモートオブジェクト２５の動作については、基本的に図４、図６と同じ動作を行う。
【０１２３】
サーバ通信管理オブジェクトの動作も基本的に図５と同様の動作を行うが、図５のステップＳ３１８にかわって、図１０のステップＳ６４〜ステップＳ６６の処理を行う。
【０１２４】
ステップＳ６４で、サーバ通信管理オブジェクト２４がリモートオブジェクト２５を生成し、実行したメソッドの戻り値である結果オブジェクトを受け取る。ここでは、まず、その結果オブジェクトがリモートオブジェクト２５、あるいはリモートオブジェクト２５を含む他のオブジェクトであるかを解析する。解析の結果、結果オブジェクトがリモートオブジェクト２５である場合には、それをその内部に保持する移動オブジェクト２６に入れ換えたものに変換し、これを応答データ５２の結果オブジェクトとしてセットする。
【０１２５】
次に、ステップＳ６５で、リモートオブジェクト２５の所定のメソッドであるロードメソッドを実行する。ここで、リモートオブジェクト２５のロードメソッドは、保持している移動オブジェクト２６の付帯情報が現在設定されているものと同じであるかをチェックする。チェックの結果、変更ありの場合には最新のものに再設定を行う。
【０１２６】
次に、ステップ６６で、このチェックの結果にもとづき、変更ありの場合には、応答データ５２の変更状態に変更ありを、移動オブジェクト２６には付帯情報が再設定された移動オブジェクト２６をセットする。そして、ステップ３２０で、クライアントに応答データ５２を送信する。
【０１２７】
一方、スタブオブジェクト２２の動作も基本的に図３と同様の動作を行うが、ステプＳ３２〜ステップＳ３４により、サーバから受信した応答データ５２を得て、エラーの場合はその処理を行う。一方、正常であった場合、図３のステップＳ３５にかわって、図９のステップＳ６１〜ステップＳ６３の処理を行う。
【０１２８】
ステップＳ６１で、サーバ通信管理オブジェクト２４の図１０のステップＳ６４に対応して、応答データ５２の結果オブジェクトが移動オブジェクト２６、あるいは移動オブジェクト２６を含む他のオブジェクトであるかを解析する。解析の結果、移動オブジェクト２６である場合には、それを内部保持するスタブオブジェクト２２に入れ換えたものに変換する。
【０１２９】
この際、図８のスタブオブジェクト管理テーブル５１を参照し、等価な（即ち、同じクラスで同じ識別情報を持つ）移動オブジェクト２６が、すでにスタブオブジェクト管理テーブル５１に存在する場合には、それに対応したスタブオブジェクト２２に変換する。一方、存在しない場合、その移動オブジェクト２６に対応したスタブオブジェクト２２を生成する。
【０１３０】
次に、ステップＳ６２で、応答データ５２より自分の保持している移動オブジェクト２６の変更状態をチェックする。変更ありの場合（ステップＳ６２でＹＥＳ）、ステップＳ６３に進み、自分の保持している移動オブジェクト２６を応答データ５２にセットされている最新の情報の設定された移動オブジェクト２６に再設定する。一方、変更なしの場合（ステップＳ６２でＮＯ）、ステップＳ３２に進む。
【０１３１】
以上説明したように、実施形態３によれば、リモートオブジェクト２５のメソッドの実行結果として、リモートオブジェクト２５が返される場合に、スタブオブジェクト２２のメソッドの実行結果としてそれに対応したスタブオブジェクト２２を返す。このようにすることで、クライアントアプリケーション２１は、元のスタブオブジェクト２２とまったく同様に、返されたスタブオブジェクト２２を通して関連した新たなリモートオブジェクト２５にアクセスすることができる。
【０１３２】
また、スタブオブジェクト２２に保持されている移動オブジェクト２６の内容をサーバ上のリモートオブジェクト２５から得られる最新の情報に保つことで、クライアントアプリケーション２１はネットワークを介さずに、スタブオブジェクト２２を通して移動オブジェクト２６の内容にアクセスすることができる。
［実施形態４］
上述のように本発明においては、分散オブジェクトモデルと異なり、サーバ上のリモートオブジェクトは、クライアント上のスタブオブジェクトのメソッドの実行要求のたびに生成され、メソッドの実行後には基本的には消滅する。しかし、分散オブジェクトモデルのように、サーバ上のリモートオブジェクトに対してクライアント上のスタブオブジェクトから複数回のメソッドを実行できることが必要な場合もある。
【０１３３】
例えば、サーバ上のファイルをクライアントからアクセスする場合、サーバ上のファイルに対してそれを処理するリモートオブジェクト（リモートファイルオブジェクト）を使用することになる。
【０１３４】
ファイルのサイズ等のファイル情報の獲得や、ファイルの削除、ファイル名の変更等は一度のメソッドの実行で可能であるが、大きなファイルの読みだしはメモリを消費しないようまずファイルをオープンし、次に適当なバッファサイズを指定してそのサイズだけのファイルデータを複数回に分けて読みだし、最後にクローズするとういうように、複数回に分けて実行できることが望ましい。
【０１３５】
このためには、本発明を前述した分散オブジェクトモデルと併用することができる。これを実施形態４として、説明する。まず、実施形態４のネットワークプログラムの基本的な動作環境について、図１１を用いて説明する。
【０１３６】
図１１は実施形態４のネットワークプログラムの基本的な動作環境を示す図である。
【０１３７】
図１１は図２と同様であるが、サーバ上にリモートオブジェクト管理テーブル７１が追加される。このリモートオブジェクト管理テーブル７１には、移動オブジェクト２６のクラス名・識別情報と、その移動オブジェクト２６を内部保持しているリモートオブジェクト２５のペアが登録される。
【０１３８】
動作は図３〜図６と基本的に同様の動作であるが、サーバ通信管理オブジェクト２４は、図５のステップＳ３１５で、要求データ２７より得られた移動オブジェクト２６よりそれを処理するリモートオブジェクト２５を生成する場合、まず、このリモートオブジェクト管理テーブル７１より、この移動オブジェクト２６に対応したリモートオブジェクト２５がすでに登録されていないかを調べる。
【０１３９】
見つからなかった場合は、実施形態１と同様に、リモートオブジェクト２５を生成し、ステップＳ３１６でメソッドを呼び出す。一方、見つかった場合は、新たなリモートオブジェクト２５の生成は行わず、見つかったリモートオブジェクト２５に対して、ステップＳ３１６で、そのメソッドを実行する。
【０１４０】
リモートオブジェクト管理テーブル７１への登録／削除は、リモートオブジェクト２５自身がそのメソッドの中で必要に応じて行う。
【０１４１】
例えば、前述のリモートファイルオブジェクトの例では、クライアントアプリケーション２１は、ファイルのパス名を保持するスタブオブジェクト２２を生成し、ファイルの読みだし開始命令であるオープンメソッドを呼び出す。
【０１４２】
これに対応して指定されたファイルに対応するリモートファイルオブジェクトがリモートオブジェクト２５として生成され、そのオープンメソッドが実行される。リモートファイルオブジェクトは、このオープンメソッドの中でファイルのオープン処理を実行し、ファイルを読みだすためのポートを内部データとして設定するとともに、このファイルを識別する情報（即ち、ファイルのパス名）と自身とのペアを上記のリモートオブジェクト管理テーブル７１に登録する。
【０１４３】
次に、クライアントアプリケーション２１は、同じスタブオブジェクト２２に対して読みだすバイト数を指定してファイルの読みだしメソッドを実行する。
【０１４４】
このファイルのパス名に対しては、それを処理するリモートファイルオブジェクトがリモートオブジェクト管理テーブル７１に、すでに登録されている。そのため、サーバ通信管理オブジェクト２４は、この場合、リモートオブジェクト管理テーブル７１に登録されていたリモートファイルオブジェクトに対してファイルの読みだしメソッドを実行することになる。
【０１４５】
呼び出されたリモートファイルオブジェクトは、ファイルを読みだすためのポートが内部データとしてすでに設定されているため、これを使用して指定バイト数のデータを読みだして返す。
【０１４６】
クライアントアプリケーション２１は、このようにファイルの読みだしを続行し、ファイルの終わりを検知した時点でスタブオブジェクト２２のクローズメソッドを呼び出す。これに対応してリモートオブジェクト２５のクローズメソッドでは、オープンしていたファイルの読みだしポートをクローズし、リモートオブジェクト管理テーブル７１から自身を削除する。
【０１４７】
以上説明したように、実施形態４によれば、実施形態１〜実施形態３で説明したような環境と分散オブジェクトモデルとを相補的な環境として容易に併用することができ、分散オブジェクトモデルが有する環境においても、実施形態１〜実施形態３で説明した効果を得ることができる。
［実施形態５］
実施形態５では、本発明におけるネットワークプログラムの生成方法について説明する。
【０１４８】
生成されるプログラムコードは、図７のスタブオブジェクト２２とスケルトンオブジェク４１であり、図７のクライアント通信管理オブジェクト２３、サーバ通信管理オブジェクト２４、要求データ２７、応答データ２８は上述の動作を行うプログラムコードがライブラリとして提供される。
【０１４９】
また、移動オブジェクト２６、リモートオブジェクト２５はそれぞれ汎用的な親クラスのプログラムコードがライブラリとして提供され、ユーザーはこれらを継承したサブクラスと、クライアントアプリケーション２１のプログラムを作成することになる。
【０１５０】
図１２は実施形態５のネットワークプログラムの生成方法の基本構成を説明する図である。
【０１５１】
８２はプログラムジェネレータ、８１はプログラムジェネレータ８２の入力データとなるリモートオブジェクトのインタフェース記述、８３、８４はプログラムジェネレータによって生成される、それぞれ図７のスタブオブジェクト２２、スケルトンオブジェクト４１に対応したスタブオブジェクト、スケルトンオブジェクトのプログラムコードである。
【０１５２】
入力データとなるリモートオブジェクトのインタフェース記述８１は、対象とするリモートオブジェクトの持つメソッド群の各メソッドの形式のみを記述したものである。これは、プログラム言語によって記述内容は異なるが、例えば、各メソッドの名前、メソッドの戻り値のデータ型、メソッドの各引数のデータ型を記述したものである。
【０１５３】
尚、このインタフェース記述で必要なのは、リモートオブジェクトの持つメソッドのうちスタブオブジェクトを通して呼び出しを行いたいメソッド（リモートメソッド）の形式のみである。
【０１５４】
このインタフェース記述は、独自の形式でファイル等に作成してもよいが、生成するプログラム言語に相当するものがあればそれを使用してもよい。
【０１５５】
例えば、Ｊａｖａにおいてはインタフェースを定義するｉｎｔｅｒｆａｃｅという構文があるし、Ｃ＋＋言語の場合には、仮想関数の宣言のみからなるクラス定義がインタフェース定義に相当する。
【０１５６】
また、Ｊａｖａの場合はコンパイルされたクラスあるいはインタフェースのバイトコードから、必要なメソッドの形式を抽出することも可能である。
【０１５７】
プログラムジェネレータ８２は、以下のような動作でスタブオブジェクト、スケルトンオブジェクトのプログラムコード８３、８４を生成する。
【０１５８】
まず、入力となるインタフェースの名前から、生成するスタブオブジェクト、スケルトンオブジェクトのクラス名を決める。例えば、インタフェース名の後ろに”＿Ｓｔｕｂ”，”＿Ｓｋｅｌ”を付加してもよいし、もちろんユーザーに指定させてもよい。
【０１５９】
次に、インタフェース記述から、そのインタフェースの継承関係を解析し、生成するスタブオブジェクト、スケルトンオブジェクトの継承関係を決定する。そして、これらをもとにスタブオブジェクト、スケルトンオブジェクトのクラスの宣言部を生成する。
【０１６０】
次に、スタブオブジェクトについては、インタフェース記述中の各メソッドについて、その形式、メソッドの名前、メソッドの戻り値のデータ型、メソッドの各引数のデータ型を抽出して、プログラムコードに同様なメソッドの宣言文を生成する。続いて、そのメソッドの実行文として図３のステップＳ３１〜ステップＳ３６の動作を行うプログラムコードを生成する。
【０１６１】
尚、ステップＳ３２の要求データの作成で必要なメソッド識別子については、例えば、出現した順の番号を使用するなど、適当な規則により行う。
【０１６２】
スケルトンオブジェクトについては、実施形態２で説明したように、特定のメソッド（例えば、ディスパッチメソッド）の宣言部を生成する。
【０１６３】
このメソッドの宣言部は、例えば、引数として移動オブジェクト、メソッドの識別子、メソッドパラメータの配列とサーバ通信管理オブジェクトの４つを持つ。
【０１６４】
次に、このメソッドの実行文として、まず、最初に引数の移動オブジェクト、サーバ通信管理オブジェクトからリモートオブジェクトを生成するプログラムコードを生成する。次に、入力のインタフェース定義の各メソッドに対して、上記スタブオブジェクトの場合と同じメソッド識別子の決定規則に基づき、『もしメソッド識別子がＸＸＸであるなら、生成したリモートオブジェクトのメソッドＸＸＸを呼び出し、その戻り値を返す』というプログラムコードを生成する。
【０１６５】
ここで、メソッドＸＸＸの呼び出しの際にはこのメソッドの形式に従った形でメソッドパラメータの配列の要素を指定する。
【０１６６】
以上説明したように、実施形態５によれば、実施形態１〜実施形態４で説明したようなネットワークプログラミング方法に基づいた簡単で形式的な記述のプログラムコードを生成することができる。
［実施形態６］
実施形態５では、リモートオブジェクトのインタフェース定義のみからスタブ、スケルトンオブジェクトのプログラムコード８３，８４を生成したが、実施形態６ではユーザの作成したリモートオブジェクトのプログラムコード全体から、スタブオブジェクト、スケルトンオブジェクトのプログラムコードを生成する例について説明する。
【０１６７】
本発明におけるネットワークプログラミング方法では、スタブオブジェクトとリモートオブジェクトの共通メソッドには、スタブオブジェクトが処理要求をリモートオブジェクトに転送するリモートメソッドとともに、保持する移動オブジェクトとローカルな資源へのアクセスのみからなるネットワークを介さずに実行可能なローカルメソッドがある。
【０１６８】
このため、もととなるリモートオブジェクトのプログラムコード記述では、各メソッドの宣言・処理本体とともに、各メソッドは以下のような方法でそれがローカルメソッドであるか、リモートメソッドであるか、あるいはスタブオブジェクトとは無関係なリモートオブジェクトの私的メソッドであるかを識別可能にしておく。
【０１６９】
・所定の識別子（例えば、ＲｅｍｏｔｅＭｅｔｈｏｄ、ＬｏｃａｌＭｅｔｈｏｄ）をメソッドの宣言の前に付加する。何も付加されないメソッドは私的メソッドとみなす。
【０１７０】
・メソッド名の付け方のルールを決める。
【０１７１】
例えば、Ｌｏｃａｌで終わるメソッド名はローカルメソッド、Ｒｅｍｏｔｅで終わるメソッド名はリモートメソッド、他は私的メソッドとみなす。
【０１７２】
このようなリモートオブジェクトのプログラムコード記述をもとに、まず、リモートメソッドについては、実施形態５と同様に、スタブオブジェクト、スケルトンオブジェクトのプログラムコードを生成する。なぜなら、入力であるリモートオブジェクトのプログラムコードは、実施形態５で必要なインタフェース定義情報（即ち、メソッドの形式）を当然含んでいるからである。リモートオブジェクトの私的メソッドについては無関係であるので単に無視する。
【０１７３】
また、ローカルメソッドについては、スケルトンオブジェクトについては無視し、スタブオブジェクトについては、それとまったく同じメソッドの宣言と処理本体からなるプログラムコードを生成する。
【０１７４】
以上説明したように、実施形態６によれば、ユーザの作成したリモートオブジェクトのプログラムコード全体から、スタブオブジェクト、スケルトンオブジェクトのプログラムコードを生成することができる。
【０１７５】
尚、本発明は、複数の機器（例えばホストコンピュータ、インタフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１７６】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１７７】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１７８】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１７９】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１８０】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１８１】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した図３〜図１０に示すフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１８２】
【図１】実施形態１のネットワークプログラムの基本的な動作環境を説明する図である。
【図２】実施形態１のネットワークプログラムの基本構成を示す図である。
【図３】実施形態１のスタブオブジェクトの動作を示すフローチャートである。
【図４】実施形態１のクライアント通信管理オブジェクトの動作を示すフローチャートである。
【図５】実施形態１のサーバ通信管理オブジェクトの動作を示すフローチャートである。
【図６】実施形態１のリモートオブジェクトの動作を示すフローチャートである。
【図７】実施形態２のネットワークプログラムの基本的な動作環境を説明する図である。
【図８】実施形態３のネットワークプログラムの基本的な動作環境を示する図である。
【図９】実施形態３のスタブオブジェクトの動作を示すフローチャートである。
【図１０】実施形態３のサーバ通信管理オブジェクトの動作を示すフローチャートである。
【図１１】実施形態４のネットワークプログラムの基本的な動作環境を示す図である。
【図１２】実施形態５のネットワークプログラムの生成方法の基本構成を説明する図である。
【符号の説明】
【０１８３】
１１  クライアントコンピュータ
１２、１５  メモリ
１３、１６  外部記憶装置
１４  サーバコンピュータ
１７  ネットワーク回線
【図１】
2005266928.tif 000003
【図２】
2005266928.tif 000004
【図３】
2005266928.tif 000005
【図４】
2005266928.tif 000006
【図５】
2005266928.tif 000007
【図６】
2005266928.tif 000008
【図７】
2005266928.tif 000009
【図８】
2005266928.tif 000010
【図９】
2005266928.tif 000011
【図１０】
2005266928.tif 000012
【図１１】
2005266928.tif 000013
【図１２】
2005266928.tif 000014