JP2004140803A - 通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体 - Google Patents

通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体 Download PDF

Info

Publication number
JP2004140803A
JP2004140803A JP2003305506A JP2003305506A JP2004140803A JP 2004140803 A JP2004140803 A JP 2004140803A JP 2003305506 A JP2003305506 A JP 2003305506A JP 2003305506 A JP2003305506 A JP 2003305506A JP 2004140803 A JP2004140803 A JP 2004140803A
Authority
JP
Japan
Prior art keywords
request
communication
server
response
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003305506A
Other languages
English (en)
Inventor
Hiroyuki Matsushima
松島 弘幸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2003305506A priority Critical patent/JP2004140803A/ja
Priority to EP03255846.2A priority patent/EP1418732B1/en
Priority to US10/665,745 priority patent/US7620700B2/en
Publication of JP2004140803A publication Critical patent/JP2004140803A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 通信要求とそれに対する通信応答とを送受信する複数の通信装置が互いに動作要求及び受信した動作要求に対する動作応答を送受信する場合において、通信の効率を上げる。
【解決手段】 HTTPクライアント11において、送信メッセージ収集手段45によって、HTTPサーバに送信すべき動作要求とHTTPサーバからの動作要求に対する動作応答とを収集し、HTTPリクエスト送信手段46によってこれらを一括してそのHTTPサーバに送信するようにする。また、HTTPサーバに送信した動作要求に対する動作応答とHTTPサーバからの動作要求とをHTTPレスポンス受信手段47によって一括して受信し、受信メッセージ分配手段48によってこれらを分割して記憶するようにする。そして、HTTPサーバからの動作要求があった場合には、サーバコマンド実行結果生成手段44がその動作要求に係る動作を実行し、実行結果としてその動作要求に対する動作応答を生成する。
【選択図】    図8

Description

 この発明は、通信サーバに対して通信要求を送信し、通信サーバからその通信要求に対する通信応答を受信し、通信サーバに対する動作要求をその通信要求に記載して送信し、通信サーバからその動作要求に対する動作応答を記載した通信応答を受信する通信クライアント、このような通信クライアントの制御方法、コンピュータをこのような通信クライアントとして機能させるためのプログラム、およびこのようなプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
 従来から、通信装置をネットワークを介して接続した通信システムにおいて、通信装置同士で互いにメッセージを交換させることにより、通信相手の装置に対して通知や要求を行わせることが行われている。そして、このようなシステムにおいて、ある装置から別の装置に動作要求としてコマンドを送信して動作を実行させ、送信相手から動作の実行結果を動作応答として返信させることも行われている。
 また、通信システムを構成する通信装置の一部を通信クライアント、他の一部を通信サーバとし、通信クライアントと通信サーバとの間の通信を、常に通信クライアントから通信サーバに通信要求を送信し、通信サーバからその送信元の通信クライアントに対して通信応答を返すというプロトコルで行うようにすることも知られている。
 そこで、通信クライアントから通信サーバへの動作要求を通信要求に記載して送信し、その動作要求に対する動作応答を通信応答に記載して通信サーバから通信クライアントに返信することも行われている。
 また、逆に通信サーバから通信クライアントに動作要求を送信して動作を行わせる技術としては、以下のようなものが知られている。
 例えば、特許文献1には、リモートプロセッサがローカルプロセッサに対して実行されるべきコマンドを指示するメッセージを送信し、そのコマンドに対する応答を受信することが記載されている。
 また、この文献には、ローカルプロセッサがファイアウォールの内側に配置されている場合において、ローカルプロセッサからファイアウォールの外側のリモートプロセッサに通信要求を送信し、リモートプロセッサがこの通信要求に対する応答としてローカルプロセッサに対してコマンドを送信するようにすることにより、ファイアウォールの外側から内側に向けてコマンドを送信できるようにする技術も開示されている。
 この場合において、ローカルプロセッサが通信クライアントに、リモートプロセッサが通信サーバに該当する。
特開2001−273211号公報
 また、このような動作要求に関する技術は、通信装置に接続された装置の動作を遠隔制御するシステムにも適用することができる。特許文献2には、ブラインド及び照明を操作する機能を有する遠隔被操作装置に、ユーザからの操作を受け付ける機能を有する遠隔操作装置からコマンドを送信してブラインド及び照明を操作させる遠隔操作システムにこのような技術を適用した例が記載されている。ただし、この文献には、コマンドに対する応答を送信する点は示されていない。
特開2002−135858号公報
 ところで、複数の通信装置間でメッセージを交換する場合において、コマンドを送信する通信装置は、1つとは限らない。複数の通信装置が互いに相手に対してコマンドを送信するようにすることも可能であり、この場合には、コマンドを受け付けた通信装置に、それぞれコマンドの送信元に対して実行結果を返させるようにすることが求められている。そして、このような動作を行う場合、ある通信装置から通信相手の装置に送信する情報としては、通信相手の装置に対するコマンドと、通信相手の装置から受信したコマンドについての実行結果とが考えられる。
 従来は、これらのコマンドと実行結果とは別々に送信するようにしていた。しかし、このような方式では、コマンドの送信時と受信したコマンドに対する実行結果の送信時とに、それぞれ別々に通信のコネクションを確立する必要がある。従って、通信のオーバーヘッドが大きくなり、効率性の点で問題があった。
 現状では、ネットワークを介した通信をダイヤルアップ接続で行う環境もまだ多く残っており、このような環境においては上記の点が特に問題となる。このような環境では、コネクションの確立に数十秒単位の時間を要することもあり、またコネクションを確立する毎に料金を課金されるので、コネクションを確立する回数が増加するとコストアップにつながるためである。
 この発明は、このような問題を解決し、通信要求とそれに対する通信応答とを送受信する複数の通信装置が互いに動作要求及び受信した動作要求に対する動作応答を送受信する場合において、通信の効率を上げることを目的とする。
 上記の目的を達成するため、この発明の通信クライアントは、通信サーバに対して通信要求を送信し、上記通信サーバからその通信要求に対する通信応答を受信し、上記通信サーバに対する動作要求であるクライアント要求を上記通信要求に記載して上記通信サーバに送信し、その通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントにおいて、上記クライアント要求と上記通信サーバからの動作要求であるサーバ要求に対する動作応答とを上記通信要求に記載して一括して上記通信サーバに送信する送信手段と、その通信要求に対する通信応答として、上記通信サーバに送信したクライアント要求に対する動作応答と上記サーバ要求とを一括して上記通信サーバから受信する受信手段と、上記サーバ要求に係る動作を実行し、実行結果としてそのサーバ要求に対する動作応答を生成する手段とを設けたものである。
 このような通信クライアントにおいて、上記動作要求を関数呼び出しとし、上記動作応答をその関数呼び出しによって呼び出された関数の実行結果とするとよい。
 また、この発明は、通信サーバに対して通信要求を送信し、上記通信サーバからその通信要求に対する通信応答を受信し、上記通信サーバに対する動作要求であるクライアント要求を上記通信要求に記載して上記通信サーバに送信し、その通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントにおいて、上記通信サーバからの動作要求であるサーバ要求とこの要求に対する動作応答とを記憶する第1の記憶手段と、上記クライアント要求とこの要求に対する動作応答とを記憶する第2の記憶手段と、上記クライアント要求を生成して上記第2の記憶手段に記憶させる要求生成手段と、上記第1の記憶手段からサーバ要求を読み出し、そのサーバ要求に係る動作を実行し、その実行結果としてそのサーバ要求に対する動作応答を生成し、その動作応答を読み出したサーバ要求と関連付けて上記第1の記憶手段に記憶させる応答生成手段と、上記サーバ要求に対する動作応答を上記第1の記憶手段から読み出すと共に、上記クライアント要求を上記第2の記憶手段から読み出す収集手段と、上記通信サーバに対して、上記収集手段が読み出した動作応答とクライアント要求とを上記通信要求に記載して一括して送信する送信手段と、その通信要求に対する通信応答として、上記通信サーバに送信したクライアント要求に対する動作応答と上記サーバ要求とを一括して上記通信サーバから受信する受信手段と、その受信手段が受信したサーバ要求を上記第1の記憶手段に記憶させると共に、上記受信手段が受信した、上記通信サーバに送信したクライアント要求に対する動作応答を、上記通信サーバに送信したクライアント要求と関連付けて上記第2の記憶手段に記憶させる分配手段とを設けた通信クライアントも提供する。
 このような通信クライアントにおいて、上記送信手段が上記通信サーバに対して定期的に通信要求を送信するようにするとよい。
 さらに、上記送信手段が、上記通信サーバに送信すべき動作応答と動作要求とを、それぞれSOAPメッセージとして送信するようにし、上記受信手段が、上記通信サーバから受信する動作応答と動作要求とを、それぞれSOAPメッセージとして受信するようにするとよい。
 さらにまた、上記第1の記憶手段に記憶させたサーバ要求及び上記第2の記憶手段に記憶させたクライアント要求に優先順位を付す手段を設け、上記応答生成手段を、上記優先順位の高いサーバ要求から順に読み出し、そのサーバ要求に対する動作応答を生成して上記第1の記憶手段に記憶させる手段とし、上記収集手段を、上記優先順位の高いサーバ要求に対する動作応答から順に上記第1の記憶手段から読み出し、上記優先順位の高いクライアント要求から順に上記第2の記憶手段から読み出す手段とするとよい。
 また、この発明は、通信サーバに対してHTTPリクエストを送信し、上記通信サーバからそのHTTPリクエストに対するHTTPレスポンスを受信し、上記通信サーバに対するSOAPリクエストを上記HTTPリクエストに記載して上記通信サーバに送信し、その通信サーバからそのSOAPリクエストに対するSOAPレスポンスを記載したHTTPレスポンスを受信する通信クライアントにおいて、上記通信サーバに対するSOAPリクエストと上記通信サーバからのSOAPリクエストに対するSOAPレスポンスとを1つのHTTPリクエストに記載して上記通信サーバに送信する送信手段と、そのHTTPリクエストに対するHTTPレスポンスとして、上記通信サーバに送信したSOAPリクエストに対するSOAPレスポンスと上記通信サーバからのSOAPリクエストとを、1つのHTTPレスポンスに記載した状態で上記通信サーバから受信する受信手段と、上記通信サーバから受信したSOAPリクエストに係る動作を実行し、そのSOAPリクエストに対するSOAPレスポンスに記載すべき実行結果を生成する手段とを設けた通信クライアントも提供する。
 このような通信クライアントにおいて、上記SOAPリクエストには関数呼び出しを記載し、上記SOAPレスポンスにはその関数呼び出しによって呼び出された関数の実行結果を記載するようにするとよい。
 また、この発明は、通信サーバに対してHTTPリクエストを送信し、上記通信サーバからそのHTTPリクエストに対するHTTPレスポンスを受信し、上記通信サーバに対するSOAPリクエストを上記HTTPリクエストに記載して上記通信サーバに送信し、その通信サーバからそのSOAPリクエストに対するSOAPレスポンスを記載したHTTPレスポンスを受信する通信クライアントにおいて、上記通信サーバからの動作要求であるサーバ要求とこの要求に対する動作応答とを記憶する第1の記憶手段と、上記通信サーバに対する動作要求であるクライアント要求とこの要求に対する動作応答とを記憶する第2の記憶手段と、上記クライアント要求を生成して上記第2の記憶手段に記憶させる要求生成手段と、上記第1の記憶手段からサーバ要求を読み出し、そのサーバ要求に係る動作を実行し、その実行結果としてそのサーバ要求に対する動作応答を生成し、その動作応答を読み出したサーバ要求と関連付けて上記第1の記憶手段に記憶させる応答生成手段と、上記サーバ要求に対する動作応答を上記第1の記憶手段から読み出すと共に、上記クライアント要求を上記第2の記憶手段から読み出す収集手段と、上記通信サーバに対して、上記収集手段が読み出した動作応答の内容を記載したSOAPレスポンスと上記収集手段が読み出したクライアント要求の内容を記載したSOAPリクエストとを1つのHTTPリクエストに記載して送信する送信手段と、その1つのHTTPリクエストに対するHTTPレスポンスとして、上記通信サーバに送信したSOAPリクエストに対するSOAPレスポンスと上記通信サーバからのSOAPリクエストとを、1つのHTTPレスポンスに記載した状態で上記通信サーバから受信する受信手段と、その受信手段が受信したSOAPリクエストに記載されたサーバ要求の内容を上記第1の記憶手段に記憶させると共に、上記受信手段が受信したSOAPレスポンスに記載された、上記通信サーバに送信したクライアント要求に対する動作応答の内容を、上記通信サーバに送信したクライアント要求と関連付けて上記第2の記憶手段に記憶させる分配手段とを設けた通信クライアントも提供する。
 このような通信クライアントにおいて、上記送信手段が上記通信サーバに対して定期的にHTTPリクエストを送信するようにするとよい。
 さらに、上記第1の記憶手段に記憶させたサーバ要求及び上記第2の記憶手段に記憶させたクライアント要求に優先順位を付す手段を設け、上記応答生成手段を、上記優先順位の高いサーバ要求から順に読み出してそのサーバ要求に対する動作応答を生成し、上記第1の記憶手段に記憶させる手段とし、上記収集手段を、上記優先順位の高いサーバ要求に対する動作応答から順に上記第1の記憶手段から読み出し、上記優先順位の高いクライアント要求から順に上記第2の記憶手段から読み出す手段とするとよい。
 また、この発明の通信クライアントの制御方法は、通信サーバに対して通信要求を送信し、上記通信サーバからその通信要求に対する通信応答を受信し、上記通信サーバに対する動作要求であるクライアント要求を上記通信要求に記載して上記通信サーバに送信し、その通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントの制御方法において、上記クライアント要求と上記通信サーバからの動作要求であるサーバ要求に対する動作応答とを上記通信要求に記載して一括して上記通信サーバに送信する送信手順と、その通信要求に対する通信応答として、上記通信サーバに送信したクライアント要求に対する動作応答と上記サーバ要求とを一括して上記通信サーバから受信する受信手順と、上記サーバ要求に係る動作を実行し、実行結果としてそのサーバ要求に対する動作応答を生成する手順とを上記通信クライアントに実行させるようにしたものである。
 このような通信クライアントの制御方法において、上記動作要求を関数呼び出しとし、上記動作応答をその関数呼び出しによって呼び出された関数の実行結果とするとよい。
 また、この発明は、通信サーバに対して通信要求を送信し、上記通信サーバからその通信要求に対する通信応答を受信し、上記通信サーバに対する動作要求であるクライアント要求を上記通信要求に記載して上記通信サーバに送信し、その通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントの制御方法において、上記通信サーバからの動作要求であるサーバ要求とこの要求に対する動作応答とを記憶する第1の記憶領域を設ける手順と、上記クライアント要求とこの要求に対する動作応答とを記憶する第2の記憶領域を設ける手順と、上記クライアント要求を生成して上記第2の記憶領域に記憶させる要求生成手順と、上記第1の記憶領域からサーバ要求を読み出し、そのサーバ要求に係る動作を実行し、その実行結果としてそのサーバ要求に対する動作応答を生成し、その動作応答を読み出したサーバ要求と関連付けて上記第1の記憶領域に記憶させる応答生成手順と、上記サーバ要求に対する動作応答を上記第1の記憶領域から読み出すと共に、上記クライアント要求を上記第2の記憶領域から読み出す収集手順と、上記通信サーバに対して、上記収集手順で読み出した動作応答とクライアント要求とを上記通信要求に記載して一括して送信する送信手順と、その通信要求に対する通信応答として、上記通信サーバに送信したクライアント要求に対する動作応答と上記サーバ要求とを一括して上記通信サーバから受信する受信手順と、その受信手順で受信したサーバ要求を上記第1の記憶領域に記憶させると共に、上記受信手順で受信した、上記通信サーバに送信したクライアント要求に対する動作応答を、上記通信サーバに送信したクライアント要求と関連付けて上記第2の記憶領域に記憶させる分配手順とを上記通信クライアントに実行させるようにした通信クライアントの制御方法も提供する。
 このような通信クライアントの制御方法において、上記通信クライアントに、上記通信サーバに対して定期的に通信要求を送信させるようにするとよい。
 さらに、上記送信手順において、上記通信サーバに送信すべき動作応答と動作要求とを、それぞれSOAPメッセージとして送信させるようにし、上記受信手段において、上記通信サーバから受信する動作応答と動作要求とを、それぞれSOAPメッセージとして受信させるようにするとよい。
 さらにまた、上記第1の記憶領域に記憶させたサーバ要求及び上記第2の記憶領域に記憶させたクライアント要求に優先順位を付す手順を上記通信クライアントに実行させ、上記応答生成手順に、上記優先順位の高いサーバ要求から順に読み出し、そのサーバ要求に対する動作応答を生成して上記第1の記憶領域に記憶させるようにし、上記収集手順に、上記優先順位の高いサーバ要求に対する動作応答から順に上記第1の記憶領域から読み出し、上記優先順位の高いクライアント要求から順に上記第2の記憶領域から読み出させるようにするとよい。
 また、この発明のプログラムは、コンピュータを、通信サーバに対して通信要求を送信し、上記通信サーバからその通信要求に対する通信応答を受信し、上記通信サーバに対する動作要求であるクライアント要求を上記通信要求に記載して上記通信サーバに送信し、その通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントとして機能させるためのプログラムにおいて、上記コンピュータを、上記クライアント要求と上記通信サーバからの動作要求であるサーバ要求に対する動作応答とを上記通信要求に記載して一括して上記通信サーバに送信する送信手段と、その通信要求に対する通信応答として、上記通信サーバに送信したクライアント要求に対する動作応答と上記サーバ要求とを一括して上記通信サーバから受信する受信手段と、上記サーバ要求に係る動作を実行し、実行結果としてそのサーバ要求に対する動作応答を生成する手段として機能させるためのプログラムを含めたものである。
 このようなプログラムにおいて、上記動作要求を関数呼び出しとし、上記動作応答をその関数呼び出しによって呼び出された関数の実行結果とするとよい。
 また、この発明は、コンピュータを、通信サーバに対して通信要求を送信し、上記通信サーバからその通信要求に対する通信応答を受信し、上記通信サーバに対する動作要求であるクライアント要求を上記通信要求に記載して上記通信サーバに送信し、その通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントとして機能させるためのプログラムにおいて、上記コンピュータを、上記通信サーバからの動作要求であるサーバ要求とこの要求に対する動作応答とを記憶する第1の記憶手段と、上記クライアント要求とこの要求に対する動作応答とを記憶する第2の記憶手段と、上記クライアント要求を生成して上記第2の記憶手段に記憶させる要求生成手段と、上記第1の記憶手段からサーバ要求を読み出し、そのサーバ要求に係る動作を実行し、その実行結果としてそのサーバ要求に対する動作応答を生成し、その動作応答を読み出したサーバ要求と関連付けて上記第1の記憶手段に記憶させる応答生成手段と、上記サーバ要求に対する動作応答を上記第1の記憶手段から読み出すと共に、上記クライアント要求を上記第2の記憶手段から読み出す収集手段と、上記通信サーバに対して、上記収集手段が読み出した動作応答とクライアント要求とを上記通信要求に記載して一括して送信する送信手段と、その通信要求に対する通信応答として、上記通信サーバに送信したクライアント要求に対する動作応答と上記サーバ要求とを一括して上記通信サーバから受信する受信手段と、その受信手段が受信したサーバ要求を上記第1の記憶手段に記憶させると共に、上記受信手段が受信した、上記通信サーバに送信したクライアント要求に対する動作応答を、上記通信サーバに送信したクライアント要求と関連付けて上記第2の記憶手段に記憶させる分配手段として機能させるためのプログラムを含めたプログラムも提供する。
 このようなプログラムにおいて、上記送信手段に、上記通信サーバに対して定期的に通信要求を送信する機能を設けるとよい。
 さらに、上記送信手段の機能を、上記通信サーバに送信すべき動作応答と動作要求とを、それぞれSOAPメッセージとして送信する機能とし、上記受信手段の機能を、上記通信サーバから受信する動作応答と動作要求とを、それぞれSOAPメッセージとして受信する機能とするとよい。
 さらにまた、上記コンピュータを、上記第1の記憶手段に記憶させたサーバ要求及び上記第2の記憶手段に記憶させたクライアント要求に優先順位を付す手段として機能させるためのプログラムをさらに含め、上記応答生成手段の機能を、上記優先順位の高いサーバ要求から順に読み出し、そのサーバ要求に対する動作応答を生成して上記第1の記憶手段に記憶させる機能とし、上記収集手段の機能を、上記優先順位の高いサーバ要求に対する動作応答から順に上記第1の記憶手段から読み出し、上記優先順位の高いクライアント要求から順に上記第2の記憶手段から読み出す機能とするとよい。
 また、この発明の記録媒体は、これらの何れかのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
 以上のようなこの発明の通信クライアントおよび通信クライアントの制御方法によれば、通信要求とそれに対する通信応答とを送受信する複数の通信装置が互いに動作要求及び受信した動作要求に対する動作応答を送受信する通信システムを構成する場合において、通信の効率を上げることができる。また、この発明のプログラムによれば、コンピュータを上記の通信装置として機能させてその特徴を実現し、同様な効果を得ることができる。この発明の記録媒体によれば、上記のプログラムを記憶していないコンピュータにそのプログラムを読み出させて実行させ、上記の効果を得ることができる。
 以下、この発明を実施するための最良の形態について、図面を参照して説明する。
 まず図1に、この発明の通信装置を用いて構成したこの発明の通信システムの構成例を示す。
 この通信システムは、図1に示すように、それぞれこの発明の通信装置である第1の通信装置1と第2の通信装置2とをネットワーク10によって接続して構成している。
 そして、第1の通信装置1及び第2の通信装置2は、通信機能を備えたPC等のコンピュータを始め、通信機能及び情報処理機能を備えた各種電子装置として構成することができる。ネットワーク10としては、インターネットやLAN(ローカルエリアネットワーク)を始め、有線、無線を問わず、ネットワーク通信が可能な各種通信経路を用いることができる。
 また、第1の通信装置1及び第2の通信装置2は、互いの制御管理を行うためのアプリケーションプログラムを実装している。そして、これらの各ノードは、RPC(Remote Procedure Call)により、互いの実装するアプリケーションプログラムのメソッドに対する処理の依頼である「動作要求」を送信し、この依頼された処理の結果である「動作応答」を取得することができるようになっている。即ち、第1の通信装置1は、第2の通信装置2への要求(以下、第1の通信装置側要求という)を生成してこれを第2の通信装置2へ引き渡し、この要求に対する応答を取得できる一方で、第2の通信装置2は、第1の通信装置1への要求(以下、第2の通信装置側要求という)を生成してこれを第1の通信装置1へ引き渡し、この要求に対する応答を取得できるようになっている。
 なお、ここではメソッドを入力と出力の形式を規定した論理的な関数として定義するものとする。そしてこの場合、動作要求はこの関数を呼び出す関数呼び出し(Procedure Call)となり、動作応答はその関数呼び出しによって呼び出された関数の実行結果となる。
 図2に、これらの動作要求と動作応答の関係を示す。
 図2(A)は、第1の通信装置1で第2の通信装置2に対する動作要求が発生したケースである。このケースでは、第1の通信装置1が第1の通信装置側動作要求を生成して第2の通信装置2に送信し、これを受け取った第2の通信装置2がその要求に対する動作応答を返すというモデルになる。
 図2(B)は、第2の通信装置2で第1の通信装置1に対する動作要求が発生したケースである。このケースでは、第2の通信装置2が第2の通信装置側要求を生成して第1の通信装置1に送信し、これを受け取った第1の通信装置1がその要求に対する動作応答を返すというモデルになる。
 なお、ここではRPCによる引数並びに戻り値の受け渡しのプロトコルとしてSOAP(Simple Object Access Protocol)を採用し、上記の動作要求や動作応答は、ここではSOAPメッセージとして記載するようにしている。
 この発明の特徴は、このように複数の通信装置が互いに動作要求及び受信した動作要求に対する動作応答を送受信する場合において、通信相手の装置に送信すべき動作要求とその通信相手の装置から受信した動作要求に対する動作応答とを一括して送信するようにする点である。
 そして、実際に動作要求や動作応答を転送するための通信プロトコルとしては、システムの構成に合わせて適当なものを採用することができ、例えばHTTP(HyperText Transfer Protocol)やSMTP(Simple Mail Transfer Protocol)を採用することができる。ただし、SMTPによって転送される電子メールには通信要求と通信応答のような対応関係がないため、SMTPを採用した装置は、この発明の通信クライアントの実施例には含まれない。
 そこで、まず通信プロトコルにHTTPを採用する場合の実施例について説明し、次にSMTPを採用する場合についても参考例として説明する。
