(57)【要約】【課題】通信を行いながら一連の処理を行う複数のプロセス内でのリソースを有効に活用する通信方式を提供する。【解決手段】サーバプロセス１１０とクライアントプロセス１１１との間に複数の通信路１７０〜１７２が提供され、クライアントプロセス１１１は、サーバプロセス１１０へ要求する処理要求を生成し、通信路制御プログラム１６１によって確保された通信路を用いて、処理要求を送信し、処理要求に対応する結果を通信路を用いて受信する複数の処理スレッド１５０〜１５２と、サーバプロセス１１０は、処理要求を受け付ける処理要求受付スレッド１２１と、処理要求を実行し、実行した結果をクライアントプロセス１１１へ送信する複数の処理スレッド１３０〜１３２とを備え、複数の通信路を用いて複数の処理スレッド１３０〜１３２、１５０〜１５２とが並行して、処理要求に対する結果を伝送する。【選択図】        図１
2005011201.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置とクライアント装置との間に複数の通信路が提供される通信方式において、
上記クライアント装置は、
通信路を確保するクライアント側通信路制御部と、
上記サーバ装置へ要求する処理要求を生成し、生成した処理要求に必要な通信路の確保を上記クライアント側通信路制御部へ要求し、上記クライアント側通信路制御部が確保した通信路を用いて、生成した処理要求を上記サーバ装置へ送信し、上記処理要求に対応する結果を上記サーバ装置から上記通信路を用いて受信する複数のクライアント側処理部と、
上記複数のクライアント側処理部を制御する処理管理部とを備え、
上記サーバ装置は、
上記クライアント装置から処理要求を受け付ける処理要求受付部と、
上記処理要求受付部が受け付けた処理要求を実行し、実行した結果の一部分を取り出した処理結果と、上記実行した結果の次の処理の情報を示す戻り値とを上記クライアント装置へ送信する複数のサーバ側処理部とを備え、
上記複数のクライアント側処理部は、上記処理要求に対応する結果として上記戻り値と上記処理結果とを受信し、上記戻り値を上記処理管理部へ受け渡し、
上記処理管理部は、上記戻り値を入力し、上記戻り値が次の処理が必要なことを示している場合、複数のクライアント側処理部のいずれかを指定して、上記次の処理要求の送信を指示することを、上記戻り値が次の処理が不要（処理を終わり）を示すまで繰り返し、
上記クライアント側通信路制御部は、上記処理管理部によって指示された複数のクライアント側処理部それぞれに対して並行して通信路を確保することを特徴とする通信方式。
【請求項２】
上記サーバ装置と上記クライアント装置とは、マルチスレッドシステムによって実行され、
上記複数のクライアント側処理部は、複数のクライアント側処理スレッドとして処理を実行し、
上記複数のサーバ側処理部は、複数のサーバ側処理スレッドとして処理を実行することを特徴とする請求項１記載の通信方式。
【請求項３】
複数の通信路を用いてサーバ装置との間で情報を伝送するクライアント装置において、
通信路を確保するクライアント側通信路制御部と、
上記サーバ装置へ処理の実行を要求する処理要求を生成し、生成した処理要求に必要な通信路の確保を上記クライアント側通信路制御部へ要求し、上記クライアント側通信路制御部が確保した通信路を用いて、生成した処理要求を上記サーバ装置へ送信し、上記処理要求に対応する結果の一部分を取り出した処理結果と、上記処理要求に対応する結果のうち次の処理の情報を示す戻り値とを上記サーバ装置から上記通信路を用いて受信する複数のクライアント側処理部と、
上記複数のクライアント側処理部を制御する処理管理部と
を備え、
上記複数のクライアント側処理部は、上記戻り値と上記処理結果とを受信し、上記戻り値を上記処理管理部へ受け渡し、
上記処理管理部は、上記戻り値を入力し、上記戻り値が次の処理が必要なことを示している場合、複数のクライアント側処理部のいずれかを指定して、上記次の処理要求の送信を指示することを、上記戻り値が次の処理が不要（処理を終わり）を示すまで繰り返し、
上記クライアント側通信路制御部は、上記処理管理部によって指定された複数のクライアント側処理部それぞれに対して並行して通信路を確保することを特徴とするクライアント装置。
【請求項４】
上記処理管理部によって指示されたクライアント側処理部は、上記処理管理部から戻り値を入力し、上記戻り値に基づいて、実行した結果の次の処理要求を送信し、上記サーバ装置から上記次の処理結果と戻り値とを受信することを特徴とする請求項３記載のクライアント装置。
【請求項５】
上記処理管理部は、上記複数のクライアント側処理部のいずれかのクライアント側処理部が上記処理結果を受信中に、他のクライアント側処理部へ上記次の処理要求の送信を指示することを特徴とする請求項３または４記載のクライアント装置。
【請求項６】
上記クライアント装置は、マルチスレッドシステムによって実行され、
上記複数のクライアント側処理部は、複数のクライアント側処理スレッドとして処理を実行することを特徴とする請求項３から５いずれかに記載のクライアント装置。
【請求項７】
複数の通信路を用いてクライアント装置との間で情報を伝送するサーバ装置において、
上記クライアント装置から通信路を介して処理要求を受け付ける処理要求受付部と、
上記処理要求受付部が受け付けた処理要求を実行し、実行した結果から一部分を取り出した処理結果と、上記実行した結果の次の処理の情報を示す戻り値とを上記クライアント装置へ送信する複数のサーバ側処理部とを備え、
上記処理要求受付部は、上記戻り値に基づいて生成された処理要求を受信し、上記複数のサーバ側処理部のいずれかへ処理の実行を指示すること、上記戻り値に基づいて生成された処理要求を受信する毎に繰り返し、
上記複数のサーバ側処理部は、並行して処理結果を送信することを特徴とするサーバ装置。
【請求項８】
上記サーバ装置は、マルチスレッドシステムによって実行され、
上記複数のサーバ側処理部は、複数のサーバ側処理スレッドとして処理を実行することを特徴とする請求項７記載のサーバ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はクライアントとサーバがプロセス間通信をしながら、一連の処理を行う処理システムにおける通信方式及び方法に関するものである。
【０００２】
【従来の技術】
従来のプロセス間通信方式としては、例えば特開平１１−８５６４５号公報がある。特開平１１−８５６４５号公報は、「通信を利用するアプリケーションプログラムが多重に動作して空きコネクションが少なくなった場合、およびアプリケーションプログラムが異常動作した場合にも、コネクションリソースを有効活用できるようにする。」という課題を解決する手段として、「複数のコンピュータ・端末装置を通信回線１０で接続し、任意の２つのコンピュータ間での通信が可能な通信網において、通信網上の各コンピュータ・端末装置で、相手コンピュータ・端末装置との仮想的通信路（コネクション）１１〜１３と各アプリケーション４０を対応づけるとき、２つのキュー２２、２３によりそのコネクションリソース１１〜１３を空き状態の優先順に動的に管理し、空きコネクションをアプリケーションプログラムに通知することにより、アプリケーションプログラムの異常時にもコネクションリソースを有効活用できるようにする。」（特開平１１−８５６４５号公報、要約引用）という技術を開示する。
【０００３】
このように、コネクションリソース要求を分割し、２段階のキューによりコネクションの管理を行うことで、いずれかの区間で競合が起きたり、アプリケーションプログラムに異常が起こったりした場合などでも、デバイスの不使用状態を把握し、他のアプリケーションに使わせることができる。
【０００４】
【特許文献１】
特開平１１−８５６４５号公報
【特許文献２】
特開平９−３０５４９９号公報
【特許文献３】
特開平５−３３４１０４号公報
【特許文献４】
特開平１１−１５４１２２号公報
【０００５】
【発明が解決しようとする課題】
上述の従来技術では多重に動作するアプリケーションプログラム間でのリソースの不必要な占有を防ぐことはできるが、次のような問題がある。
例えば非常に大量のデータをやり取りし、それに対して処理を行うようなプロセスの場合、データの送受信が終了するまでは次の操作を行うことはできない。この間、送信側、受信側双方のＣＰＵ資源は浪費されることになる。
また、逆に、データに対して複雑な処理を行うような場合、処理が終了するまでコネクションリソースが浪費されることになる。
このように、割り振られたリソースの活用はアプリケーション次第であり、十分に有効活用できているかどうかはこのような従来技術では補償されない。
【０００６】
そこで、本発明は、通信を行いながら一連の処理を行う複数のプロセス内でのリソースを有効に活用することを目的とする。
【０００７】
【課題を解決するための手段】
この発明に係る通信方式は、サーバ装置とクライアント装置との間に複数の通信路が提供される通信方式において、
上記クライアント装置は、
通信路を確保するクライアント側通信路制御部と、
上記サーバ装置へ要求する処理要求を生成し、生成した処理要求に必要な通信路の確保を上記クライアント側通信路制御部へ要求し、上記クライアント側通信路制御部が確保した通信路を用いて、生成した処理要求を上記サーバ装置へ送信し、上記処理要求に対応する結果を上記サーバ装置から上記通信路を用いて受信する複数のクライアント側処理部と、
上記複数のクライアント側処理部を制御する処理管理部とを備え、
上記サーバ装置は、
上記クライアント装置から処理要求を受け付ける処理要求受付部と、
上記処理要求受付部が受け付けた処理要求を実行し、実行した結果の一部分を取り出した処理結果と、上記実行した結果の次の処理の情報を示す戻り値とを上記クライアント装置へ送信する複数のサーバ側処理部とを備え、
上記複数のクライアント側処理部は、上記処理要求に対応する結果として上記戻り値と上記処理結果とを受信し、上記戻り値を上記処理管理部へ受け渡し、
上記処理管理部は、上記戻り値を入力し、上記戻り値が次の処理が必要なことを示している場合、複数のクライアント側処理部のいずれかを指定して、上記次の処理要求の送信を指示することを、上記戻り値が次の処理が不要（処理を終わり）を示すまで繰り返し、
上記クライアント側通信路制御部は、上記処理管理部によって指示された複数のクライアント側処理部それぞれに対して並行して通信路を確保することを特徴とする。
【０００８】
【発明の実施の形態】
実施の形態１．
実施の形態１では、サーバ（サーバ装置）とクライアント（クライアント装置）間の通信方式について説明する。また、実施の形態１では、一例として、マルチスレッドシステムにおける通信方式について説明する。
図１はこの発明のクライアント／サーバの実施例を示す構成図である。
図１は、サーバプロセス１１０と、クライアントプロセス１１１とは、通信路１７０〜１７２を介して通信を実施する例を示す。
サーバプロセス１１０は、サーバ側処理プロセス、サーバ側メッセージ処理プロセスともいう。サーバプロセス１１０は、サーバ装置に備えられるプロセスである。
また、クライアントプロセス１１１は、クライアント側処理プロセス、クライアント側メッセージ処理プロセスともいう。クライアントプロセス１１１は、クライアント装置に備えられるプロセスである。
また、サーバプロセス１１０、クライアントプロセス１１１双方に、通信路１７０〜１７２の管理を行う通信路制御プログラム１６０、１６１がある。通信路制御プログラム１６０、１６１は、サーバプロセス１１０とクライアントプロセス１１１とが通信するための通信路を確保する。
なお、図１中では、サーバ端末とクライアント端末の記載は省略している。
【０００９】
サーバ側のサーバプロセス１１０は、通信路制御プログラム１６０に加え、メインスレッド１２０、処理要求受付スレッド１２１、処理スレッド１３０〜１３２とを備える。
処理要求受付スレッド１２１は、クライアントプロセス１１１からの要求を受け付ける。
メインスレッド１２０は、サーバプロセス１１０が実行する処理内容を制御する。メインスレッド１２０は、実行する処理手順を構築し、処理スレッド１３０〜１３２へ処理の開始を指示する。
処理スレッド１３０〜１３２は、処理要求受付スレッド１２１が受け付けた処理に応じて、メインスレッド１２０が起動するスレッドである。処理スレッド１３０〜１３２は、クライアントからの処理要求によって要求された処理を実行する。
【００１０】
クライアント側のクライアントプロセス１１１は、通信路制御プログラム１６１に加え、メインスレッド１４０、処理スレッド１５０〜１５２とを備える。
メインスレッド１４０は、クライアントプロセス１１１が実行する処理内容を制御する。メインスレッド１４０は、実行する処理手順を構築し、処理スレッド１５０〜１５２へ処理の開始を指示する。
処理スレッド１５０〜１５２は、メインスレッド１４０が処理に応じて起動したスレッドである。サーバプロセス１１０へ処理を要求する処理要求を生成し、生成した処理要求をサーバプロセス１１０へ送信するとともに、処理要求に対する処理結果を受信する。
【００１１】
図２に、クライアント側の通信路制御プログラム１６１の動作の一例を表したフローチャートを示す。
通信路制御プログラム１６０、１６１は、クライアントプロセス１１１とサーバプロセス１１０が処理を開始する前に、お互いの処理に最適な数の通信路を決定し（ステップＳＴ６０１）、決定した数の通信路をあらかじめ確保する（ステップＳＴ６０２）。通信路制御プログラム１６１は、通信路の状態を監視し、通信路要求が要求されるまで待つ（ステップＳＴ６０３）。
クライアントプロセス１１１の処理スレッド１５０〜１５２がサーバにメッセージを送信する時には、処理スレッド１５０〜１５２は、通信路制御プログラム１６１に通信路確保を要求する（ステップＳＴ６０７）。通信路制御プログラム１６１は、空き通信路があるかどうかを判断する（ステップＳＴ６０４）。通信路制御プログラム１６１は、空き通信路があれば、上記空き通信路を処理スレッド１５０〜１５２に通知する（ステップＳＴ６０６）。空き通信路がなければ通信路の一つが空くまで待機してから、空いた通信路を処理スレッド１５０〜１５２に通知する（ステップＳＴ６０６）。処理スレッド１５０〜１５２は、通知された通信路を確保する（ステップＳＴ６０８）。
上記図２の説明で、処理スレッド１５０〜１５２と記したが、複数の処理スレッド１５０〜１５２それぞれが処理を実施することを示している。
なお、通信路制御プログラム１６０も同様の処理を実施する。
通信路制御プログラム１６０は、クライアント側から要求される処理を実施する場合、クライアント側の要求によって確保した通信路を用いる。また、通信路制御プログラム１６０は、サーバ側の処理スレッド１３０〜１３２から通信路確保の要求を受け、要求に基づいて、通信路を確保する。
【００１２】
図３はこの発明のプロセス間（ここでは、サーバプロセス１１０とクライアントプロセス１１１間）でやり取りするメッセージ２００の構成図の一例である。
図３では、メッセージ２００は、データのヘッダ部２１０とデータのボディ部２２０とから構成される例を示している。データのヘッダ部２１０は、処理内容２１１、ヘッダ部データ長２１２、ボディ部データ長２１３、戻り値２１４などから構成される。データのボディ部２２０は、実際の処理に使われる部分である。
ボディ部２２０は、クライアントプロセス１１１からの処理要求に対応した結果の一部分を取り出した処理結果が書きこまれる。
また、戻り値２１４は、処理結果に対応した結果（次の処理の情報）を示す。
メッセージは、各処理スレッドやメインスレッドで作成され、相手方のプロセス（サーバプロセスまたはクライアントプロセス）へ送信される。
【００１３】
図４に処理手順５００の内容の一例を示す。
処理手順５００は、プロセス（例えば、クライアントプロセス１１１）が実施する処理の手順を定義した内容である。
５１０〜５１６は、具体的な処理の手順を示している。
図４では、一例として、データベース処理を例示している。
クライアントプロセス１１１は、データベース処理をサーバプロセス１１０に依頼し、サーバプロセスは、データベース処理を実施し、その結果をクライアントプロセス１１１が受け取る場合である。
【００１４】
サーバプロセス１１０（実際には、処理スレッド１３０〜１３２のいずれかが実行する）は、最初にデータベースをオープンし（５１０）、処理を実行（５１１）、処理結果の取得をして（５１２から５１５）、データベースをクローズする（５１６）。
データベースの処理結果は一般には複数行あり、その結果データは大量である。従って、サーバプロセス１１０は、複数回にわたってデータを送信する。また、クライアントプロセス１１１は、全てのデータを取得し終わるまで複数回に渡ってデータを受信する必要がある。
そのために、クライアントプロセス１１１のメインスレッド１４０は、処理結果が送信されるデータメッセージ２００のヘッダ部２１０の戻り値２１４の値から再度データ取得する必要があるかどうか（次のデータがあるかどうか）の判断を実行する。再度データ取得する必要がある場合には、メインスレッド１４０は、別の処理スレッド１５１を起動して次のデータを取得するためのメッセージをサーバ側のサーバプロセス１１０に送信する。処理スレッド１５０はその間も結果データを受信することができる。
すなわち、サーバプロセス１１０は、クライアントプロセス１１１から送信された処理要求に対応する処理を実行し、実行した結果を複数の処理結果として複数に分けて送信する。処理結果は、実行した結果の一部分を取り出したデータといえる。サーバプロセス１１０は、戻り値２１４を用いて、次の処理か不要（処理を終わり）であるか（実行した結果のうち、未送信部分が有るか否か（有無））を示す。クライアントプロセス１１１は、戻り値２１４に基づいて、次の処理結果の送信を要求する処理要求を送信するか否かを判断することが可能となる。
【００１５】
図５はクライアントプロセス１１１の動作の一例を表したフローチャートである。以下の説明では、処理スレッド１５０がまず処理を開始し、次に処理スレッド１５１が処理を開始する場合を一例として説明する。
メインスレッド１４０はサーバに依頼する処理手順（５００）を構築し（ステップＳＴ３０１）、それに従ってまず処理スレッド１５０を起動する（ステップＳＴ３０７）。次に処理スレッド１５０の結果を待つ（ステップＳＴ３０２）。
処理スレッド１５０は、通信路制御プログラム１６１から通信路を確保し（ステップＳＴ３１１）、メインスレッド１４０からの依頼に基づきメッセージ２００（送信メッセージ）の作成などの前処理を行い（ステップＳＴ３１２）、メッセージ２００のうちのヘッダ部２１０の送信（ステップＳＴ３１３）、ボディ部２２０の送信（ステップＳＴ３１４）を行う。ついで、処理スレッド１５０は、サーバプロセス１１０が送信メッセージ２００に基づいて処理を行った結果を受信する。受信にあたっては、処理スレッド１５０は、まず、受信メッセージ２００のうちヘッダ部２１０を受信し（ステップＳＴ３１５）、上記ヘッダ部２１０をメインスレッド１４０に渡し、引き続きボディ部２２０を受信する（ステップＳＴ３１６）。
【００１６】
メインスレッド１４０は、処理スレッド１５０が通知したヘッダ部２１０を受け取り、処理スレッド１５０がボディ部２２０を受信している間（ステップＳＴ３１６の間）に、ヘッダ部２１０にある戻り値２１４を解析し（ステップＳＴ３０３）、他の処理スレッドの起動が必要か判断を行う（ステップＳＴ３０４）。他の処理スレッドに次の処理を行わせる場合には、メインスレッド１４０は、処理スレッド１５１を起動し、ステップＳＴ３０１で構築した処理手順が全て終了したかを判断する（ステップＳＴ３０５）。他の処理スレッドの起動が不要な場合は、メインスレッド１４０は、処理スレッドを起動せずに、ステップＳＴ３０５にすすむ。すべての処理が終了していればクライアントプロセス１１１は処理を終了し（ステップＳＴ３０６）、まだ終了していない場合には、再び処理スレッドの結果を待つステップＳＴ３０２に戻る。
【００１７】
処理スレッド１５０は、ステップＳＴ３１６でボディ部のデータを受信し終わったら、次に後処理（ステップＳＴ３１７）をおこない、自身の処理が終了したかの判断を行う（ステップＳＴ３１８）。処理が終了していれば、処理スレッド１５０は、通信路の解放（ステップＳＴ３１９）を通信路制御プログラム１６１に通知して処理スレッドを終了する（ステップＳＴ３２０）。処理が終了していなければ、処理スレッド１５０は、再びステップＳＴ３１２に戻る。
【００１８】
メインスレッド１４０がステップＳＴ３０４で起動した処理スレッド１５１も処理スレッド１５０と同様の処理を行う。従ってステップＳＴ３３１からステップＳＴ３４０までの処理を行う。具体的な説明は、処理スレッド１５０と同様のため省略する。
【００１９】
図６は、サーバプロセス１１０の動作の一例を表すフローチャートである。
メインスレッド１２０は、まず、処理要求受付スレッド１２１を起動し、（ステップＳＴ４０１）要求が来るまでは待機する（ステップＳＴ４０２）。処理要求受付スレッド１２１は、要求待ちの状態（ステップＳＴ４１０）となり、しばらくしたらクライアントからの要求を受付け（ステップＳＴ４１１）、要求をメインスレッド１２０に渡し、再び要求待ちの状態（ステップＳＴ４１２）となる。
メインスレッドは要求メッセージ２００を解析して（ステップＳＴ４０３）、処理スレッド１３０を起動し（ステップＳＴ４０４）、次の要求を要求受付スレッドから受け取るまでまつ（ステップＳＴ４０５）。
【００２０】
処理スレッド１３０はまず、クライアントからの処理要求に応じて要求処理を行う（ステップＳＴ４２２）。処理が終了したら結果をヘッダ部２１０、ボディ部２２０の順に送信し（ステップＳＴ４２３、ステップＳＴ４２４）、送信が終了したらすてべの処理が終了したかどうかを判断する（ステップＳＴ４２５）。終了していれば処理スレッド１３０を終了する（ステップＳＴ４２７）。処理を続行する場合は再びステップＳＴ４２２に戻る。
【００２１】
処理スレッド１３０が起動中に、処理要求受付スレッド１２１は、クライアントから別の処理を受け付け（ステップＳＴ４１３）、要求をメインスレッド１２０に渡す。メインスレッド１２０は、要求メッセージ２００を解析して（ステップＳＴ４９６）、処理スレッド１３１を起動する（ステップＳＴ４０７）。処理スレッド１３１は、処理１３０と同様にステップＳＴ４３１からステップＳＴ４３７までの処理を実行する。
【００２２】
ここで、サーバプロセス１１０の処理スレッド１３０〜１３２と、クライアントプロセス１１１の処理スレッド１５０〜１５２との対応を説明する。
上記の説明では、図５の処理スレッド１５０が要求した処理要求は、図６においては処理スレッド１３０が担当し、処理スレッド１５１の処理要求は図６の処理スレッド１３１が担当している。
この実施の形態では、処理手順５００の中で、時間がかかるデータの送信と、時間がかからないその他の処理とが混在している。
処理手順５００の中で、処理結果取得５１２から５１５に関する、サーバ側の処理スレッドからクライアント側の処理スレッドへ送信するデータが大量である。従って、その送受信には大量の時間がかかる（ステップＳＴ３１６、ステップＳＴ４２４）。
他の処理手順では、送信デーは少量であり送受信の時間もかからない。
一方、全ての処理手順について、クライアント側の処理スレッドからサーバ側の処理スレッドに送信するデータは常に少量であり送受信時間もかからない。
【００２３】
従って、サーバ側では、ヘッダ部２１０へ次に送信する処理結果があることを、ヘッダ部２１０の戻り値２１４へ書きこんで、クライアント側へ通知する。
クライアント側は、戻り値２１４に基づいて、処理スレッド１５０がボディ部２２０を受信中に、次の処理スレッド１５１を起動する。
サーバ側においても、処理スレッド１３０が処理結果のデータをクライアント側に送信している間に、処理スレッド１３１が次の要求を先読みして受け付けて処理を行うものである。
【００２４】
このように、この実施の形態のプロセス間の通信方式及び通信方法では、プロセス内の第一の処理スレッドがデータを受信中でも、そのデータ受信後の処理を先読みして第二の処理スレッドは他の通信路を用いて通信をする。従って、第一の処理スレッドが通信をしている間も、第二の処理スレッドが次の処理を行うことによって、プロセスのアイドル時間を減らしてトータルの処理性能を向上させることができる。
【００２５】
実施の形態２．
上記実施の形態１では、マルチスレッドの通信方式を一例として説明したが、マルチスレッドに限られることはない。
図７は、実施の形態２のクライアント／サーバの構成の一例を表す図である。
サーバ装置７１０は、処理管理部７２０、処理要求受付部７２１、処理実行部７３０、通信制御部７６０とを有する。
また、クライアント装置７１１は、処理管理部７４０、処理実行部７５０、通信制御部７６１とを有する。
サーバ装置７１０は、クライアント装置７１１から処理要求を受け付け、受け付けた処理を実行し、実行した結果をクライアント装置へ受け渡す。
クライアント装置７１１は、サーバ装置７１０へ、処理要求を通知し、通知した処理要求の結果を受け取る。
【００２６】
通信制御部７６０、７６１は、通信路７７０〜７７２を管理する。また、処理部からの要求に基づいて、処理部が使用する通信路を確保する。通信制御部７６０、７６１は、複数の通信路を並行して確保し、サーバ装置７１０の複数の処理部７３１〜７３３とクライアント装置７１１の複数の処理部７５１〜７５３が並行して通信を実施できるようにする。
処理要求受付部７２１は、クライアント装置７１１から通知される処理要求を受け付け、受け付けた処理要求を処理管理部７２０へ通知する。
処理管理部７２０は、処理要求受付部７２１が受け付けた処理要求を処理部７３１〜７３３へ割り振り、実行させる。
処理部７３１〜７３３は、処理要求に要求された処理を実行する。
処理実行部７３０は、処理部７３１〜７３３を管理する。処理実行部７３０は、処理部７３１〜７３３の数に限られることなく、二以上の複数の処理部を備える。
処理管理部７４０は、サーバ装置７１０へ通知する処理要求にあたっての処理手順を構築し、処理部７５１〜７５３を起動する。
処理部７５１〜７５３は、処理管理部７４０からの指示に基づいて、サーバ装置７１０へ通知する処理要求を生成し、通信制御部７６１を介して、生成した処理要求をサーバ装置７１０へ通知し、通知した処理要求に対応する結果（処理要求に対応する結果の一部分を取り出した処理結果）を受け取る。
処理実行部７５０は、処理部７５１〜７５３を管理する。処理実行部７５０は、処理部７５１〜７５３の数に限られることなく、二以上の複数の処理部を備える。
【００２７】
なお、実施の形態１と実施の形態２との各構成要素は、次のように対応付けられる。
通信制御部７６０、７６１は、通信路制御プログラム１６０、１６１と対応する。
処理管理部７２０、７４０それぞれは、メインスレッド１２０、１４０と対応する。
処理要求受付部７２１は、処理要求受付スレッド１２１と対応する。
処理部７３１〜７３３は、処理スレッド１３０〜１３２と、処理部７５１〜７５３は、処理スレッド１５０〜１５３とそれぞれ対応する。
通信路１７０〜１７２は、通信路７７０〜７７２に対応する。
実施の形態１の各構成要素は、実施の形態２の対応する構成要素の一例であり、実施の形態２の構成要素は、実施の形態１で例示した構成要素に限られるわけではない。
また、サーバ側（サーバプロセス１１０またはサーバ装置７１０）とクライアント側（クライアントプロセス１１１またはクライアント装置７１１）との各構成要素の名称が同じ場合は、それぞれ「サーバ側〜」（例えば、「サーバ側処理部」）または「クライアント側〜」（例えば、「クライアント側処理部」）として区別した名称を用いることができる。
【００２８】
サーバ装置７１０とクライアント装置７１１の動作は、実施の形態１と同様であるため、説明を省略する。
また、通信路７７０〜７７２は、サーバ装置７１０とクライアント装置７１１との間でデータを伝送（送受信）するための経路のことを指す。通信路７７０〜７７２は、一つの通信網に複数の通信路が設置されていることを前提としている。通信路は、通信網に設定する論理的な経路であるともいえる。また、通信網は、一つの通信回線であってもよいし、複数の通信回線を含む場合てあってもよい。通信回線（ハードウェア）に限定されることなく、通信網に複数の通信路（経路）が設定されていればよい。
【００２９】
このように、実施の形態２の通信方式（サーバ装置、クライアント装置それぞれ）では、サーバ装置の複数の処理部とクライアント装置の複数の処理部とが並行して複数の通信路を介して処理を実施することができるため、一つの処理要求（例えば、大量データの読み出し）に対して、サーバ装置は、読み出したデータを複数の処理結果として、複数の処理部を用いて並行して（同時に）送信すること（複数の処理部が同時に異なる部分の処理結果を同時に送信すること）ができる。また、クライアント装置は、サーバ装置の複数の処理部それぞれから送信される処理結果を、クライアント側の複数の処理部が並行して受信すること（複数の処理部が同時に異なる部分の処理結果を同時に受信すること）が可能となる。
【００３０】
実施の形態３．
上記実施の形態１及び実施の形態２で説明した通信方式の各構成要素（実施の形態２では、「〜部」として記述した構成要素）は、一部或いはすべて計算機で動作可能なプログラムにより構成することができる。これらのプログラムは、例えば、Ｃ言語により作成することができる。
【００３１】
また、上記各構成要素（あるいは、上記プログラムの各手順）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェア或いは、ハードウェア或いは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実施されても構わない。
また、上記各実施の形態を実施させるプログラムは、記録媒体に記録される。記録媒体は、磁気ディスク装置、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置を用いても構わない。
また、上記プログラムは、計算機にロードされ、プロセッサの制御に基づいて実行される。
【００３２】
【発明の効果】
以上のように、この発明によればクライアント／サーバ構成の処理において、クライアントプロセスは、サーバプロセスからの大量のデータを受け取っている間に、別の通信路を用いて次の処理要求をサーバ側に送信することができる。一方サーバ側も大量のデータを送信中に次の要求を受けつけて処理を行うことができる。このようにネットワークでデータ送受信中も次の処理を先読みして処理することで、トータルの処理性能を向上することができる。
【図面の簡単な説明】
【図１】実施の形態１のクライアント／サーバの構成の一例を表す図。
【図２】クライアント側通信路制御プログラムの処理フローの一例を表す図。
【図３】通信するデータ（メッセージ）の構成図の一例を表す図。
【図４】処理手順の一例を表す図。
【図５】クライアントプロセスの処理フローの一例を表す図。
【図６】サーバプロセスの処理フローの一例を表す図。
【図７】実施の形態２のクライアント／サーバの構成の一例を表す図。
【符号の説明】
１１０  サーバプロセス、１１１  クライアントプロセス、１２０，１４０  メインスレッド、１２１  処理要求受付スレッド、１３０〜１３２，１５０〜１５２  処理スレッド、１６０，１６１  通信路制御プログラム、１７０〜１７２，７７０〜８８２  通信路、２００  メッセージ、２１０  ヘッダ部、２１１  処理内容、２１２  ヘッダ部データ長、２１３  ボディ部データ長、２１４  戻り値、２２０  ボディ部、５００  処理手順、５１０〜５１６  具体的な処理の手順、７１０  サーバ装置、７１１  クライアント装置、７２０，７４０  処理管理部、７２１  処理要求受付部、７３０，７５０  処理実行部、７６０，７６１  通信制御部、７３１〜７３３，７５１〜７５３  処理部。
【図１】
2005011201.tif 000003
【図２】
2005011201.tif 000004
【図３】
2005011201.tif 000005
【図４】
2005011201.tif 000006
【図５】
2005011201.tif 000007
【図６】
2005011201.tif 000008
【図７】
2005011201.tif 000009