〔HTTPを採用する場合の実施例:図3乃至図21〕
 図3に、HTTPを採用する場合の実施例を適用する通信システムの構成例を示す。
 この通信システムは、図3に示すように、HTTPサーバ12とHTTPクライアント11とをインターネット13によって接続して構成している。ただし、セキュリティを向上させるため、HTTPクライアント11はファイアウォール14を介してインターネット13に接続するようにしている。そして、HTTPサーバ12が通信サーバであって第1の通信装置に該当し、HTTPクライアント11が通信クライアントであって第2の通信装置に該当する。
 なお、HTTPを用いて通信を行う場合、ファイアウォール14の内側にあるノードに対しては、ファイアウォール14の外側からは自由にアクセスできず、そのノードからの通信要求(HTTPリクエスト)に対する通信応答(HTTPレスポンス)という形でしかデータを送信できない。そこで、この通信システムにおいては、ファイアウォール14の内側にあるノードをHTTPクライアント11、外側にあるノードをHTTPサーバ12としているのである。従って、これらの各ノードの機能は、これら相互間の通信以外においては、クライアントあるいはサーバに限定する必要はない。
 また、HTTPサーバ12及びHTTPクライアント11は、図1に示した第1の通信装置1及び第2の通信装置2の場合と同様に、互いの制御管理を行うためのアプリケーションプログラムを実装している。そして、RPC(Remote Procedure Call)により、互いの実装するアプリケーションプログラムのメソッドに対する処理の依頼である「動作要求」を送信し、この依頼された処理の結果である「動作応答」を取得することができるようになっている。
 図4に、これらの動作要求と動作応答の関係を示す。
 図4(A)は、HTTPクライアント11でHTTPサーバ12に対する動作要求が発生したケースである。このケースでは、HTTPクライアント11がクライアント側動作要求(クライアント要求に該当する。以下、「クライアントコマンド」とも呼ぶ)を生成してHTTPサーバ12に送信し、これを受け取ったHTTPサーバ12がそのコマンドに対する動作応答(以下、「コマンド応答」あるいは単に「応答」とも呼ぶ)を返すというモデルになる。
 図4(B)は、HTTPサーバ12でHTTPクライアント11に対する動作要求が発生したケースである。このケースでは、HTTPサーバ12がサーバ側動作要求(サーバ要求に該当する。以下、「サーバコマンド」とも呼ぶ)を生成してHTTPクライアント11に送信し、これを受け取ったHTTPクライアント11がそのコマンドに対する動作応答を返すというモデルになる。
 このように、動作要求及び動作応答は、RPCのレベルではHTTPクライアント11とHTTPサーバ12との間で対称に取り扱われるものである。しかし、通信のレベルでは対称ではない。
 図5にこの通信システムにおける通信シーケンスの例を示す。
 この図に示すように、この通信システムにおいては、通信は常に、HTTPクライアント11から通信要求としてHTTPリクエストをHTTPサーバ12に送信し、HTTPサーバ12からこの通信要求に対する通信応答としてHTTPレスポンスをHTTPクライアント11に返すという手順で行われる。例えばHTTPクライアント11が送信したHTTPリクエストXに対してHTTPサーバ12がHTTPレスポンスXを返し、同じくHTTPリクエストYに対してHTTPレスポンスYを返すという具合である。
 そして、HTTPリクエストには、HTTPクライアント11からHTTPサーバ12に送信する動作要求であるクライアントコマンドと、HTTPサーバ12からHTTPクライアント11に送信されてきたサーバコマンドに対する応答(コマンド応答)とを記載して送信するようにしている。また、HTTPレスポンスには、HTTPサーバ12からHTTPクライアント11に送信する動作要求であるサーバコマンドと、HTTPクライアント11からHTTPサーバ12に送信されてきたクライアントコマンドに対する応答(コマンド応答)とを記載して送信するようにしている。
 従って、例えばクライアントコマンドAは、HTTPリクエストXに記載して転送し、コマンド応答をそのHTTPリクエストXと対応するHTTPレスポンスXに記載して転送することができる。しかし、サーバコマンドCについては、HTTPリクエストXと対応するHTTPレスポンスXに記載して転送し、そのコマンド応答は次のHTTPリクエストであるHTTPリクエストYに記載して転送することになる。
 また、上記図4(A)のケースでは、クライアントコマンドが生成された後直ちにHTTPクライアント11がHTTPサーバ12とコネクションを確立し、HTTPリクエストにこれを含めて引き渡すことができるが、上記図4(B)のケースでは、HTTPクライアント11側に設置されたファイアウォール14がHTTPサーバ12からのHTTPリクエストを遮断するため、HTTPサーバ12側からHTTPクライアント11へアクセスしてサーバコマンドを直ちに引き渡すことができない。
 なお、クライアントコマンド及びサーバコマンドに対する応答をそれぞれ任意の数ずつ(0でもよい)1つのHTTPリクエストに記載することができ、サーバコマンド及びクライアントコマンドに対する応答をそれぞれ任意の数ずつ(0でもよい)1つのHTTPレスポンスに記載することができる。そして、1つのHTTPリクエスト又はHTTPレスポンスに記載した内容は、論理的に一括して転送する。
 そして、このようにすることにより、必要な情報を転送するために必要なコネクションの回数を減らし、オーバーヘッドを低減して通信の効率化を図っている。
 図6にこの通信システムにおける別の通信シーケンスの例を示す。
 説明のため、図5には極めて単純なシーケンス例を示したが、図6には、各HTTPリクエストやHTTPレスポンスに記載するコマンドやコマンド応答の数が一定でない例を示している。
 また、コマンドを受信した場合に、次の送信機会の時点で応答を返す必要もない。例えば、図6に示すクライアントコマンドBのように、コマンドを記載したHTTPリクエストX′に対応するHTTPレスポンスX′に記載して応答を返さず、後のHTTPレスポンスY′に記載して応答を返すようにしてもよい。
 もちろんサーバコマンドについても同様であり、サーバコマンドを記載したHTTPレスポンスの次のHTTPリクエストにそのコマンドに対する応答を記載する必要はない。そして、さらに後のHTTPリクエストに記載して転送すればよい。
 ところで、各コマンド及びコマンド応答は、それぞれ独立して生成され、また処理に供されるべきものであるから、上記のような一括転送を行うためには、転送前にこれらのコマンドやコマンド応答を結合し、また転送後に分離する処理が必要となる。次に、HTTPクライアント11及びHTTPサーバ12のハードウェア構成と共に、このような処理を行うための機能構成及びその処理の手順について説明する。
 図7は、HTTPクライアント11及びHTTPサーバ12のハードウェア構成例を示す図である。
 この図に示すように、HTTPクライアント11及びHTTPサーバ12においてはそれぞれ、CPU31、ROM32、RAM33、SD(Secure Digital)カード34、ネットワークインタフェースカード(NIC)35を備え、これらがシステムバス36で接続されている。
 これら構成要素を更に具体的に説明すると、まずCPU31は、ROM32に格納している制御プログラムによってHTTPクライアント11又はHTTPサーバ12全体を統括的に制御する制御手段である。そして、ROM32は、CPU31が使用する制御プログラムを含む各種固定データを格納している読み出し専用メモリである。
 RAM33は、CPU31がデータ処理を行う際のワークメモリ等として使用する一時記憶用メモリである。SDカード34は、装置の電源がオフになっても記憶内容を保持するようになっている不揮発性メモリである。NIC35は、インターネット13を始めとするネットワークを介して通信相手と情報の送受信を行うための通信手段である。
 図8は、HTTPクライアント11の機能のうち、コマンド及びコマンド応答に関する処理を行うための機能の構成を示す機能ブロック図である。
 図8に示す機能のうち、クライアントコマンドプール41及びサーバコマンドプール42は、いずれかの書き換え可能な記憶手段に設けられるものである。例えばSDカード34に設けることができるが、RAM33や図示しないHDD(ハードディスクドライブ)に設けてもよい。クライアントコマンド生成手段43、サーバコマンド実行結果生成手段44、送信メッセージ収集手段45、受信メッセージ分配手段48の機能は、CPU31によって実現されるものである。また、HTTPリクエスト送信手段46及びHTTPレスポンス受信手段47の機能は、CPU31及びNIC35によって実現されるものである。
 これらの機能についてさらに詳述する。
 まず、クライアントコマンドプール41は、HTTPクライアント11に設けた第2の記憶領域に該当し、クライアントコマンドと、このコマンドに対する応答と、このコマンドの識別情報とを関連付けて登録するプールである。また、サーバコマンドプール42は、HTTPクライアント11に設けた第1の記憶領域に該当し、サーバコマンドと、このコマンドに対する応答と、このコマンドの識別情報とを関連付けて登録するプールである。これらのプールにおいては、コマンド毎にテーブル形式のコマンドシートを作成して情報を格納することにより、コマンドと、識別情報や応答等の情報とを関連付けるようにしている。また、これらのプールを設けた記憶手段がそれぞれHTTPクライアント11の第2,第1の記憶手段に該当するものとする。
 クライアントコマンド生成手段43は、要求生成手段に該当する。そして、クライアントコマンドを生成し、このコマンドを識別する識別情報(ID)を割り当て、さらにこのコマンドを管理するための管理情報を付し、これらの情報を関連付けてテーブル形式のクライアントコマンドシートとしてクライアントコマンドプール41に登録する機能を有する。このうち、クライアントコマンドを生成する部分には、例えばHTTPクライアント11に備えるアプリケーションが該当する。また、クライアントコマンド生成手段43に、HTTPサーバ12に各コマンドを実行させる際の優先順位を、生成したクライアントコマンドに付する機能を設けてもよい。
 ここで、図9にHTTPクライアント11のクライアントコマンドシートにおけるデータ構造の例を示す。
 この図に示すように、HTTPクライアント11においては、クライアントコマンドシートには、「コマンドID」、「メソッド名」、「入力パラメータ」、「状態」、「クライアントコマンド実行結果の通知先」、および「出力パラメータ」のデータを記憶する領域を設けている。そして、このうち「コマンドID」、「メソッド名」、および「入力パラメータ」がクライアントコマンド(及びそこに付されたID)に該当し、「状態」及び「クライアントコマンド実行結果の通知先」が管理情報に該当する。「出力パラメータ」は、HTTPサーバ12から受信するコマンド応答の内容である。
 次に、各項目の内容について説明する。
 まず、「メソッド名」は、HTTPサーバ12に対するリクエストの内容であり、HTTPサーバ12において呼び出す関数の種類を示す。「入力パラメータ」は、「メソッド名」に付随するデータであり、関数を呼び出す際の引数である。「コマンドID」は、クライアントコマンドを識別するための識別情報である。「状態」は、クライアントコマンドに関する処理の進行状況を示すデータであり、処理の進行と共に、「未送信」→「応答待ち」→「応答受信済」と遷移していく。
 「クライアントコマンド実行結果の通知先」は、そのシートに記載しているクライアントコマンドに対する応答を受信した場合に、その旨を通知して必要な処理を実行させるモジュールを示す参照情報である。参照するモジュールは、クライアントコマンドを生成したアプリケーションであることが多いが、必ずしもそうである必要はない。「出力パラメータ」には、コマンド応答を受け取った段階で、その内容を格納する。HTTPサーバ12からのコマンド応答を受け取るまでは空である。
 図8の説明に戻ると、サーバコマンド実行結果生成手段44は、応答生成手段に該当する。そして、サーバコマンドプール42からサーバコマンドを読み出して実行するアプリケーションである。そして、サーバコマンドに対する応答を生成し、サーバコマンドのコマンドIDと関連付けてサーバコマンドプール42に登録する機能を有する。なお、HTTPサーバ12から受信したサーバコマンドは、このコマンドを識別するID及びこのコマンドを管理するための管理情報と関連付けて、テーブル形式のサーバコマンドシートとしてサーバコマンドプール42に登録しておくようにしている。そして、サーバコマンド実行結果生成手段44が生成したコマンド応答も、実行したサーバコマンドについてのサーバコマンドシートに登録する。
 また、サーバコマンド実行結果生成手段44に、サーバコマンドプール42から複数の種類のサーバコマンドを読み出し、各サーバコマンドに対する応答を生成する機能を設けることが考えられる。さらに、サーバコマンドがHTTPクライアント11に優先して処理を実行させるための実行優先順位の情報を含む場合には、優先順位の高いものから優先的に読み出して実行する機能を設けることも考えられる。
 なお、サーバコマンド実行結果生成手段44は、アプリケーションそのものではなく、サーバコマンドの実行に必要なアプリケーションを呼び出してコマンドを実行させるモジュールであってもよい。
 ここで、図10にHTTPクライアント11のサーバコマンドシートにおけるデータ構造の例を示す。
 この図に示すように、HTTPクライアント11においては、サーバコマンドシートには、「コマンドID」、「メソッド名」、「入力パラメータ」、「状態」、「出力パラメータ」、および「サーバコマンドの通知先」のデータを記憶する領域を設けている。そして、このうち「コマンドID」、「メソッド名」、および「入力パラメータ」がサーバコマンド(及びそこに付されたID)に該当し、「状態」及び「サーバコマンドの通知先」が管理情報に該当する。「出力パラメータ」は、サーバコマンドの実行結果であり、HTTPクライアント11が返すコマンド応答の内容となる。
 次に、各データの内容について説明する。
 まず、「メソッド名」は、HTTPクライアント11に対するリクエストの内容であり、HTTPクライアント11において呼び出す関数の種類を示す。「入力パラメータ」は、「メソッド名」に付随するデータであり、関数を呼び出す際の引数である。「コマンドID」は、サーバコマンドを識別するための識別情報である。「状態」は、サーバコマンドに関する処理の状態を示すデータであり、処理の進行と共に、「未処理」→「処理完了」→「応答済」、あるいは「未処理」→「処理中」→「処理完了」→「応答済」と遷移していく。「出力パラメータ」には、サーバコマンド実行結果生成手段44によって生成された応答が格納される。サーバコマンドの実行が終了し、上記の「状態」が「処理完了」となるまでは空である。「サーバコマンドの通知先」は、サーバコマンドの実行を行うモジュールを示す参照情報である。
 再び図8の説明に戻ると、送信メッセージ収集手段45は、収集手段に該当する。そして、サーバコマンド実行結果生成手段44が生成したコマンド応答とこのコマンド応答に対応するサーバコマンドのコマンドIDとを関連付けてサーバコマンドプール42から読み出すと共に、クライアントコマンド生成手段43が生成したクライアントコマンドとこのコマンドのコマンドIDとを関連付けてクライアントコマンドプール41から読み出し、これらから送信メッセージを生成する機能を有する。
 なお、コマンド応答やクライアントコマンドに実行優先順位が指定されている場合には、送信メッセージ収集手段45がそれぞれ実行優先順位の高いものから順に読み出すようにすることが考えられる。
 ここで、送信メッセージとは、上記のコマンド応答やコマンドとコマンドIDとを、構造化言語であるXML(Extensible Markup Language)で、SOAPメッセージとして記載したものである。そして、送信メッセージ収集手段45は、1つのコマンド応答あるいはコマンドにつき、送信メッセージとして1つのSOAPメッセージを生成する。またこのとき、各コマンドのコマンドIDはSOAPヘッダに記載し、コマンド応答及びクライアントコマンドの内容はSOAPボディに記載する。SOAPによる通信では、SOAPヘッダとSOAPボディとからなるSOAPエンベロープ(封筒)と呼ばれるメッセージをXMLで記載し、HTTPなどのプロトコルで交換することになる。
 このようなコマンドやコマンド応答からのSOAPメッセージの生成は、WSDL(Web Service Description Language)に基づいて生成される所要の変換プログラム(シリアライザ)を実行し、データを直列化することによって行うことができる。
 そして、HTTPリクエスト送信手段46は、送信手段に該当し、送信メッセージ収集手段45が生成した送信メッセージを含むHTTPリクエストを生成し、HTTPサーバ12に送信する機能を有する。このとき、1つのHTTPリクエストに送信メッセージをいくつ含めてもよいし、コマンド応答に係る送信メッセージとクライアントコマンドに係る送信メッセージとを任意に混在させることもできる。
 そこで、HTTPリクエスト送信手段46は、これらのいずれに係る送信メッセージかに関わり無く、送信メッセージ収集手段45が生成した全ての送信メッセージを1つのHTTPリクエストに含めて送信するようにしている。ただし、1つのHTTPリクエストに含める送信メッセージの数に上限を設けることも考えられる。
 ところで、このHTTPリクエストの送信は、送信メッセージ収集手段45がクライアントコマンドやコマンド応答等の読み出しを試みた場合には、読み出すデータがなく、結果的に送信すべきSOAPメッセージを生成しなかった場合にも行うものである。そして、この読み出しの試みは、定期的に行うものとする。例えば、タイマによって60分毎に読み出すことが考えられる。
 このようにするのは、上述のように、HTTPサーバ12からHTTPクライアント11に送信したい情報があったとしてもHTTPクライアント11から通信を要求しない限り送信できないためである。HTTPクライアント11から何も送信するデータがなかったとしても、定期的にHTTPサーバ12に対して通信要求を送信して、HTTPサーバ12からHTTPクライアント11に情報を送信する機会を与えることにより、転送の必要な情報が長期間に亘ってHTTPサーバ12に滞留してしまうことを防止できる。
 なお、送信メッセージ収集手段45による読み出しと、それに続くHTTPリクエスト送信手段46によるHTTPリクエストの送信とを、定期的なタイミング以外に適宜行ってよいことはもちろんである。例えば、緊急に送信が必要な情報がいずれかのプールに登録された場合に、クライアントコマンド生成手段43あるいはサーバコマンド実行結果生成手段44が送信メッセージ収集手段45にその旨を通知して読み出しを行わせるようにしてもよい。
 次に、HTTPレスポンス受信手段47は、受信手段に該当し、HTTPサーバ12からHTTPレスポンスを受信する機能を有する。そしてここでは、HTTPレスポンスには、サーバコマンド及びそのコマンドと関連付けられたコマンドIDを含む受信メッセージと、クライアントコマンドに対する応答及びそのコマンドと関連付けられたコマンドIDを含む受信メッセージとが、任意に混在して含まれている。
 ここで、受信メッセージとは、上記のコマンドや応答とコマンドIDとをSOAPメッセージとして記載したものである。
 受信メッセージ分配手段48は、分配手段に該当する。そして、HTTPレスポンス受信手段47が受信したHTTPレスポンスに含まれるデータを、クライアントコマンドプール41及びサーバコマンドプール42に振り分けて登録する機能を有する。
 具体的には、サーバコマンド及びそのコマンドと関連付けられたコマンドIDとをサーバコマンドプール42にサーバコマンドシートを設けて登録すると共に、クライアントコマンドに対する応答については、そのコマンドと関連付けられたコマンドIDをクライアントコマンドプール41に記憶しているクライアントコマンドシートのコマンドIDと照合して対応するクライアントコマンドを特定し、そのクライアントコマンドについての「出力パラメータ」として登録する。
 そしてこのとき、HTTPレスポンスを分割してそこに含まれる各受信メッセージを取り出し、そのデータをテーブルへの登録に必要な形式に変換するが、この変換は、WSDLに基づいて生成される所要の変換プログラム(デシリアライザ)を実行することによって行うことができる。
 次に、このような機能を有するHTTPクライアント11がHTTPサーバ12に送信するHTTPリクエストの例を図11に示す。
 このHTTPリクエストは、図11に示すように、ボディ部としてMIME(Multipurpose Internet Mail Extension)に従ったマルチパートのメッセージが記載され、この各パートには、それぞれエンティティヘッダが記載されると共に、詳細な図示は省略しているが、SOAPエンベロープが埋め込まれている。図11の例では、HTTPリクエストのHTTPボディには、「MIME_boundary」で区分された各要素が、独立した第1パート、第2パート、第3パート、第4パートを構成しているが、HTTPボディに含めることのできるパート数は4つに限られない。0個を含め、いくつでもよい。
 HTTPリクエストに埋め込まれて引き渡されるSOAPエンベロープには、クライアントコマンドを記載したものと、サーバコマンドに対する応答を記載したものとがある。
 また、このような機能を有するHTTPクライアント11がHTTPサーバ12から受信するHTTPレスポンスの例を図12に示す。
 図12に示すように、このHTTPレスポンスは、形式としては図11に示したHTTPリクエストとHTTPヘッダ部が異なるのみであり、ボディ部にはHTTPリクエストの場合と同様に、詳細な図示は省略しているが、MIMEに従ったマルチパートのSOAPエンベロープが記載される。SOAPエンベロープの内容については、当然コマンドやコマンド応答の内容に従って異なるものである。
 HTTPレスポンスに埋め込まれて引き渡されるSOAPエンベロープには、サーバコマンドを記載したものと、クライアントコマンドに対する応答を記載したものとがある。
 次に、これらのHTTPリクエスト又はHTTPレスポンスに記載されるパートの具体例を図13乃至図16に示す。
 図13に示すのは、クライアントコマンドを記載したパートの例である。
 この例においては、まず、エンティティヘッダの部分の「X-SOAP-Type」ヘッダに、このパートに記載されているSOAPメッセージがSOAPリクエストであるかSOAPレスポンスであるかを示す情報を記載している。この例では、値の「Request」により、SOAPリクエストであること、すなわちコマンドを記載したSOAPメッセージであることを示している。
 また、「SOAPAction」ヘッダは、SOAPリクエストの内容を示すものであり、この例では、「http://www.…」というURI(Uniform Resource Identifier)によりリクエストの内容を示している。なお、「SOAPAction」ヘッダは、SOAPメッセージがSOAPレスポンスである場合には付加しないため、メッセージの受信側において、このヘッダの有無により、SOAPメッセージがSOAPリクエストであるかSOAPレスポンスであるかを判断することもできる。
 そして、「Envelope」タグの属性として、名前空間の宣言を行っている。そしてここでは、SOAPで標準として定義されている名前空間の他に、「http://www.foo.com/header」及び「http://www.foo.com/server」のURIで特定される名前空間の宣言を行っている。従って、「n」の名前空間接頭辞が付されたXMLタグについては「http://www.foo.com/header」のURIで特定される名前空間に属するタグであることがわかり、「ns」の名前空間接頭辞が付されたXMLタグについては「http://www.foo.com/server」のURIで特定される名前空間に属するタグであることがわかる。
 またSOAPヘッダには、「要求ID」のXMLタグの内容として、このクライアントコマンドのIDである「12345」が記載されている。そして、SOAPボディには、クライアントコマンドシートの「メソッド名」に記憶されていたメソッドを指定する情報として、「異常通知」タグが記載され、その下位のタグ「エラーID」や「説明」の要素として、「入力パラメータ」に記憶されていた引数が記載されている。ここでは異常通知の通知内容が記載されている。
 図14に示すのは、クライアントコマンドに対する応答を記載したパートの例である。
 この例においては、まず、エンティティヘッダの部分の「X-SOAP-Type」ヘッダの値を「Response」と記載することにより、このパートに記載されているSOAPメッセージがSOAPレスポンスであること、すなわちコマンド応答を記載したSOAPメッセージであることを示している。
 また、この例においても、名前空間の宣言は図13に示した例と同様である。そして、SOAPヘッダには、「コマンドID」のXMLタグの内容として、応答を生成したクライアントコマンドのIDである「12345」が記述されている。SOAPボディには、「異常通知」コマンドに対する応答であることを示すための「異常通知Response」タグが設けられ、その下位のタグに、コマンド応答の内容が記載される。ここでは、異常通知を正常に受信した旨の情報が記載されている。そして、この情報がクライアントコマンドシートの「出力パラメータ」の項目に格納される。
 図15に示すのは、サーバコマンドを記載したパートの例である。
 この例においても、図13の場合と同様に、「X-SOAP-Type」ヘッダの値の「Request」により、このパートに記載されているSOAPエンベロープがSOAPリクエストであることを示し、「SOAPAction」ヘッダの情報により、SOAPリクエストの内容を示している。
 また、「Envelope」タグの属性として、名前空間の宣言を行っている点も、図13の場合と同様である。そしてここでは、SOAPで標準として定義されている名前空間の他に、「http://www.foo.com/header」及び「http://www.foo.com/client」のURIで特定される名前空間の宣言を行っている。
 SOAPヘッダには、「要求ID」のXMLタグの内容として、このクライアントコマンドのIDである「98765」が記載されている。そして、SOAPボディには、サーバコマンドシートの「メソッド名」に記憶されるべきメソッドを指定する情報として、「温度センサ値取得」タグが記載され、その下位のタグ「センサID」の要素として、「入力パラメータ」に記憶されるべき引数が記載されている。ここではセンサ値を取得するセンサのIDが記載されている。
 なお、サーバがこのようなコマンドを送信する場合としては、例えば、クライアントからの異常通知を受けて異常の原因を特定しようとする場合等が考えられる。
 図16に示すのは、サーバコマンドに対する応答を記載したパートの例である。
 この例においても、図14の場合と同様に、エンティティヘッダの部分の「X-SOAP-Type」ヘッダの値を「Response」と記載することにより、このパートに記載されているSOAPメッセージがSOAPレスポンスであることを示している。
 また、この例においても、名前空間の宣言は図15に示した例と同様である。そして、SOAPヘッダには、「コマンドID」のXMLタグの内容として、応答を生成したサーバコマンドのIDである「98765」が記述されている。SOAPボディには、「温度センサ値取得」コマンドに対する応答であることを示すための「温度センサ値取得Response」タグが設けられ、その下位のタグに、コマンド応答の内容が記載される。ここでは、値取得を要求されたセンサの示す温度値の情報が記載されている。
 次に、以上説明したような構成及び機能を有するHTTPクライアント11において実行する処理について、図17乃至図21のフローチャートを用いて説明する。これらのフローチャートに示す処理は、HTTPクライアント11のCPU31が所要の制御プログラムを実行することによって行うものである。
 まず、図17にメッセージの収集及び分配処理の基本動作のフローチャートを示す。
 HTTPクライアント11のCPU31は、送信メッセージ収集手段45がクライアントコマンドやコマンド応答等の読み出しを試みるタイミングになると、図17のフローチャートに示す処理を開始する。
 そして、まずクライアントコマンドの収集処理を行う(S11)。この処理は、クライアントコマンドプール41からHTTPサーバ12に送信すべきクライアントコマンドを収集する処理であり、収集したデータからSOAPエンベロープによるパートを生成する処理を含む。
 次に、サーバコマンドに対する応答であるサーバコマンド実行結果の収集処理を行う(S12)。この処理は、サーバコマンドプールからHTTPサーバ12に送信すべきコマンド応答を収集する処理であり、やはり収集したデータからSOAPエンベロープによるパートを生成する処理を含む。
 その後、ステップS11及びS12の処理で生成したパートを1つにマージして、すべてのパートを含むHTTPリクエストを生成し(S13)、そのHTTPリクエストをHTTPサーバ12に送信する(S14)。
 ここまでの処理において、ステップS11及びS12ではCPU31は送信メッセージ収集手段45として機能し、ステップS13及びS14ではHTTPリクエスト送信手段46として機能する。
 次に、HTTPリクエストに対する通信応答としてHTTPサーバ12からHTTPレスポンスを受信する(S15)。そして、受信したHTTPレスポンスのHTTPボディを各パートに分割する(S16)。ここで、各パートへの分割は、「MIME_boundary」で区分された要素に分割することであり、またここで全てのパートに関して分割する。
 そしてその後、分割して得た全てのパートを順に対象として、ステップS17乃至S19の処理を繰り返す。この処理においては、まず対象のパートがサーバコマンドを記載したパートか否か判断する(S17)。そして、サーバコマンドであればサーバコマンド登録処理を行う(S18)。また、サーバコマンドでないときは、クライアントコマンドに対する応答が記載されたパートであるので、応答通知処理を行う(S19)。
 ステップS18又はS19の後は、ステップS17に戻り、次のパートを対象として処理を繰り返す。そして、全てのパートについてこれらの処理を行った時点で、図17のフローチャートに示す処理を終了する。
 ここまでの処理において、ステップS15及びS16ではCPU31はHTTPレスポンス受信手段47として機能し、ステップS17乃至S19では受信メッセージ分配手段48として機能する。
 次に、図17のフローチャートに示した処理について、一部分ずつより詳細に示したフローチャートを用いて説明する。
 図18は、図17のステップS11乃至S14の部分の処理をより詳細に示したフローチャートである。
 この処理においては、HTTPクライアント11のCPU31はまず、クライアントコマンドプール41から、「状態」が「未送信」であるクライアントコマンドシートの「メソッド名」と「入力パラメータ」の内容を、送信すべきクライアントコマンドとして収集し、「コマンドID」の内容もそのコマンドのコマンドIDとして収集する(S21)。「未送信」という「状態」は、コマンドがクライアントコマンド生成手段43によって生成された後、まだHTTPサーバ12に通知されていないことを示すものであるので、これを基準にHTTPサーバ12に送信すべきコマンドを抽出できる。
 その後、ステップS21で収集した全てのクライアントコマンドを順次対象として、ステップS22乃至S24の処理を繰り返す。これらの処理においては、まず対象のクライアントコマンドとそのコマンドIDとを、これらの情報がそれぞれSOAPボディとSOAPヘッダとに含まれるXML文書に変換し(S22)、対象のコマンドに関するパートとなるSOAPエンベロープを生成する(S23)。そして、対象のクライアントコマンドを記載していたクライアントコマンドシートの「状態」を「応答待ち」に変更する(S24)。「応答待ち」という「状態」は、コマンドをHTTPサーバ12に通知済であることを示すものである。
 これらが全て完了した後、CPU31は、サーバコマンドプール42から、「状態」が「処理完了」であるサーバコマンドシートの「出力パラメータ」の内容を、サーバコマンドに対するコマンド応答のうち送信すべきものとして収集し、「コマンドID」の内容も、対応するサーバコマンドのコマンドIDとして収集する(S25)。「処理完了」という「状態」は、サーバコマンドに対応する処理がサーバコマンド実行結果生成手段44によって生成された後、まだHTTPサーバ12に通知されていないことを示すものであるので、これを基準にHTTPサーバ12に送信すべきコマンド応答を抽出できる。
 その後、ステップS25で収集した全てのコマンド応答を順次対象として、ステップS26乃至S28の処理を繰り返す。これらの処理は、まず対象のコマンド応答とその応答と共に収集したコマンドIDとを、これらの情報がそれぞれSOAPボディとSOAPヘッダとに含まれるXML文書に変換し(S26)、対象のコマンド応答に関するパートとなるSOAPエンベロープを生成する(S27)処理である。これらの処理は、対象が異なる点以外はステップS22及びS23の処理と同じものである。そして、次に対象のコマンド応答を記載していたサーバコマンドシートの「状態」を「応答済」に変更する(S28)。「応答済」という「状態」は、コマンド応答をHTTPサーバ12に通知済であることを示すものである。
 そして、ここまでの処理が全て完了した後、CPU31は、ステップS23又はS27で生成した各パートをマージし、図11に示したようなマルチパートのHTTPリクエストを生成してHTTPサーバ12に送信する(S29)。
 なお、ステップS24又はS28で行った「状態」の変更は、実際にこの送信が終了してから行うようにしてもよい。このようにすることにより、通信エラーが発生しても、送信しようとしていたコマンド及びコマンド応答を再度送信の対象とすることができるので、システムの信頼性が向上する。
 以上でHTTPリクエストの送信に関する処理を終了し、図17のステップS15以降に相当する処理に進む。
 図19は、図17のステップS15以下の部分の処理をより詳細に示すフローチャートである。図18のステップS29の次の処理は、この図ではステップS31に該当する。
 この処理においては、HTTPクライアント11のCPU31はまず、送信したHTTPリクエストに対するHTTPレスポンスの受信を待ち、HTTPサーバ12からこれを受信する(S31)。これを受信すると、そのHTTPボディを解析して各パートに分割する(S32)。
 そしてその後、分割して得た各パートを順次対象として、ステップS33乃至ステップS39の処理を繰り返す。
 この部分の処理においては、まず、対象のパートがサーバコマンドであるか否か判断する(S33)。上述したように、HTTPレスポンスには、サーバコマンドと、クライアントコマンドに対する応答とが含まれている可能性があるので、対象のパートがこのいずれであるかを判断するのである。そして、この判断は、対象のパートにSOAPActionヘッダが存在するか否か、あるいはX-SOAP-Typeヘッダの内容によって判断することができる。
 ステップS33でサーバコマンドでなければ、そのパートはクライアントコマンドに対する応答であるので、そのパートのXML文書を解析してクライアントコマンドシートに登録できる形式のデータに変換し(S34)、クライアントコマンドプール41からそのコマンド応答に対応するクライアントコマンドを探索し、そのクライアントコマンドについてのクライアントコマンドシートの「出力パラメータ」の項目にコマンド応答のデータを登録する(S35)。なお、コマンド応答には、「コマンドID」の情報として、クライアントコマンドの送信時に付したものと同じコマンドIDが付してあるものとし、クライアントコマンドの探索は、この情報をキーとして行うことができる。
 データの登録が終わると、データを登録したクライアントコマンドシートの「状態」を「応答受信済」に変更してその旨を示す(S36)。そして、「クライアントコマンド実行結果の通知先」に登録されている通知先に、応答があった旨を通知する(S37)。この通知によって、クライアントコマンドを生成したアプリケーション等は、その生成したコマンドに応答があったことを認識し、応答に応じた処理を行うことができる。
 例えば、異常通知を発するアプリケーションがHTTPサーバ12に異常通知を行う旨のクライアントコマンドを生成した場合、このコマンドがHTTPサーバ12に送信されると、HTTPサーバ12はこれを正しく受け取った旨のコマンド応答を返してくる。そして、HTTPクライアント11側では、このコマンド応答を受信すると、ここに含まれるコマンドIDを基にどのクライアントコマンドに対する応答であるかを探索し、見つかったクライアントコマンドと対応させてそのコマンド応答を登録する。そして、そのコマンドの実行結果通知先として登録されている、異常通知を発するアプリケーションに、応答があった旨を通知するのである。アプリケーションは、この通知を受けた場合にクライアントコマンドシートを参照すれば、生成したコマンドの実行結果を「出力パラメータ」の項目から取得することができる。
 以上のステップS37までの処理が終了すると、次のパートがあればそれを対象としてステップS33からの処理を繰り返す。
 一方、ステップS33でサーバコマンドであれば、そのパートのXML文書を解析してサーバコマンドシートに登録できる形式のデータに変換し(S38)、そのサーバコマンドに対応するサーバコマンドシートを作成して、コマンドIDと共にサーバコマンドプールに登録する(S39)。ここで、サーバコマンドの内容はサーバコマンドシートの「メソッド名」及び「入力パラメータ」の項目に登録し、パートに記載されていたコマンドIDは「コマンドID」の項目に登録する。また、「サーバコマンドの通知先」の項目には、「メソッド名」に記憶させたメソッドを実行させるアプリケーション等への参照情報を、予め用意してあるメソッドとアプリケーション等との対応関係の情報を参照して登録する。「状態」の初期値は「未処理」であり、「出力パラメータ」の初期値はNULLである。
 以上のステップS39までの処理が終了すると、次のパートがあればそれを対象としてステップS33からの処理を繰り返す。
 全てのパートについてステップS33乃至S39の処理が終了すると、図19のフローチャートに示した処理は終了する。
 以上のような処理を行うことにより、HTTPクライアント11が、HTTPサーバ12に送信すべき動作要求とHTTPサーバ12から受信した動作要求に対する動作応答とを一括してHTTPサーバ12に送信することができる。また、HTTPサーバ12からの動作要求とHTTPサーバ12に送信した動作要求に対する動作応答とを一括してHTTPサーバ12から受信して処理することができる。
 なお、ここでは送信すべき全てのパートを全て生成してからマージして送信を行うようにし、また全てのパートを受信してからこれを各パートに分割して処理を行うように説明したが、このようにする必要はない。
 送信については、まず始めにHTTPヘッダを送信し、以後パートを生成するたびにそのパートを順次送信し、全てのパートの送信が完了した時点でその旨のデータを送信するようにしてもよい。このようにしても、これらの課程で送信されるデータが1つのみのHTTPヘッダを持つ論理的に連続した1つのHTTPリクエストであれば、1回のセッションで転送でき、ネゴシエーションの処理は1回で済むので、マージして送信する場合と同様な効果を得ることができる。また、送信すべきデータのバッファに必要なメモリ容量を低減できるので、低コストの通信装置で大きなデータを取り扱うことができる。
 また、受信側でも、各パートに関する処理を、各パートを受信するたびに順次行うようにすることができる。このようにした場合に容量を低減できることは、送信側の場合と同様である。
 次に、サーバコマンドの実行に関する処理について説明する。
 図20は、この処理の一例を示すフローチャートである。
 サーバコマンドの実行に関する処理としては、まず、図20のフローチャートに示す処理を、図19に示したステップS39の処理の後に、すなわちサーバコマンドをサーバコマンドプール42に登録した直後に行うことが考えられる。この処理において、HTTPクライアント11のCPU31は、サーバコマンド実行結果生成手段44として機能する。
 そして、この処理においては、まず登録したサーバコマンドについてのサーバコマンドシートの「サーバコマンドの通知先」の情報に基づいてアプリケーション等を呼び出し、「メソッド名」や「入力パラメータ」のデータを渡してサーバコマンドに関する処理を実行させる(S41)。なお、サーバコマンドに関する処理は、このフローチャートには示していないが、CPU31が別途実行することになる。
 そして、これが完了すると、実行結果をサーバコマンドシートの「出力パラメータ」の項目に登録する(S42)と共に、サーバコマンドシートの「状態」を「処理完了」に変更し、処理が完了したことを示して(S43)、もとの図19の処理に戻る。
 以上の処理を行うことにより、サーバコマンドを実行し、その結果をコマンド応答としてHTTPサーバ12に送信可能な状態にすることができる。
 また、サーバコマンドの実行に関する処理としては、図19に示した処理とは独立に、図21に示す処理を実行することも考えられる。この処理においても、HTTPクライアント11のCPU31は、サーバコマンド実行結果生成手段44として機能する。
 この場合、CPU31は適当なタイミングで図21のフローチャートに示す処理を開始する。
 そして、この処理においては、まずサーバコマンドプールに「状態」が「処理待ち」であるサーバコマンドシートがあるか否か判断し(SX1)、なければこのようなサーバコマンドシートが追加されるまで待機する。そして、このようなサーバコマンドシートを発見した場合、その1つを処理対象とし、そのサーバコマンドシートの「状態」を「処理中」に変更する(SX2)。
 その後、図20の場合と同様なステップS41乃至S43の処理を行って処理対象のサーバコマンドシートに記載されたサーバコマンドを実行し、これが完了するとステップSX1に戻って処理を繰り返す。
 以上の処理は、複数のスレッド(例えば4スレッド)で同時に行うようにしてもよい。処理対象となったサーバコマンドシートの「状態」は、「処理待ち」ではないため、複数のスレッドで同時に処理を行っても、1つのサーバコマンドシートを重複して処理対象としてしまうことはない。
 以上のような処理を行うようにすれば、任意のタイミングでサーバコマンドを実行することができるので、実行に時間のかかるコマンドがあった場合でも、以後の処理が滞ることがない。そして、実行の終了したものから順に、その結果をコマンド応答としてHTTPサーバ12に送信可能な状態にすることができる。
 以上で、HTTPクライアント11において実行する、各コマンド及びコマンド応答の転送に関する処理の説明を終了する。
 次に、HTTPサーバ12側の機能構成について説明する。ハードウェアについては、図7を用いて説明した通り、HTTPクライアント11と同様なものを用いることができる。従って、以下のHTTPサーバ12の説明において、ハードウェアの構成要素を指す場合には、HTTPクライアント11の場合と共通の符号を用いるものとする。
 図22は、HTTPサーバ12の機能のうち、コマンド及びコマンド応答に関する処理を行うための機能の構成を示す機能ブロック図である。
 図22に示す機能のうち、サーバコマンドプール141及びクライアントコマンドプール142は、いずれかの書き換え可能な記憶手段に設けられるものである。例えばSDカード34に設けることができるが、RAM33や図示しないHDD(ハードディスクドライブ)に設けてもよい。サーバコマンド生成手段143、クライアントコマンド実行結果生成手段144、送信メッセージ収集手段145、受信メッセージ分配手段148の機能は、CPU31によって実現されるものである。また、HTTPレスポンス送信手段146及びHTTPリクエスト受信手段147の機能は、CPU31及びNIC35によって実現されるものである。
 これらの機能についてさらに詳述する。
 まず、サーバコマンドプール141は、HTTPサーバ12に設けた第2の記憶領域に該当し、サーバコマンドと、このコマンドに対する応答と、このコマンドの識別情報とを関連付けて登録するプールである。また、クライアントコマンドプール142は、HTTPサーバ12に設けた第1の記憶領域に該当し、クライアントコマンドと、このコマンドに対する応答と、このコマンドの識別情報とを関連付けて登録するプールである。また、これらのプールを設けた記憶手段がそれぞれHTTPサーバ12の第2,第1の記憶手段に該当するものとする。
 サーバコマンド生成手段143は、要求生成手段に該当する。そして、サーバコマンドを生成し、このコマンドを識別する識別情報(ID)を割り当て、さらにこのコマンドを管理するための管理情報を付し、これらの情報を関連付けてテーブル形式のサーバコマンドシートとしてサーバコマンドプール141に登録する機能を有する。このうち、サーバコマンドを生成する部分には、例えばHTTPサーバ12に備えるアプリケーションが該当する。また、サーバコマンド生成手段143に、HTTPクライアント11に各コマンドを実行させる際の優先順位を生成したサーバコマンドに付する機能を設けてもよい。
 ここで、図23にHTTPサーバ12のサーバコマンドシートにおけるデータ構造の例を示す。
 この図に示すように、HTTPサーバ12のサーバコマンドシートには、このサーバコマンドシートに記載するコマンドがサーバコマンドであり、その送信先やコマンド応答の送信元がHTTPクライアント11である点で若干異なるが、図9に示したHTTPクライアント11のクライアントコマンドシートとほぼ同様なデータを記憶する領域を設けている。「サーバコマンド実行結果の通知先」については、このシートに記載しているコマンドがサーバコマンドであることに伴って項目の名称が異なるが、内容は図9の「クライアントコマンド実行結果の通知先」と同様なものである。
 図22の説明に戻ると、クライアントコマンド実行結果生成手段144は、応答生成手段に該当する。そして、クライアントコマンドプール142からクライアントコマンドを読み出して実行するアプリケーションである。そして、クライアントコマンドに対する応答を生成し、クライアントコマンドのコマンドIDと関連付けてクライアントコマンドプール142に登録する機能を有する。なお、HTTPクライアント11から受信したクライアントコマンドは、このコマンドを識別するID及びこのコマンドを管理するための管理情報と関連付けて、テーブル形式のクライアントコマンドシートとしてクライアントコマンドプール142に登録しておくようにしている。そして、クライアントコマンド実行結果生成手段144が生成したコマンド応答も、実行したクライアントコマンドについてのクライアントコマンドシートに登録する。
 また、クライアントコマンド実行結果生成手段144に、クライアントコマンドプール142から複数の種類のクライアントコマンドを読み出し、各クライアントコマンドに対する応答を生成する機能を設けることが考えられる。さらに、クライアントコマンドがHTTPサーバ12に優先して処理を実行させるための実行優先順位の情報を含む場合には、優先順位の高いものから優先的に読み出して実行する機能を設けることも考えられる。
 なお、クライアントコマンド実行結果生成手段144は、アプリケーションそのものではなく、クライアントコマンドの実行に必要なアプリケーションを呼び出してコマンドを実行させるモジュールであってもよい。
 ここで、図24にHTTPサーバ12のクライアントコマンドシートにおけるデータ構造の例を示す。
 この図に示すように、HTTPサーバ12のクライアントコマンドシートには、このクライアントコマンドシートに記載するコマンドがクライアントコマンドであり、その送信元やコマンド応答の送信先がHTTPクライアント11である点で若干異なるが、図10に示したHTTPクライアント11のサーバコマンドシートとほぼ同様なデータを記憶する領域を設けている。「クライアントコマンドの通知先」については、このシートに記載しているコマンドがサーバコマンドであることに伴って項目の名称が異なるが、内容は図10の「サーバコマンドの通知先」と同様なものである。
 再び図22の説明に戻ると、送信メッセージ収集手段145は、収集手段に該当する。そして、クライアントコマンド実行結果生成手段144が生成したコマンド応答とこのコマンド応答に対応するクライアントコマンドのコマンドIDとを関連付けてクライアントコマンドプール42から読み出すと共に、サーバコマンド生成手段143が生成したサーバコマンドとこのコマンドのコマンドIDとを関連付けてサーバコマンドプール141から読み出し、これらから送信メッセージを生成する機能を有する。
 なお、コマンド応答やサーバコマンドに実行優先順位が指定されている場合には、送信メッセージ収集手段145がそれぞれ実行優先順位の高いものから順に読み出すようにすることが考えられる。
 送信メッセージの形式については、HTTPクライアント11の場合と同様である。
 また、HTTPレスポンス送信手段146は、送信手段に該当し、送信メッセージ収集手段145が生成した送信メッセージを含むHTTPレスポンスを、HTTPクライアント11から受信したHTTPリクエストに対する通信応答として生成し、HTTPクライアント11に送信する機能を有する。このとき、1つのHTTPレスポンスに送信メッセージをいくつ含めてもよいし、コマンド応答に係る送信メッセージとサーバコマンドに係る送信メッセージとを任意に混在させることもできる。
 そこで、HTTPレスポンス送信手段146は、これらのいずれに係る送信メッセージかに関わり無く、送信メッセージ収集手段145が生成した全ての送信メッセージを1つのHTTPレスポンスに含めて送信するようにしている。ただし、1つのHTTPレスポンスに含める送信メッセージの数に上限を設けることも考えられる。
 ところで、HTTPレスポンスの送信は、送信メッセージ収集手段145がサーバコマンドやコマンド応答等の読み出しを試みた場合には、読み出すデータがなく、結果的に送信すべきSOAPメッセージを生成しなかった場合にも行うものである。そして、この読み出しの試みは、HTTPクライアント11からのHTTPリクエストを受信した場合に行うものとする。
 このようにするのは、上述のように、HTTPサーバ12からファイアウォール14を越えてHTTPクライアント11にHTTPリクエストを送信することができないためである。
 HTTPリクエスト受信手段147は、受信手段に該当し、HTTPクライアント11からのHTTPリクエストを受信する機能を有する。そしてここでは、HTTPリクエストには、クライアントコマンド及びそのコマンドと関連付けられたコマンドIDを含む受信メッセージと、サーバコマンドに対する応答及びそのコマンドと関連付けられたコマンドIDを含む受信メッセージとが、任意に混在して含まれている。
 ここで、受信メッセージとは、上記のコマンドや応答とコマンドIDとをSOAPメッセージとして記載したものである。
 受信メッセージ分配手段148は、分配手段に該当する。そして、HTTPリクエスト受信手段147が受信したHTTPリクエストに含まれるデータを、サーバコマンドプール141及びクライアントコマンドプール142に振り分けて登録する機能を有する。
 具体的には、クライアントコマンド及びそのコマンドと関連付けられたコマンドIDとをクライアントコマンドプール142にクライアントコマンドシートを設けて登録すると共に、サーバコマンドに対する応答については、そのコマンドと関連付けられたコマンドIDをサーバコマンドプール141に記憶しているサーバコマンドシートのコマンドIDと照合して対応するサーバコマンドを特定し、そのサーバコマンドについての「出力パラメータ」として登録する。
 そしてこのとき、HTTPリクエストを分割してそこに含まれる各受信メッセージを取り出し、そのデータをテーブルへの登録に必要な形式に変換するが、この変換は、WSDLに基づいて生成される所要の変換プログラム(デシリアライザ)を実行することによって行うことができる。
 このような機能を有するHTTPサーバ12が受信するHTTPリクエストは、HTTPクライアント11から送信されてくるものであるので、例えばHTTPクライアント11の機能の説明中で図11を用いて説明したものである。HTTPサーバ12が送信するHTTPレスポンスも、HTTPクライアント11に対して送信し、HTTPクライアント11が受信するものであるので、例えば図12を用いて説明したものである。これらに含まれるパートの内容も、図13乃至図16を用いて説明したようなものとなる。
 次に、以上説明したような構成及び機能を有するHTTPサーバ12において実行する処理について、図25乃至図29のフローチャートを用いて説明する。これらのフローチャートに示す処理は、HTTPサーバ12のCPU31が所要の制御プログラムを実行することによって行うものである。
 まず、図25にメッセージの収集及び分配処理の基本動作のフローチャートを示す。
 HTTPサーバ12のCPU31は、HTTPクライアント11からHTTPリクエストが送信されてくると、図25のフローチャートに示す処理を開始する。
 そして、まずそのHTTPリクエストを受信する(S111)。そして、受信したHTTPリクエストのHTTPボディを各パートに分割する(S112)。ここで、各パートへの分割は、「MIME_boundary」で区分された要素に分割することであり、またここで全てのパートに関して分割する。
 そしてその後、分割して得た全てのパートを順に対象として、ステップS113乃至S115の処理を繰り返す。この処理においては、まず対象のパートがクライアントコマンドを記載したパートか否か判断する(S113)。そして、クライアントコマンドであればクライアントコマンド登録処理を行う(S114)。また、クライアントコマンドでないときは、サーバコマンドに対する応答が記載されたパートであるので、応答通知処理を行う(S115)。
 ステップS114又はS115の後は、ステップS113に戻り、次のパートを対象として処理を繰り返す。そして、全てのパートについてこれらの処理を行った時点で、次のステップS116に進む。
 ここまでの処理において、ステップS111及びS112ではCPU31はHTTPリクエスト受信手段147として機能し、ステップS113乃至S115では受信メッセージ分配手段148として機能する。
 次に、CPU31はサーバコマンドの収集処理を行う(S116)。この処理は、サーバコマンドプール41からHTTPクライアント11に送信すべきサーバコマンドを収集する処理であり、収集したデータからSOAPエンベロープによるパートを生成する処理を含む。
 次に、クライアントコマンドに対する応答であるクライアントコマンド実行結果の収集処理を行う(S117)。この処理は、クライアントコマンドプールからHTTPクライアント11に送信すべきコマンド応答を収集する処理であり、やはり収集したデータからSOAPエンベロープによるパートを生成する処理を含む。
 その後、ステップS116及びS117の処理で生成したパートを1つにマージして、すべてのパートを含むHTTPレスポンスを生成し(S118)、そのHTTPレスポンスを、ステップS111で受信したHTTPリクエストに対する通信応答としてHTTPクライアント11に送信して(S119)処理を終了する。
 ここまでの処理において、ステップS116及びS117ではCPU31は送信メッセージ収集手段145として機能し、ステップS118及びS119ではHTTPレスポンス送信手段146として機能する。
 次に、図25のフローチャートに示した処理について、一部分ずつより詳細に示したフローチャートを用いて説明する。
 図26は、図25のステップS111乃至S115の部分の処理をより詳細に示したフローチャートである。
 この処理においては、HTTPサーバ12のCPU31はまず、HTTPクライアント
から送信されてきたHTTPリクエストを受信する(S121)。そして、これを受信すると、そのHTTPボディを解析して各パートに分割する(S122)。
 そしてその後、分割して得た各パートを順次対象として、ステップS123乃至ステップS129の処理を繰り返す。
 この部分の処理においては、まず、対象のパートがクライアントコマンドであるか否か判断する(S123)。上述したように、HTTPリクエストには、クライアントコマンドと、サーバコマンドに対する応答とが含まれている可能性があるので、対象のパートがこのいずれであるかを判断するのである。そして、この判断は、対象のパートにSOAPActionヘッダが存在するか否か、あるいはX-SOAP-Typeヘッダの内容によって判断することができる。
 ステップS123でクライアントコマンドでなければ、そのパートはサーバコマンドに対する応答のパートであるので、そのパートのXML文書を解析してサーバコマンドシートに登録できる形式のデータに変換し(S124)、サーバコマンドプール141からそのコマンド応答に対応するサーバコマンドを探索し、そのサーバコマンドについてのサーバコマンドシートの「出力パラメータ」の項目にコマンド応答のデータを登録する(S125)。なお、コマンド応答には、「コマンドID」の情報として、サーバコマンドの送信時に付したものと同じコマンドIDが付してあるものとし、サーバコマンドの探索は、この情報をキーとして行うことができる。
 データの登録が終わると、データを登録したサーバコマンドシートの「状態」を「応答受信済」に変更してその旨を示す(S126)。そして、「サーバコマンド実行結果の通知先」に登録されている通知先に、応答があった旨を通知する(S127)。この通知によって、サーバコマンドを生成したアプリケーション等は、その生成したコマンドに応答があったことを認識し、応答に応じた処理を行うことができる。
 例えば、HTTPクライアント11での異常発生に対応するアプリケーションがHTTPクライアント11の温度センサのセンサ値を取得するサーバコマンドを生成した場合、このコマンドがHTTPクライアント11に送信されると、HTTPクライアント11は要求されたセンサ値を含むコマンド応答を返してくる。そして、HTTPサーバ12側では、このコマンド応答を受信すると、ここに含まれるコマンドIDを基にどのサーバコマンドに対する応答であるかを探索し、見つかったサーバコマンドと対応させてそのコマンド応答を登録する。そして、そのコマンドの実行結果通知先として登録されている、異常発生に対応するアプリケーションに、応答があった旨を通知するのである。アプリケーションは、この通知を受けた場合にサーバコマンドシートを参照すれば、生成したコマンドの実行結果を「出力パラメータ」の項目から取得することができる。
 以上のステップS127までの処理が終了すると、次のパートがあればそれを対象としてステップS123からの処理を繰り返す。
 一方、ステップS123でクライアントコマンドであれば、そのパートのXML文書を解析してクライアントコマンドシートに登録できる形式のデータに変換し(S128)、そのクライアントコマンドに対応するクライアントコマンドシートを作成して、コマンドIDと共にクライアントコマンドプールに登録する(S129)。ここで、クライアントコマンドの内容はクライアントコマンドシートの「メソッド名」及び「入力パラメータ」の項目に登録し、パートに記載されていたコマンドIDは「コマンドID」の項目に登録する。また、「クライアントコマンドの通知先」の項目には、「メソッド名」に記憶させたメソッドを実行させるアプリケーション等への参照情報を、予め用意してあるメソッドとアプリケーション等との対応関係の情報を参照して登録する。「状態」の初期値は「未処理」であり、「出力パラメータ」の初期値はNULLである。
 以上のステップS129までの処理が終了すると、次のパートがあればそれを対象としてステップS123からの処理を繰り返す。
 全てのパートについてステップS123乃至S129の処理が終了すると、図26のフローチャートに示した処理は終了する。
 以上でHTTPリクエストの受信に関する処理を終了し、図25のステップS116以降に相当する処理に進む。
 図27は、図25のステップS116以降の部分の処理をより詳細に示すフローチャートである。図26のステップS127又はS129の次の処理は、この図ではステップS131に該当する。
 この処理においては、HTTPサーバ12のCPU31はまず、サーバコマンドプール141から、「状態」が「未送信」であるサーバコマンドシートの「メソッド名」と「入力パラメータ」の内容を、送信すべきサーバコマンドとして収集し、「コマンドID」の内容もそのコマンドのコマンドIDとして収集する(S131)。HTTPサーバ12においては、「未送信」という「状態」は、コマンドがサーバコマンド生成手段143によって生成された後、まだHTTPクライアント11に通知されていないことを示すものであるので、これを基準にHTTPクライアント11に送信すべきコマンドを抽出できる。
 その後、ステップS131で収集した全てのサーバコマンドを順次対象として、ステップS132乃至S134の処理を繰り返す。これらの処理においては、まず対象のサーバコマンドとそのコマンドIDとを、これらの情報がそれぞれSOAPボディとSOAPヘッダとに含まれるXML文書に変換し(S132)、対象のコマンドに関するパートとなるSOAPエンベロープを生成する(S133)。そして、対象のサーバコマンドを記載していたサーバコマンドシートの「状態」を「応答待ち」に変更する(S134)。ここでの「応答待ち」という「状態」は、コマンドをHTTPクライアント11に通知済であることを示すものである。
 これらが全て完了した後、CPU31は、クライアントコマンドプール142から、「状態」が「処理完了」であるクライアントコマンドシートの「出力パラメータ」の内容を、クライアントコマンドに対するコマンド応答のうち送信すべきものとして収集し、「コマンドID」の内容も、対応するクライアントコマンドのコマンドIDとして収集する(S135)。HTTPサーバ12においては、「処理完了」という「状態」は、クライアントコマンドに対応する処理がクライアントコマンド実行結果生成手段144によって生成された後、まだHTTPクライアント11に通知されていないことを示すものであるので、これを基準にHTTPクライアント11に送信すべきコマンド応答を抽出できる。
 その後、ステップS135で収集した全てのコマンド応答を順次対象として、ステップS136乃至S138の処理を繰り返す。これらの処理は、まず対象のコマンド応答とその応答と共に収集したコマンドIDとを、これらの情報がSOAPボディとSOAPヘッダとにそれぞれ含まれるXML文書に変換し(S136)、対象のコマンド応答に関するパートとなるSOAPエンベロープを生成する(S137)処理である。これらの処理は、対象が異なる点以外はステップS132及びS133の処理と同じものである。そして、次に対象のコマンド応答を記載していたクライアントコマンドシートの「状態」を「応答済」に変更する(S138)。「応答済」という「状態」は、ここではコマンド応答をHTTPクライアント11に通知済であることを示すものである。
 そして、ここまでの処理が全て完了した後、CPU31は、ステップS133又はS137で生成した各パートをマージし、図12に示したようなマルチパートのHTTPレスポンスを生成してHTTPクライアント11に送信する。
 なお、ステップS134又はS138で行った「状態」の変更は、実際にこの送信が終了してから行うようにしてもよい。このようにすることにより、通信エラーが発生しても、送信しようとしていたコマンド及びコマンド応答を再度送信の対象とすることができるので、システムの信頼性が向上する。
 なお、ここでは送信すべきパートを全て生成してからマージして送信を行うようにし、また全てのパートを受信してからこれを各パートに分割して処理を行うように説明したが、このようにする必要はない。各パートを生成するたびに順次送信するようにしたり、各パートを受信するたびに順次各パートに関する処理を行うようにしてもよいことは、HTTPクライアント11の場合と同様である。
 次に、クライアントコマンドの実行に関する処理について説明する。
 図28は、この処理の一例を示すフローチャートである。
 クライアントコマンドの実行に関する処理としては、まず、図28のフローチャートに示す処理を、図27に示したステップS129の処理の後に、すなわちクライアントコマンドをクライアントコマンドプール42に登録した直後に行うことが考えられる。この処理において、HTTPサーバ12のCPU31は、クライアントコマンド実行結果生成手段144として機能する。
 そして、この処理においては、まず登録したクライアントコマンドについてのクライアントコマンドシートの「クライアントコマンドの通知先」の情報に基づいてアプリケーション等を呼び出し、「メソッド名」や「入力パラメータ」のデータを渡してクライアントコマンドに関する処理を実行させる(S141)。なお、クライアントコマンドに関する処理は、このフローチャートには示していないが、CPU31が別途実行することになる。
 そして、これが完了すると、実行結果をクライアントコマンドシートの「出力パラメータ」の項目に登録する(S142)と共に、クライアントコマンドシートの「状態」を「処理完了」に変更し、処理が完了したことを示して(S143)、もとの図27の処理に戻る。
 以上の処理を行うことにより、クライアントコマンドを実行し、その結果をコマンド応答としてHTTPクライアント11に送信可能な状態にすることができる。
 また、クライアントコマンドの実行に関する処理としては、図27に示した処理とは独立に、図29に示す処理を実行することも考えられる。この処理においても、HTTPサーバ12のCPU31は、クライアントコマンド実行結果生成手段144として機能する。
 この場合、CPU31は適当なタイミングで図29のフローチャートに示す処理を開始する。
 そして、この処理においては、まずクライアントコマンドプールに「状態」が「処理待ち」であるクライアントコマンドシートがあるか否か判断し(SY1)、なければこのようなクライアントコマンドシートが追加されるまで待機する。そして、このようなクライアントコマンドシートを発見した場合、その1つを処理対象とし、そのクライアントコマンドシートの「状態」を「処理中」に変更する(SY2)。
 その後、図28の場合と同様なステップS141乃至S143の処理を行って処理対象のクライアントコマンドシートに記載されたクライアントコマンドを実行し、これが完了するとステップSY1に戻って処理を繰り返す。
 以上の処理を複数のスレッドで同時に行うようにしてもよいことは、HTTPクライアント11の場合と同様である。
 以上のような処理を行うようにすれば、任意のタイミングでクライアントコマンドを実行することができるので、実行に時間のかかるコマンドがあった場合でも、以後の処理が滞ることがない。そして、実行の終了したものから順に、その結果をコマンド応答としてHTTPクライアント11に送信可能な状態にすることができる。
 以上で、HTTPサーバ12において実行する、各コマンド及びコマンド応答の転送に関する処理の説明を終了する。
 HTTPクライアント11とHTTPサーバ12とに以上説明してきたような各機能を設け、各処理を行わせることにより、送信元から通信相手に送信すべき動作要求と、通信相手から受信した動作要求に対する動作応答とを、一括して通信相手に送信することができるので、動作要求の送信と動作応答の送信とについて別々にネゴシエーションを行って通信のコネクションを確立する必要がなく、通信のオーバーヘッドを低減して通信効率を高めることができる。
 また、動作要求と動作応答とを一括して送信できるのは、これらをそれぞれ直列化したデータに変換し、構造化言語形式で記載した送信メッセージに変換しているためである。このようにしたことにより、フォーマットの異なる動作要求と動作応答とを容易に結合し、論理的に1つの送信内容として送信することができるのである。
 また、このようにしたことにより、受信側でも、通信相手に送信した動作要求に対する動作応答と通信相手からの動作要求とを一括して受信し、その受信した内容を容易に個々のメッセージに分離し、それが動作要求であるか動作応答であるかに応じて適切な処理を行うことができる。
 さらに、通信要求を常に一方の装置から発して通信を行い、その通信相手から通信要求元への動作要求等の送信は、その通信要求に対する応答として行うようにすれば、通信要求を発する側の装置(通信クライアント)がファイアウォールの内側に設けられているような通信システムであっても、ファイアウォールの存在を意識せずに動作要求及び動作応答の送受信を行うことができる。また、通信要求と通信応答とが対応しているため、通信のレベルでのタイミング管理が容易である。
 この場合において、上記の一方の装置から通信相手に定期的に通信要求を送信するようにすれば、ファイアウォールの外側から内側に向けての情報の送信が長時間に亘って停滞してしまう事態を防止できる。
 また、クライアントコマンドプールやサーバコマンドプールを設け、各アプリケーション等が生成した動作要求や動作応答をこれらのプールに蓄積しておくようにすることにより、動作要求や動作応答の生成を、通信相手に対する送信タイミングを考慮せずに行うことができる。従って、アプリケーション等が行う処理を簡略化することができ、設計や開発が容易になる。
 そして、このようにした場合でも、通信相手に送信すべき動作要求や動作応答をプールから読み出す収集手段を設けることにより、通信を行う場合に、送信すべき情報を漏れなく送信することができる。
 また、受信した動作要求や動作応答を各々分離して適切なプールに記憶させる分配手段を設け、受信した情報もプールに蓄積しておくようにすることにより、受信した動作要求に係る動作の実行や、動作応答受信後の処理を、通信相手からの受信タイミングを考慮せずに行うことができる。従って、アプリケーション等が行う処理を簡略化することができ、設計や開発が容易になる。
 また、生成した動作要求にID等の識別情報を付して、動作要求を記憶、送信する際にこの識別情報と関連付けて行うようにし、また動作応答を記憶、送信する際にも対応する動作要求の識別情報と関連付けて行うようにすれば、1つのメッセージ(ここではHTTPメッセージ)に複数の動作要求や動作応答を含める場合でも、その識別情報を媒介に動作要求と動作応答との対応関係を容易に認識することができる。
 さらに、動作要求に優先順位を付して、これが高いものから順に実行したり応答を送信したりするようにすれば、緊急を要する動作を優先的に実行すると共にその応答も優先的に返すことができる。
〔SMTPを採用する場合の参考例:図30乃至図35〕
 次に、通信プロトコルにSMTPを採用する場合の参考例について説明する。この参考例は、上述のHTTPを採用する場合の実施例と共通点が多いので、共通点については説明を省略するか簡単にし、相違点を中心に説明する。
 まず、図30に、SMTPを採用する場合の参考例を適用する通信システムの構成例を示す。
 この通信システムは、図30に示すように、通信装置AとメールサーバA′とを接続したLAN_Aと、通信装置BとメールサーバB′とを接続したLAN_Bとを、それぞれファイアウォールAとファイアウォールBとを介してインターネット13に接続して構成している。また、ファイアウォールを介して外部からアクセス可能な位置に、LAN_A側ではメールサーバAを、LAN_B側ではメールサーバBをそれぞれ設けている。そして、通信装置Aが第1の通信装置に、通信装置Bが第2の通信装置に該当する。
 SMTPを用いて通信を行う場合には、通信装置Aと通信装置Bとの間での情報転送は電子メールによって行う。そして、例えば通信装置Bから通信装置Aに情報を送信する場合、図22に破線で示したように、通信装置Bは通信装置Aを宛先とする電子メールを送信し、これをまずメールサーバB′に送信する。すると、各メールサーバB′,B,Aを順次介して、通信装置Aが直接アクセスするメールサーバA′まで電子メールが転送される。また、図示は省略したが、通常はメールサーバBとメールサーバAとの間に更に別のメールサーバを介して転送を行うことになる。
 そして、一点鎖線で示したように通信装置Aが定期的にメールサーバA′にアクセスすることにより、通信装置A宛の電子メールを受け取ることができ、以上で通信装置Bから通信装置Aへの情報転送が完了する。通信装置Aから通信装置Bへの情報転送は、逆の手順で行うことができ、情報転送に関しては、通信装置Aと通信装置Bとは対称である。ただし、メールサーバA′及びB′を設けることは必須ではなく、通信装置AがメールサーバAと、通信装置BがメールサーバBと直接通信を行うようにしてもよい。また、メール受信用のメールサーバとメール送信用のメールサーバが異なってもよい。
 このような通信システムにおいて、各LANには外部からアクセス可能な位置にメールサーバを設けていることから、ファイアウォールを越えて電子メールを転送することができる。
 なお、この参考例においては、通信装置Aと通信装置Bとが直接ネゴシエーションをした上で通信を行っているわけではないが、相互に情報転送を行うことが可能である。
 また、通信装置A及び通信装置Bも、図1に示した第1の通信装置及び第2の通信装置の場合と同様に、互いの制御管理を行うためのアプリケーションプログラムを実装している。そして、RPCにより、互いの実装するアプリケーションプログラムのメソッドに対する処理の依頼である「動作要求」を送信し、この依頼された処理の結果である「動作応答」を取得することができるようになっている。
 図31に、これらの動作要求と動作応答の関係を示すが、動作要求のレベルでは、通信装置Aと通信装置Bとの関係は、既に説明したHTTPクライアント11とHTTPサーバ12との関係と同様に、対称なものである。しかし、SMTPの場合には、通信のレベルでも通信装置Aと通信装置Bとが対称な関係にあることが、HTTPの場合と異なる。
 図32に、この通信システムにおける通信シーケンスの例を示す。
 上述したように、この通信システムにおいては、通信装置Aと通信装置Bとの間の通信は、電子メールを用いて行う。そして、電子メールには、送信元と宛先は存在し、その宛先から送信元に返信を行うことも可能である。しかし、初めの電子メールと返信とは全く独立したものであり、HTTPの場合のような、通信要求と通信応答のような関係はない。
 従って、どちらの通信装置から先に通信を行ってもよいし、交互に電子メールを送信しなければならないということもないのであるが、ここでは、通信装置Aから通信装置Bにまず電子メールを送信し、交互に計3通の電子メールを送受信する場合の例を示している。
 これらの電子メールには、送信先(宛先)に対する動作要求(コマンド)及び、送信先から受信したコマンドに対する動作応答(コマンド応答、あるいは単に「応答」)を記載して送信するようにしている。これは、通信装置Aと通信装置Bのどちらが送信元であっても同様である。
 従って、例えば通信装置A側コマンドaは、電子メールxに記載して転送し、通信装置Bからのコマンド応答をその後の電子メールyに記載して転送することができる。また、通信装置B側コマンドcは、電子メールyに記載して転送し、通信装置Aからのコマンド応答をその後の電子メールzに記載して転送することができる。
 なお、動作要求及び動作応答に対する応答をそれぞれ任意の数ずつ(0でもよい)1通の電子メールに記載することができる。そして、1通の電子メールに記載した内容は、1つのメッセージであり、当然論理的に一括して転送する。そして、このようにすることにより、必要な情報を転送するための電子メールの数を減らし、オーバーヘッドを低減して通信の効率化を図っている。
 また、コマンドを受信した後最初に送信する電子メールにコマンド応答を記載しなくてもよいことは、図6を用いて説明したHTTPの場合と同様である。
 次に、通信装置A及び通信装置Bにおける、コマンドやコマンド応答を結合し、また分離する処理を行うための機能構成及びその処理の手順について説明する。ハードウェア構成については、HTTPを用いる実施例の説明において図7に示したHTTPクライアント11の場合と同様なものを使用することができる。
 図33は、通信装置Aの機能のうち、コマンド及びコマンド応答に関する処理を行うための機能の構成を示す図8と対応する機能ブロック図である。
 図33に示す機能のうち、通信装置A側コマンドプール51,通信装置B側コマンドプール52,通信装置A側コマンド生成手段53,通信装置B側コマンド実行結果生成手段54は、それぞれ図8に示したクライアントコマンドプール41,サーバコマンドプール42,クライアントコマンド生成手段43,サーバコマンド実行結果生成手段44と対応する機能であり、装置の名称が異なることにより名称を変更したものである。
 また、送信メッセージ収集手段45及び受信メッセージ分配手段48は、図8に示した同名の手段と対応するものである。ただし、送受信するためのデータの形式が、SMTPに対応した形式である点が図8に示した例とは異なる。しかし、コマンドやコマンド応答に対応する、個々のSOAPメッセージについては、図8の場合と同様なものである。
 メール送信手段56及びメール受信手段57については、それぞれ送信手段及び受信手段に該当するが、送受信に使用するプロトコルが異なることに伴って、図8に示したHTTPリクエスト送信手段46及びHTTPレスポンス受信手段47とは異なるものである。
 すなわち、メール送信手段56は、送信メッセージ収集手段45が生成した送信メッセージを含む、通信装置B宛の電子メールを生成し、メールサーバA′に送信する機能を有する。なお、それ以降の電子メールの転送には、通信装置Aは関与しない。また、1つの電子メールに送信メッセージをいくつ含めてもよいし、コマンド応答に係る送信メッセージと通信装置A側コマンドに係る送信メッセージとを任意に混在させることもできる点等は、図8に示した例の場合と同様である。
 メール受信手段57は、定期的にメールサーバA′にアクセスして通信装置A宛ての新着メールの有無を調べ、新着メールがあった場合にこれを受信する機能を有する。そしてここでは、受信する電子メールには、通信装置B側コマンド及びそのコマンドと関連付けられたコマンドIDを含む受信メッセージと、通信装置A側コマンドに対する応答及びそのコマンドと関連付けられたコマンドIDを含む受信メッセージとが、任意に混在して含まれている。
 次に、このような機能を有する通信装置Aが通信装置B宛てに送信する電子メールの例を図34に示す。
 この電子メールは、図11に示したHTTPリクエストの場合と同様に、ボディ部としてMIME(Multipurpose Internet Mail Extension)に従ったマルチパートのメッセージが記載され、この各パートには、それぞれSOAPエンベロープが埋め込まれている。すなわち、ボディの部分はHTTPリクエストの場合と同様なものになっている。
 しかし、ヘッダ部分はHTTPリクエストの場合とは異なり、電子メールの送信元アドレスを示すFrom、宛先アドレスを示すTo、表題を示すSubject等の情報が記載されている。
 通信装置Bから通信装置Aに送信する電子メールについては、ヘッダのうちFromの内容とToの内容を入れ替えたものになる。
 また、これらの電子メールに記載されるSOAPエンベロープの内容は、HTTPリクエストやHTTPレスポンスの場合と同様なものである。ただし、各パートのエンティティヘッダの部分は、データのエンコード方式が異なるためHTTPの場合とは一部が異なる。
 次に、以上説明したような構成及び機能を有する通信装置Aにおいて実行する処理について、図35及び図36のフローチャートを用いて説明する。これらのフローチャートに示す処理は、通信装置AのCPUが所要の制御プログラムを実行することによって行うものである。
 まず、図35にメッセージ送信時の処理の基本動作のフローチャートを示す。
 通信装置AのCPUは、送信メッセージ収集手段45が通信装置A側コマンドやコマンド応答等の読み出しを試みるタイミングになると、図35のフローチャートに示す処理を開始する。
 そして、まず通信装置A側コマンドの収集処理を行う(S51)。この処理は、通信装置A側コマンドプール51から通信装置Bに送信すべき通信装置A側コマンドを収集する処理であり、収集したデータからSOAPエンベロープのパートを生成する処理を含む。
 次に、通信装置B側コマンドに対する応答である通信装置B側コマンド実行結果の収集処理を行う(S52)。この処理は、通信装置B側コマンドプール52から通信装置Bに送信すべきコマンド応答を収集する処理であり、やはり収集したデータからSOAPエンベロープのパートを生成する処理を含む。
 その後、ステップS51及びS52の処理で生成したパートを1つにマージして、すべてのパートを含む電子メールを生成し(S53)、その電子メールを通信装置Bに宛てて送信して(S54)、処理を終了する。
 以上の処理において、ステップS51及びS52ではCPU31は送信メッセージ収集手段45として機能し、ステップS53及びS54ではメール送信手段56として機能する。
 これらの処理は、図17に示したステップS11乃至S14の処理と対応するものであるが、SMTPの場合には、電子メールの送信と受信の間には、通信要求と通信応答のような関係はないため、処理は一旦ここで終了し、電子メールを受信する場合には、別途図36に示す処理を行う。
 図36には、メッセージ受信時の処理の基本動作のフローチャートを示す。
 通信装置AのCPUは、定期的にメールサーバA′にアクセスし、通信装置A宛ての新着の電子メールがあると、図36のフローチャートに示す処理を開始する。
 この処理においては、まず新着の電子メールを受信する(S61)。そして、受信した電子メールのボディ(本文)を、各パートに分割する(S62)。ここで、各パートへの分割は、「MIME_boundary」で区分された要素に分割することであり、またここで全てのパートに関して分解する。
 そしてその後、全てのパートを順に対象としてステップS63乃至S65の処理を繰り返す。この処理においては、まず対象のパートが通信装置B側コマンドを記載したパートか否か判断する(S63)。そして、通信装置B側コマンドであれば通信装置B側コマンド登録処理を行う(S64)。また、通信装置B側コマンドでないときは、通信装置A側コマンドに対する応答が記載されたパートであるので、応答通知処理を行う(S65)。
 ステップS63又はS64の後は、ステップS63に戻り、次のパートを対象として処理を繰り返す。そして、全てのパートについてこれらの処理を行った時点で、図36のフローチャートに示す処理を終了する。
 以上の処理においては、ステップS61ではCPU31はメール受信手段57として機能し、ステップS62乃至S65では受信メッセージ分配手段48として機能する。
 これらの処理は、図17に示したステップS15乃至S19の処理と対応するものである。
 また、通信装置B側コマンドの実行に関する処理については、図20及び図21を用いて説明したサーバコマンドの実行に関する処理と同様なものである。
 以上で、通信装置Aにおいて実行する、各コマンド及びコマンド応答の転送に関する処理の説明を終了する。
 なお、通信装置Bの機能及び通信装置Bにおいて実行する処理については、通信装置A側コマンドと通信装置B側コマンドとの意味合いが逆になる点以外は、通信装置Aの場合と全く同じであるので、説明を省略する。
 以上説明してきたように、この発明は、SMTPのように、情報の送信と返信とが必ずしも対応しないプロトコルを使用して通信を行う場合にも適用できる。そして、この場合にも、送信元から通信相手に送信すべき動作要求と、通信相手から受信した動作要求に対する動作応答とを、一括して通信相手に送信することができるので、動作要求の送信と動作応答の送信とについて別々の単位で転送を行う必要がなく、通信のオーバーヘッドを低減して通信効率を高めることができる。
 また、通信に電子メールを用いれば、ファイアウォールの内側へも容易に情報を転送することができる。
〔実施例の変形例:図37〕
 次に、上述した実施例及び参考例の変形例について説明する。
 まず、上述した実施例及び参考例では、説明を簡単にするために2つの通信装置からなる通信システムを例としてこの発明について説明したが、この発明は、さらに多くの通信装置からなる通信システムやこのような通信システムを構成する通信装置に適用することも当然可能である。
 例えば、HTTPを採用する場合の実施例は、図37に示すような通信システムにも適用することができる。
 この通信システムは、通信機能を備えた通信装置である管理装置102と、同じく通信機能を備えた通信装置である被管理装置100とをインターネット13を含むネットワークを介して接続し、管理装置102によって被管理装置100を管理する遠隔管理システムとして構成している。
 ここで、被管理装置100の具体例としては、プリンタ、スキャナ、複写機、あるいはこれらの機能を兼ね備えたデジタル複合機等の画像処理装置を始めとし、通信機能を備えたネットワーク家電,自動販売機,医療機器,電源装置,空調システム,ガス・水道・電気等の計量システム等や、ネットワークに接続可能なコンピュータ等も含め、通信機能を備える各種電子装置が考えられる。
 また、この遠隔管理システムにおいては、管理装置102と被管理装置100との間の通信を仲介する通信装置である仲介装置101を設けており、管理装置102と被管理装置100とはこの仲介装置101を介して通信を行う。
 そして、仲介装置101及び被管理装置100は、その利用環境に応じて多様な階層構造を成す。例えば、図37に示す設置環境Aでは、管理装置102とHTTPによるコネクションを確立できる仲介装置101aが、被管理装置100a及び100bを従える単純な階層構造になっているが、設置環境Bでは、4台の被管理装置100を設置するため、1台の仲介装置101を設置しただけでは負荷が大きくなる。
 そのため、管理装置102とHTTPによるコネクションを確立できる仲介装置101bが、被管理装置100c及び100dだけでなく、他の仲介装置101cを従え、この仲介装置101cが被管理装置100e及び100fを更に従えるという階層構造を形成している。この場合、被管理装置100e及び100fを遠隔管理するために管理装置102から発せられた情報は、仲介装置101bとその下位のノードである仲介装置101cとを経由して、被管理装置100e又は100fに到達することになる。なお、各設置環境には、セキュリティ面を考慮し、ファイアウォール14を設置している。
 このような遠隔管理システムにおいても、仲介装置101をHTTPクライアント、管理装置102をHTTPサーバとして取り扱うことにより、この発明を適用することができる。
 なお、この場合において、管理装置102から被管理装置100にコマンドを送信しようとする場合、仲介装置101に対して、「被管理装置100にコマンドを送信せよ」というコマンドを送信し、コマンドに応じた動作として被管理装置100に対してコマンドを送信させることが考えられる。また、宛先として被管理装置100のいずれかを指定して仲介装置101に対してコマンドを送信し、仲介装置101に、自己以外が宛先となっているコマンドを、その宛先に対して転送させることも考えられる。
 また、3つ以上のノード間でコマンドやコマンド応答の送受信を行う場合、コマンドの発信元と宛先とを把握できるように、これらの情報もコマンドやコマンド応答のメッセージに含め、またコマンドシートにも記載して管理するようにするとよい。
 また、メールサーバを設ければ、SMTPを採用する場合の参考例も、このような通信システムに適用することができる。
 さらに、この発明には、上記以外の変形を適用することも可能である。例えば、クライアントコマンドプール41及びサーバコマンドプール42に登録するクライアントコマンドシート及びサーバコマンドシートを、XMLドキュメントとして記載するようにしてもよい。「入力パラメータ」をデシリアライズする前のXMLドキュメントとして保存したり、「出力パラメータ」をシリアライズした後のXMLドキュメントとして保存したりしてもよい。
 また、送受信するコマンドやコマンド応答の情報量に制限を設けても構わない。特に、受信するコマンドの情報量を制限するようにすると、受信側がメモリ容量の限られた装置である場合にメモリの使用量を抑えることができる。
 また、上述した実施例及び参考例においては、RPCを実現する上位プロトコルとしてSOAPを採用し、アプリケーションは直接プールを操作してRPCを実現しているが、アプリケーションとプールとの間にCORBA(Common Object Request Broker Architecture)やJAVA(登録商標)RMI(Remote Method Invocation)とのブリッジ(メッセージ変換機能)を備えることによってアプリケーションの開発効率をさらに向上させてもよい。
 すなわち、上述した実施例及び参考例における、HTTPクライアント11とHTTPサーバ12との間等でのコマンド及びこれに対するコマンド応答のやり取りは、XMLで記述されたSOAPメッセージにより行うこととしているが、これに限るものでなく、他の形式で記述されていてもよい。
 また、上述した実施例及び参考例において、SOAP標準のプロトコルだけでなく、SOAPとMIMEマルチパートを組み合わせた独自のプロトコルをもこれに加えて採用することにより、HTTPリクエスト、或いはHTTPレスポンスに含まれるSOAPエンベロープを全く独立したものとして扱うこととするが、SOAPの関連仕様として定義されたSOAPアタッチメントによって、HTTPレスポンスに含まれる第1パートのSOAPエンベロープに、第2パート以降のSOAPエンベロープへのリンクを埋め込んでこれらを関連付けて引き渡す構成にしてもよい。SMTPを用いる電子メールの場合にも同様である。
 更に、SOAP等の上位プロトコルの下位に位置するデータ通信のプロトコルとして、ここでは実施例としてHTTPを採用した例について説明したが、この下位プロトコルについても、FTP(File Transfer Protocol)等の他のプロトコルを採用してもよい。
 さらにまた、通信システムの構成についても、以上説明したものに限られることはない。
 また、この発明によるプログラムは、コンピュータを、他の通信装置を通信相手として通信可能な通信装置である、HTTPクライアント11、HTTPサーバ12、あるいは通信装置A,Bのような装置として機能させるためのプログラムであり、このようなプログラムをコンピュータに実行させることにより、上述したような効果を得ることができる。
 このようなプログラムは、はじめからコンピュータに備えるROMあるいはHDD等の記憶手段に格納しておいてもよいが、記録媒体であるCD−ROMあるいはフレキシブルディスク,SRAM,EEPROM,メモリカード等の不揮発性記録媒体(メモリ)に記録して提供することもできる。そのメモリに記録されたプログラムをコンピュータにインストールしてCPUに実行させるか、CPUにそのメモリからこのプログラムを読み出して実行させることにより、上述した各手順を実行させることができる。
 さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部機器あるいはプログラムを記憶手段に記憶した外部機器からダウンロードして実行させることも可能である。
 以上説明してきたように、この発明の通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体を用いれば、通信要求とそれに対する通信応答とを送受信する複数の通信装置が互いに動作要求及び受信した動作要求に対する動作応答を送受信する通信システムを構成する場合において、通信の効率を上げることができる。
 従って、この発明を、このような通信システム又はこのような通信システムを構成する通信クライアントに適用することにより、通信の負荷が小さい通信システムを構成することができる。
この発明の通信装置を用いて構成したこの発明の通信システムの構成例を示す図である。 図1に示した通信システムにおける動作要求と動作応答の関係を示す図である。 通信プロトコルとしてHTTPを採用する場合の通信システムの構成例を示す図である。 図3に示した通信システムにおける動作要求と動作応答の関係を示す図である。 図3に示した通信システムにおける通信シーケンスの例を示す図である。 その別の例を示す図である。 図3に示したHTTPクライアント及びHTTPサーバのハードウェア構成例を示す図である。 図3に示したHTTPクライアントの機能のうち、コマンド及びコマンド応答に関する処理を行うための機能の構成を示す機能ブロック図である。 図8に示したクライアントコマンドプールに記憶させるクライアントコマンドシートにおけるデータ構造の例を示す図である。 図8に示したサーバコマンドプールに記憶させるサーバコマンドシートにおけるデータ構造の例を示す図である。
図3に示したHTTPクライアントがHTTPサーバに送信するHTTPリクエストの例を示す図である。 図3に示したHTTPクライアントがHTTPサーバから受信するHTTPレスポンスの例を示す図である。 クライアントコマンドを記載したパートの例を示す図である。 クライアントコマンドに対する応答を記載したパートの例を示す図である。 サーバコマンドを記載したパートの例を示す図である。 サーバコマンドに対する応答を記載したパートの例を示す図である。 図3に示したHTTPクライアントにおける、メッセージの収集及び分配処理の基本動作を示すフローチャートである。 図17のステップS11乃至S14の部分の処理をより詳細に示すフローチャートである。 図17のステップS15以降の部分の処理をより詳細に示すフローチャートである。 図3に示したHTTPクライアントにおける、サーバコマンドの実行に関する処理の一例を示すフローチャートである。
その別の例を示すフローチャートである。 図3に示したHTTPサーバの機能のうち、コマンド及びコマンド応答に関する処理を行うための機能の構成を示す機能ブロック図である。 図22に示したサーバコマンドプールに記憶させるサーバコマンドシートにおけるデータ構造の例を示す図である。 図22に示したクライアントコマンドプールに記憶させるクライアントコマンドシートにおけるデータ構造の例を示す図である。 図3に示したHTTPサーバにおける、メッセージの収集及び分配処理の基本動作を示すフローチャートである。 図25のステップS111乃至S115の部分の処理をより詳細に示すフローチャートである。 図25のステップS116以降の部分の処理をより詳細に示すフローチャートである。 図3に示したHTTPサーバにおける、クライアントコマンドの実行に関する処理の一例を示すフローチャートである。 その別の例を示すフローチャートである。 通信プロトコルとしてSMTPを採用する場合の参考例の通信システムの構成例を示す図である。
図30に示した通信システムにおける動作要求と動作応答の関係を示す図である。 図30に示した通信システムにおける通信シーケンスの例を示す図である。 図30に示した通信装置Aの機能のうち、コマンド及びコマンド応答に関する処理を行うための機能の構成を示す、図8と対応する機能ブロック図である。 図30に示した通信装置Aが通信装置B宛てに送信する電子メールの例を示す図である。 図30に示した通信装置Aにおける、メッセージ送信時の処理の基本動作を示すフローチャートである。 同じく、メッセージ受信時の処理の基本動作のフローチャートを示すフローチャートである。 この発明の通信システムの別の構成例を示す図である。
符号の説明
1:第1の通信装置    2:第2の通信装置
10:ネットワーク   11:HTTPクライアント
12:HTTPサーバ   13:インターネット
14:ファイアウォール  31:CPU
32:ROM       33:RAM
34:SDカード     35:NIC
41,142:クライアントコマンドプール
42,141:サーバコマンドプール
43:クライアントコマンド生成手段
44:サーバコマンド実行結果生成手段
45,145:送信メッセージ収集手段
46:HTTPリクエスト送信手段
47:HTTPレスポンス受信手段
48,148:受信メッセージ分配手段
51:通信装置A側コマンドプール
52:通信装置B側コマンドプール
53:通信装置A側コマンド生成手段
54:通信装置B側コマンド実行結果生成手段
56:メール送信手段   57:メール受信手段
100:被管理装置    101:仲介装置
102:管理装置  143:サーバコマンド生成手段
144:クライアントコマンド実行結果生成手段
146:HTTPレスポンス送信手段
147:HTTPリクエスト受信手段

Claims (24)

  1.  通信サーバに対して通信要求を送信し、前記通信サーバからその通信要求に対する通信応答を受信し、前記通信サーバに対する動作要求であるクライアント要求を前記通信要求に記載して前記通信サーバに送信し、該通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントにおいて、
     前記クライアント要求と前記通信サーバからの動作要求であるサーバ要求に対する動作応答とを前記通信要求に記載して一括して前記通信サーバに送信する送信手段と、
     その通信要求に対する通信応答として、前記通信サーバに送信したクライアント要求に対する動作応答と前記サーバ要求とを一括して前記通信サーバから受信する受信手段と、
     前記サーバ要求に係る動作を実行し、実行結果としてそのサーバ要求に対する動作応答を生成する手段とを設けたことを特徴とする通信クライアント。
  2.  請求項1記載の通信クライアントであって、
     前記動作要求は関数呼び出しであり、
     前記動作応答はその関数呼び出しによって呼び出された関数の実行結果であることを特徴とする通信クライアント。
  3.  通信サーバに対して通信要求を送信し、前記通信サーバからその通信要求に対する通信応答を受信し、前記通信サーバに対する動作要求であるクライアント要求を前記通信要求に記載して前記通信サーバに送信し、該通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントにおいて、
     前記通信サーバからの動作要求であるサーバ要求とこの要求に対する動作応答とを記憶する第1の記憶手段と、
     前記クライアント要求とこの要求に対する動作応答とを記憶する第2の記憶手段と、
     前記クライアント要求を生成して前記第2の記憶手段に記憶させる要求生成手段と、
     前記第1の記憶手段からサーバ要求を読み出し、そのサーバ要求に係る動作を実行し、その実行結果としてそのサーバ要求に対する動作応答を生成し、その動作応答を読み出したサーバ要求と関連付けて前記第1の記憶手段に記憶させる応答生成手段と、
     前記サーバ要求に対する動作応答を前記第1の記憶手段から読み出すと共に、前記クライアント要求を前記第2の記憶手段から読み出す収集手段と、
     前記通信サーバに対して、前記収集手段が読み出した動作応答とクライアント要求とを前記通信要求に記載して一括して送信する送信手段と、
     その通信要求に対する通信応答として、前記通信サーバに送信したクライアント要求に対する動作応答と前記サーバ要求とを一括して前記通信サーバから受信する受信手段と、
     該受信手段が受信したサーバ要求を前記第1の記憶手段に記憶させると共に、前記受信手段が受信した、前記通信サーバに送信したクライアント要求に対する動作応答を、前記通信サーバに送信したクライアント要求と関連付けて前記第2の記憶手段に記憶させる分配手段とを設けたことを特徴とする通信クライアント。
  4.  請求項3記載の通信クライアントであって、
     前記送信手段が前記通信サーバに対して定期的に通信要求を送信するようにしたことを特徴とする通信クライアント。
  5.  請求項3又は4記載の通信クライアントであって、
     前記送信手段が、前記通信サーバに送信すべき動作応答と動作要求とを、それぞれSOAPメッセージとして送信するようにし、
     前記受信手段が、前記通信サーバから受信する動作応答と動作要求とを、それぞれSOAPメッセージとして受信するようにしたことを特徴とする通信クライアント。
  6.  請求項3乃至5のいずれか一項記載の通信クライアントであって、
     前記第1の記憶手段に記憶させたサーバ要求及び前記第2の記憶手段に記憶させたクライアント要求に優先順位を付す手段を設け、
     前記応答生成手段を、前記優先順位の高いサーバ要求から順に読み出し、そのサーバ要求に対する動作応答を生成して前記第1の記憶手段に記憶させる手段とし、
     前記収集手段を、前記優先順位の高いサーバ要求に対する動作応答から順に前記第1の記憶手段から読み出し、前記優先順位の高いクライアント要求から順に前記第2の記憶手段から読み出す手段としたことを特徴とする通信クライアント。
  7.  通信サーバに対してHTTPリクエストを送信し、前記通信サーバからそのHTTPリクエストに対するHTTPレスポンスを受信し、前記通信サーバに対するSOAPリクエストを前記HTTPリクエストに記載して前記通信サーバに送信し、該通信サーバからそのSOAPリクエストに対するSOAPレスポンスを記載したHTTPレスポンスを受信する通信クライアントにおいて、
     前記通信サーバに対するSOAPリクエストと前記通信サーバからのSOAPリクエストに対するSOAPレスポンスとを1つのHTTPリクエストに記載して前記通信サーバに送信する送信手段と、
     そのHTTPリクエストに対するHTTPレスポンスとして、前記通信サーバに送信したSOAPリクエストに対するSOAPレスポンスと前記通信サーバからのSOAPリクエストとを、1つのHTTPレスポンスに記載した状態で前記通信サーバから受信する受信手段と、
     前記通信サーバから受信したSOAPリクエストに係る動作を実行し、そのSOAPリクエストに対するSOAPレスポンスに記載すべき実行結果を生成する手段とを設けたことを特徴とする通信クライアント。
  8.  請求項7記載の通信クライアントであって、
     前記SOAPリクエストには関数呼び出しを記載し、
     前記SOAPレスポンスにはその関数呼び出しによって呼び出された関数の実行結果を記載するようにしたことを特徴とする通信クライアント。
  9.  通信サーバに対してHTTPリクエストを送信し、前記通信サーバからそのHTTPリクエストに対するHTTPレスポンスを受信し、前記通信サーバに対するSOAPリクエストを前記HTTPリクエストに記載して前記通信サーバに送信し、該通信サーバからそのSOAPリクエストに対するSOAPレスポンスを記載したHTTPレスポンスを受信する通信クライアントにおいて、
     前記通信サーバからの動作要求であるサーバ要求とこの要求に対する動作応答とを記憶する第1の記憶手段と、
     前記通信サーバに対する動作要求であるクライアント要求とこの要求に対する動作応答とを記憶する第2の記憶手段と、
     前記クライアント要求を生成して前記第2の記憶手段に記憶させる要求生成手段と、
     前記第1の記憶手段からサーバ要求を読み出し、そのサーバ要求に係る動作を実行し、その実行結果としてそのサーバ要求に対する動作応答を生成し、その動作応答を読み出したサーバ要求と関連付けて前記第1の記憶手段に記憶させる応答生成手段と、
     前記サーバ要求に対する動作応答を前記第1の記憶手段から読み出すと共に、前記クライアント要求を前記第2の記憶手段から読み出す収集手段と、
     前記通信サーバに対して、前記収集手段が読み出した動作応答の内容を記載したSOAPレスポンスと前記収集手段が読み出したクライアント要求の内容を記載したSOAPリクエストとを1つのHTTPリクエストに記載して送信する送信手段と、
     その1つのHTTPリクエストに対するHTTPレスポンスとして、前記通信サーバに送信したSOAPリクエストに対するSOAPレスポンスと前記通信サーバからのSOAPリクエストとを、1つのHTTPレスポンスに記載した状態で前記通信サーバから受信する受信手段と、
     該受信手段が受信したSOAPリクエストに記載されたサーバ要求の内容を前記第1の記憶手段に記憶させると共に、前記受信手段が受信したSOAPレスポンスに記載された、前記通信サーバに送信したクライアント要求に対する動作応答の内容を、前記通信サーバに送信したクライアント要求と関連付けて前記第2の記憶手段に記憶させる分配手段とを設けたことを特徴とする通信クライアント。
  10.  請求項9記載の通信クライアントであって、
     前記送信手段が前記通信サーバに対して定期的にHTTPリクエストを送信するようにしたことを特徴とする通信クライアント。
  11.  請求項9又は10記載の通信クライアントであって、
     前記第1の記憶手段に記憶させたサーバ要求及び前記第2の記憶手段に記憶させたクライアント要求に優先順位を付す手段を設け、
     前記応答生成手段を、前記優先順位の高いサーバ要求から順に読み出してそのサーバ要求に対する動作応答を生成し、前記第1の記憶手段に記憶させる手段とし、
     前記収集手段を、前記優先順位の高いサーバ要求に対する動作応答から順に前記第1の記憶手段から読み出し、前記優先順位の高いクライアント要求から順に前記第2の記憶手段から読み出す手段としたことを特徴とする通信クライアント。
  12.  通信サーバに対して通信要求を送信し、前記通信サーバからその通信要求に対する通信応答を受信し、前記通信サーバに対する動作要求であるクライアント要求を前記通信要求に記載して前記通信サーバに送信し、該通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントの制御方法において、
     前記クライアント要求と前記通信サーバからの動作要求であるサーバ要求に対する動作応答とを前記通信要求に記載して一括して前記通信サーバに送信する送信手順と、
     その通信要求に対する通信応答として、前記通信サーバに送信したクライアント要求に対する動作応答と前記サーバ要求とを一括して前記通信サーバから受信する受信手順と、
     前記サーバ要求に係る動作を実行し、実行結果としてそのサーバ要求に対する動作応答を生成する手順とを前記通信クライアントに実行させることを特徴とする通信クライアントの制御方法。
  13.  請求項12記載の通信クライアントの制御方法であって、
     前記動作要求は関数呼び出しであり、
     前記動作応答はその関数呼び出しによって呼び出された関数の実行結果であることを特徴とする通信クライアントの制御方法。
  14.  通信サーバに対して通信要求を送信し、前記通信サーバからその通信要求に対する通信応答を受信し、前記通信サーバに対する動作要求であるクライアント要求を前記通信要求に記載して前記通信サーバに送信し、該通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントの制御方法において、
     前記通信サーバからの動作要求であるサーバ要求とこの要求に対する動作応答とを記憶する第1の記憶領域を設ける手順と、
     前記クライアント要求とこの要求に対する動作応答とを記憶する第2の記憶領域を設ける手順と、
     前記クライアント要求を生成して前記第2の記憶領域に記憶させる要求生成手順と、
     前記第1の記憶領域からサーバ要求を読み出し、そのサーバ要求に係る動作を実行し、その実行結果としてそのサーバ要求に対する動作応答を生成し、その動作応答を読み出したサーバ要求と関連付けて前記第1の記憶領域に記憶させる応答生成手順と、
     前記サーバ要求に対する動作応答を前記第1の記憶領域から読み出すと共に、前記クライアント要求を前記第2の記憶領域から読み出す収集手順と、
     前記通信サーバに対して、前記収集手順で読み出した動作応答とクライアント要求とを前記通信要求に記載して一括して送信する送信手順と、
     その通信要求に対する通信応答として、前記通信サーバに送信したクライアント要求に対する動作応答と前記サーバ要求とを一括して前記通信サーバから受信する受信手順と、
     該受信手順で受信したサーバ要求を前記第1の記憶領域に記憶させると共に、前記受信手順で受信した、前記通信サーバに送信したクライアント要求に対する動作応答を、前記通信サーバに送信したクライアント要求と関連付けて前記第2の記憶領域に記憶させる分配手順とを前記通信クライアントに実行させることを特徴とする通信クライアントの制御方法。
  15.  請求項14記載の通信クライアントの制御方法であって、
     前記通信クライアントに、前記通信サーバに対して定期的に通信要求を送信させるようにしたことを特徴とする通信クライアントの制御方法。
  16.  請求項14又は15記載の通信クライアントの制御方法であって、
     前記送信手順において、前記通信サーバに送信すべき動作応答と動作要求とを、それぞれSOAPメッセージとして送信させるようにし、
     前記受信手段において、前記通信サーバから受信する動作応答と動作要求とを、それぞれSOAPメッセージとして受信させるようにしたことを特徴とする通信クライアントの制御方法。
  17.  請求項14乃至16のいずれか一項記載の通信クライアントの制御方法であって、
     前記第1の記憶領域に記憶させたサーバ要求及び前記第2の記憶領域に記憶させたクライアント要求に優先順位を付す手順を前記通信クライアントに実行させ、
     前記応答生成手順に、前記優先順位の高いサーバ要求から順に読み出し、そのサーバ要求に対する動作応答を生成して前記第1の記憶領域に記憶させるようにし、
     前記収集手順に、前記優先順位の高いサーバ要求に対する動作応答から順に前記第1の記憶領域から読み出し、前記優先順位の高いクライアント要求から順に前記第2の記憶領域から読み出させるようにしたことを特徴とする通信クライアントの制御方法。
  18.  コンピュータを、通信サーバに対して通信要求を送信し、前記通信サーバからその通信要求に対する通信応答を受信し、前記通信サーバに対する動作要求であるクライアント要求を前記通信要求に記載して前記通信サーバに送信し、該通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントとして機能させるためのプログラムにおいて、
     前記コンピュータを、前記クライアント要求と前記通信サーバからの動作要求であるサーバ要求に対する動作応答とを前記通信要求に記載して一括して前記通信サーバに送信する送信手段と、
     その通信要求に対する通信応答として、前記通信サーバに送信したクライアント要求に対する動作応答と前記サーバ要求とを一括して前記通信サーバから受信する受信手段と、
     前記サーバ要求に係る動作を実行し、実行結果としてそのサーバ要求に対する動作応答を生成する手段として機能させるためのプログラムを含むことを特徴とするプログラム。
  19.  請求項18記載のプログラムであって、
     前記動作要求は関数呼び出しであり、
     前記動作応答はその関数呼び出しによって呼び出された関数の実行結果であることを特徴とするプログラム。
  20.  コンピュータを、通信サーバに対して通信要求を送信し、前記通信サーバからその通信要求に対する通信応答を受信し、前記通信サーバに対する動作要求であるクライアント要求を前記通信要求に記載して前記通信サーバに送信し、該通信サーバからそのクライアント要求に対する動作応答を記載した通信応答を受信する通信クライアントとして機能させるためのプログラムにおいて、
     前記コンピュータを、前記通信サーバからの動作要求であるサーバ要求とこの要求に対する動作応答とを記憶する第1の記憶手段と、
     前記クライアント要求とこの要求に対する動作応答とを記憶する第2の記憶手段と、
     前記クライアント要求を生成して前記第2の記憶手段に記憶させる要求生成手段と、
     前記第1の記憶手段からサーバ要求を読み出し、そのサーバ要求に係る動作を実行し、その実行結果としてそのサーバ要求に対する動作応答を生成し、その動作応答を読み出したサーバ要求と関連付けて前記第1の記憶手段に記憶させる応答生成手段と、
     前記サーバ要求に対する動作応答を前記第1の記憶手段から読み出すと共に、前記クライアント要求を前記第2の記憶手段から読み出す収集手段と、
     前記通信サーバに対して、前記収集手段が読み出した動作応答とクライアント要求とを前記通信要求に記載して一括して送信する送信手段と、
     その通信要求に対する通信応答として、前記通信サーバに送信したクライアント要求に対する動作応答と前記サーバ要求とを一括して前記通信サーバから受信する受信手段と、
     該受信手段が受信したサーバ要求を前記第1の記憶手段に記憶させると共に、前記受信手段が受信した、前記通信サーバに送信したクライアント要求に対する動作応答を、前記通信サーバに送信したクライアント要求と関連付けて前記第2の記憶手段に記憶させる分配手段として機能させるためのプログラムを含むことを特徴とするプログラム。
  21.  請求項20記載のプログラムであって、
     前記送信手段に、前記通信サーバに対して定期的に通信要求を送信する機能を設けたことを特徴とするプログラム。
  22.  請求項20又は21記載のプログラムであって、
     前記送信手段の機能を、前記通信サーバに送信すべき動作応答と動作要求とを、それぞれSOAPメッセージとして送信する機能とし、
     前記受信手段の機能を、前記通信サーバから受信する動作応答と動作要求とを、それぞれSOAPメッセージとして受信する機能としたことを特徴とするプログラム。
  23.  請求項20乃至22のいずれか一項記載のプログラムであって、
     前記コンピュータを、前記第1の記憶手段に記憶させたサーバ要求及び前記第2の記憶手段に記憶させたクライアント要求に優先順位を付す手段として機能させるためのプログラムをさらに含め、
     前記応答生成手段の機能を、前記優先順位の高いサーバ要求から順に読み出し、そのサーバ要求に対する動作応答を生成して前記第1の記憶手段に記憶させる機能とし、
     前記収集手段の機能を、前記優先順位の高いサーバ要求に対する動作応答から順に前記第1の記憶手段から読み出し、前記優先順位の高いクライアント要求から順に前記第2の記憶手段から読み出す機能としたことを特徴とするプログラム。
  24.  請求項18乃至23のいずれか一項記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
     
JP2003305506A 2002-09-19 2003-08-28 通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体 Pending JP2004140803A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003305506A JP2004140803A (ja) 2002-09-19 2003-08-28 通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体
EP03255846.2A EP1418732B1 (en) 2002-09-19 2003-09-18 Communication system implementing a plurality of communication apparatuses as communication client and communication server for exchanging operation requests and operation responses
US10/665,745 US7620700B2 (en) 2002-09-19 2003-09-22 Communication system implementing a plurality of communication apparatuses as communication client and communication server for exchanging operation requests and operation responses

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002272978 2002-09-19
JP2002276451 2002-09-24
JP2003305506A JP2004140803A (ja) 2002-09-19 2003-08-28 通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体

Publications (1)

Publication Number Publication Date
JP2004140803A true JP2004140803A (ja) 2004-05-13

Family

ID=32475189

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003305506A Pending JP2004140803A (ja) 2002-09-19 2003-08-28 通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体

Country Status (1)

Country Link
JP (1) JP2004140803A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006330877A (ja) * 2005-05-24 2006-12-07 Ricoh Co Ltd 通信方法及び通信システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006330877A (ja) * 2005-05-24 2006-12-07 Ricoh Co Ltd 通信方法及び通信システム
JP4704105B2 (ja) * 2005-05-24 2011-06-15 株式会社リコー 通信装置、通信システム及び通信方法

Similar Documents

Publication Publication Date Title
US7620700B2 (en) Communication system implementing a plurality of communication apparatuses as communication client and communication server for exchanging operation requests and operation responses
EP1638290B1 (en) System, method and intermediary server for transmitting operational requests and responses between apparatuses
Braun et al. Mobile agents: Basic concepts, mobility models, and the tracy toolkit
US11323508B2 (en) Web service system and method
US7254601B2 (en) Method and apparatus for managing intelligent assets in a distributed environment
EP1638289B1 (en) Transfer device, system and method for mediating communications between first and second communication devices
US20080140760A1 (en) Service-oriented architecture system and methods supporting dynamic service provider versioning
US20080140857A1 (en) Service-oriented architecture and methods for direct invocation of services utilizing a service requestor invocation framework
JP2004334896A (ja) プラグアンドプレイ機能を有するフレームワークおよびその再構成方法
US20080123668A1 (en) Systems for dynamic inter-operability of nodes in service grids
JP4704105B2 (ja) 通信装置、通信システム及び通信方法
US7822864B2 (en) Communication apparatus, program product for adding communication mechanism to communication apparatus for providing improved usability and communication efficiency, and recording medium storing program product
JP2004139586A (ja) 仲介装置、通信システム、仲介装置の制御方法、プログラム及び記録媒体
JP2005322222A (ja) 通信機能付加方法、プログラム、記録媒体及び通信装置
JP4382006B2 (ja) 仲介装置、通信システム、通信方法、プログラム及び記録媒体
JP2008191773A (ja) ネットワーク対応機器及び機能提供方法
JP4030943B2 (ja) 画像処理装置、画像処理システム、画像処理装置の制御方法、プログラム及び記録媒体
US8688858B2 (en) Image processing device, device management system, and image processing method
US20030005106A1 (en) Communication control apparatus and method
JP4160480B2 (ja) 仲介装置、通信システム、仲介装置の制御方法、プログラム及び記録媒体
JP2004139565A (ja) 通信方法
JP4198562B2 (ja) 通信クライアント、通信サーバ、通信システム及び通信方法
JP2005259106A (ja) 仲介装置、分散処理システム、データ転送方法、プログラム及び記録媒体
JP2004140803A (ja) 通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体
JP2004140804A (ja) 通信サーバ、通信サーバの制御方法、プログラム及び記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051019

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070918

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071119

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080318