JP3569114B2 - Request response type infinite data communication method - Google Patents

Request response type infinite data communication method Download PDF

Info

Publication number
JP3569114B2
JP3569114B2 JP20894297A JP20894297A JP3569114B2 JP 3569114 B2 JP3569114 B2 JP 3569114B2 JP 20894297 A JP20894297 A JP 20894297A JP 20894297 A JP20894297 A JP 20894297A JP 3569114 B2 JP3569114 B2 JP 3569114B2
Authority
JP
Japan
Prior art keywords
data
server
client
length data
application
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.)
Expired - Lifetime
Application number
JP20894297A
Other languages
Japanese (ja)
Other versions
JPH1153273A (en
Inventor
義元 豊田
隆成 星合
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP20894297A priority Critical patent/JP3569114B2/en
Publication of JPH1153273A publication Critical patent/JPH1153273A/en
Application granted granted Critical
Publication of JP3569114B2 publication Critical patent/JP3569114B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、分散システムにおけるアプリケーション間の無限長データの通信方法に関する。
【0002】
近年、クライアント/サーバシステム等、多くの分散システム技術が開発されている。三喜、土屋、リー「3層クライアント/サーバ・システム構築技法」(ソフトリサーチセンター, 1996年)によれば、分散されたアプリケーション間の通信方法には、二つに大別して、要求応答型及びピアツーピア型がある。要求応答型は、一方のアプリケーションが要求を起こし、他方がそれに対して応答する。一方、ピアツーピア型は、双方のアプリケーションが相互の等しい権利と条件のもとに単純に情報を交換する。
【0003】
要求応答型を実装した代表的なものに遠隔手続き呼出し(RPC)技術及び共通オブジェクト要求ブローカアーキテクチャ(CORBA)等による分散オブジェクト技術がある。RPCでは、例えば、サーバアプリケーションが手続きを定義し、クライアントがサーバアプリケーションに対して手続きを呼出す時及びサーバがクライアントに対して応答する時に、パラメータを介してクライアントとサーバとの間でデータの授受を行う。同様に、CORBAでも、サーバとしてのオブジェクトがオペレーションの集合であるインタフェースを定義し、クライアントがオブジェクトに対してオペレーションを呼出す時及びオブジェクトからクライアントに応答する時に、パラメータを介してクライアントとサーバとの間でデータの授受を行う。
【0004】
これらの技術の特長の一つとして、プログラミングを行う時にネットワークを意識する必要がなく、クライアントがサーバの手続き又はオペレーションを呼出す方法でデータの通信を行うことができる点が挙げられる。
【0005】
しかし、RPC及びCORBAを含め、従来の要求応答型のアプリケーション間の通信は、授受を行うデータとして有限長のデータのみを対象としており、無限長のデータの授受はできない。即ち、無限長データをクライアントとサーバとの間で授受を行うためには、従来はピアツーピア型の通信しか存在していない。例えば、UNIX環境では、クライアント及びサーバ双方でそれぞれソケットを生成し、両者がそれぞれ自己のソケットにアクセスすることにより、無限長データの授受を行うことが一般的である。
【0006】
ここで「有限長データ」とは、データの通信を開始する時にデータの全体の長さを特定できるデータをいう。一方、「無限長データ」とは、データの通信を開始する時にデータの大きさを特定できないデータをいう。無限長データの例としては、テレビ会議システムの画像音声データがある。このシステムのサービス終了時期は一般には不定であることから、画像音声データの通信開始時点にはデータの全体の長さを指定できない。無限長データの別の例としては、ビデオオンデマンドサービスがある。映画の長さは予め分かっているので有限長データとして扱うことも可能であるが、アプリケーションの実装如何によっては、無限長データと捉えて開発することも可能である。
【0007】
アプリケーション間における無限長データの通信に要求応答型を用いずピアツーピア型を用いることには、以下に挙げるような欠点がある。第一の欠点は、有限長データと無限長データの通信作法が異なるので、一貫したシステム開発が困難なことである。例えば、CORBA等の分散オブジェクト環境では、有限長データの通信に関しては要求応答型なので、コード実装の時点で有限長データを提供し又は処理する主体をオブジェクトとして表すことができる。よって、システムの分析、設計及び実装をオブジェクト指向という一貫した手法で開発することが可能である。一方、無限長データの通信に関しては要求応答型ではないので、実装の時点で無限長データを提供し又は処理する主体をオブジェクトとして表すことができない。よって、システム開発を一貫した手法で行うことができない。このため、一貫性を保つことかできず、システム開発手法の利点が失われることになり、システム開発の効率及び品質が低下することにつながる。
【0008】
第二の欠点は、クライアントとサーバの双方が、コードを実装する時に前述のソケットのようなネットワークインタフェースを意識しなければならないことである。即ち、RPC及びCORBA等の技術を利用できるにも拘らず、無限長データを通信することになると、ネットワークインタフェースを意識したプログラミングを行わざるを得なくなる。これは、アプリケーション開発の負担を増すことになる。特に、動画又は音声のような無限長データに分類できるデータを主に扱うマルチメディアシステムの開発においては、この負担は極めて大きくなる。
【0009】
【発明が解決しようとする課題】
本発明の目的は、アプリケーション間における無限長データの通信に関して、上記の欠点を解決し、有限長データ及び無限長データ双方に関して同一の通信作法を提供し、一貫したシステム開発手法の適用を可能にし、各アプリケーションのコードを実装する時にネットワークのインタフェースを意識することなく、無限長データの通信を可能にすることにある。
【0010】
【課題を解決するための手段】
本発明の要求応答型無限長データ通信方法は、上記の目的を達成するため、アプリケーション間で、分散処理環境上で、一方のアプリケーションが要求を起こし、他方のアプリケーションがそれに応答する要求応答型の分散処理システムにおいて、アプリケーション間で無限長データの通信を行うために、無限長データのためのデータ型としてストリーム型を分散処理環境に定義し、一方のアプリケーションが、他方のアプリケーションが提供するストリーム型を含むパラメータを有するオペレーションを呼び出すとき両アプリケーション側各々で該パラメータに対応するトリーム型の変数を生成し、分散処理環境がアプリケーション間の無限長データの通信を、該変数を通じて連続的に反復する複数回の有限長データの授受として実行することを特徴とする。
【0011】
このような本発明の要求応答型無限長データ通信方法によれば、分散処理環境は、クライアントアプリケーション及びサーバオブジェクト共に、無限長データを通信するためにネットワーク管理インタフェースを使用する必要がなく、また、意識する必要もない。また、無限長データへのアクセス手段をオペレーションのパラメータとして提供しており、無限長データへのアクセスを可能にするための通信開始或いは通信停止等のオペレーションの定義を必要としない。
【0012】
【発明の実施の形態】
次に図面を用いて本発明の実施例を詳細に説明する。図1は分散処理環境とアプリケーションとの全体構成を機能分類したものである。1はクライアントアプリケーションである。これは、無限長データに関するサービスを受けるために、サーバとしてのオブジェクトのオペレーションを呼出す。
【0013】
2はクライアント側データ処理部である。これは、クライアントアプリケーション1からのオペレーションの呼出し要求を受けて、サーバオブジェクト5のオブジェクトリファレンス、オペレーション呼出し要求及びオペレーションのパラメータとしてのデータをデータ通信部3に渡す。また、これは、データ通信部3から受取ったオペレーション呼出し応答及びパラメータとしてのデータをクライアントアプリケーション1に渡す。
【0014】
3はデータ通信部である。これは、クライアント側データ処理部2から受取ったオブジェクトリファレンスからサーバオブジェクト5の位置を割り出し、そのサーバオブジェクト5のサーバ側データ処理部4に、オブジェクトリファレンス、オペレーション呼出し要求及びパラメータとしてのデータを渡す。また、これは、サーバ側データ処理部4から受取ったオペレーション呼出し応答及びそのオペレーションのパラメータとしてのデータをクライアント側データ処理部2に渡す。
【0015】
4はサーバ側データ処理部である。これは、データ通信部3からオブジェクトリファレンス、オペレーション呼出し要求及びパラメータとしてのデータを受取ると、サーバオブジェクト5に、呼出し要求及びパラメータとしてのデータを渡す。また、これは、サーバオブジェクト5からオペレーション呼出し応答及びそのパラメータとしてのデータを受取ると、それらをデータ通信部3に渡す。
【0016】
5はサーバオブジェクトである。これは、無限長データに関するサービスを提供する。また、これは、呼出し要求を受けたオペレーションを実行する。
以上のうち、クライアント側データ処理部2、データ通信部3及びサーバ側データ処理部4が、分散処理環境6として、アプリケーション開発者に対して提供される。
【0017】
クライアントアプリケーション1及びサーバオブジェクト5から見た簡単なシナリオは以下のとおりである。(1) クライアントアプリケーション1は、ネームサービス又はトレーダサービス等を利用して、呼出したいサーバオブジェクト5のオブジェクトリファレンスを得る。(2) クライアントアプリケーション1は、オブジェクトリファレンスを用いて、サーバオブジェクト5のオペレーションを呼出す。(3) サーバオブジェクト5は、呼出されたオペレーションを実行する。(4) サーバオブジェクト5は、クライアントアプリケーション1に呼出されたオペレーションの応答を返す。この(2) 及び(4) のいずれか又は両者の段階で、クライアントアプリケーション1とサーバオブジェクト5との間で無限長データの授受が行われる。
【0018】
図2は分散処理環境の全体構成を示す図である。各コンピュータ10a,10b に分散するアプリケーションは、各コンピュータ上の分散処理環境6を通して、分散を意識しないアプリケーション間通信を可能にしている。この実施例においては、分散処理環境6が無限長データのためのデータ型を定義し、アプリケーションがその型を利用する。
【0019】
以下の説明では、無限長データ型をストリーム型と呼ぶこととする。このストリーム型は、アプリケーションが無限長データを直接処理する場合を想定した抽象データ型である。ストリーム型は、分散処理環境により定義され、アプリケーションに提供される。アプリケーションは、オペレーションの中で無限長データをオペレーション呼出しのパラメータとして扱い、そのパラメータにアクセスすることにより無限長データを処理する。
【0020】
分散処理環境は、ストリーム型として、インタフェース定義言語(IDL)上のデータ型及びプログラミング言語(例えばC++)上のデータ型を提供する。また、ストリーム変数のIDL記述からプログラミング言語へのマッピングも行う(そのマッピングはIDLコンパイラによって行われる)。
【0021】
オペレーション呼出しのパラメータのデータ型としてストリーム型が提供されるので、クライアント側アプリケーション1及びサーバオブジェクト5によるストリーム型の変数の生成は、CORBAの従来のデータ型と同じ方法で行われる。即ち、両者のいずれかがストリーム型の変数の生成の契機を与える。両者から見えるオペレーションの呼出しのパラメータとしての、ストリーム型の変数の実体は、あたかも一つであるように見えるが、実際には変数の実体はクライアント及びサーバ双方に存在することになる。
【0022】
なお、ストリーム型を流れる個々のデータは、整数型及び浮動小数点型等とは異なり、単なるビット列である。従って、それらの型のデータと異なり、通信の前後でマーシャリング及びアンマーシャリングは行わない。
【0023】
次に、ストリーム型における実装方法について説明する。ストリーム型の変数(インスタンス)は、各変数毎に以下の情報を持つ。大きく二分してユーザデータ部と管理部とに分かれる。ユーザデータ部の構成要素としてバッファがある。これは、アプリケーションからのデータの書込みを一旦受けてから、ネットワークインタフェースに書出すまで、及び、ネットワークインタフェースからデータを読込んでから、アプリケーションに読込まれるまでのデータの一時格納である。アプリケーションは、ストリーム型の変数に1回アクセスする度に1バッファ分の有限長データを読み書きし、それを繰り返すことによって無限長データを処理する。
【0024】
以下の説明では、バッファをサイクリックに実装してあることを前提としているが、本発明においては必ずしもサイクリックでなくてもよい。また、管理部の構成要素として、バッファ情報(バッファのサイクル数、1サイクル当たりのデータサイズ、先頭アドレス)、及び、ネットワーク情報(ネットワークプロトコルスタック、サービス品質、自己及び相手のネットワークロケーション情報)がある。バッファ情報は前述のバッファに関する情報、ネットワーク情報はクライアントとサーバとの間の無限長データ用の通信チャネルに関する情報である。
【0025】
なお、アプリケーションとネットワークインタフェースとの間でデータのコピーを防ぐために、ストリーム型の中にバッファを設けない構成とすることも可能である。
【0026】
以下に、クライアントアプリケーション1がサーバオブジェクト5のオペレーションを呼出し、サーバオブジェクト5からクライアントアプリケーション1に無限長データが流れる場合の動作シーケンスを、図3乃至6を用いて説明する。ここでは、UNIX等のオペレーティングシステムが提供するネットワークインタフェースの一つであるソケットを分散処理環境6が使用する場合を想定している。図3は動作シーケンスの例を示す図、図4はクラス「ストリーム」を定義するコード記述例、図5はクライアントコードの記述例、図6はサーバの実装コードの記述例である。
【0027】
先ず、クライアント側アプリケーション1の動作について説明する。クライアント側アプリケーション1は、従来のCORBAの要領でサーバオブジェクト5のリファレンスを得る(図5の(102) )。このリファレンスには、サーバ側のネットワークロケーション情報(IPアドレス及びポート番号)等が含まれている(これはCORBAが規定するIOR(Inter−Operable Object Reference) に準ずるものである)。この段階では、クライアント側アプリケーション1ではストリーム型の変数はまだ生成されていない。
【0028】
次に、クライアント側アプリケーション1は、自ノードの分散処理環境6に対してサーバオブジェクト5へのオペレーション呼出しを行い、ブロック状態に入る(図3の(1) 、図5の(104) )。クライアント側アプリケーション1は、サーバオブジェクト5からのリターン(オペレーション呼出しに伴う処理の終了通知)を待たずに、ブロック状態から解放される(図3の(7) )。ブロック状態から解放されたときに、ストリーム型の変数がクライアント側でも生成されている。クライアント側アプリケーション1は、この変数の属性(変数内のバッファ情報)を得る( 図5の(106),(107) )。
【0029】
クライアント側アプリケーション1は、ストリーム型の変数にアクセスして無限長データを読込む。1回のアクセスで全データの読込みが終了しない場合は繰り返し変数にアクセスする(図3の(10)、図5の(109) 〜(116))。読込みの終了は、クライアント側アプリケーション1がデータの内容を判断して自主的に終了してもよいし(図5の(113),(115))、割込みを受けて中断してもよい。
【0030】
次に、サーバオブジェクト5の動作について説明する。サーバオブジェクト5は、オペレーションの呼出しを受けると(図3の(3) )、ストリーム型の変数を生成する(図3の(4),(8) 、図4の(6) )。変数を生成するときのパラメータにはバッファ情報(サイクル数、1サイクル当たりのデータサイズ)及びサービス品質情報(QoS )が含まれる。
【0031】
変数生成の後、サーバオブジェクト5はストリーム型の変数にアクセスして無限長データを書込む。1回のアクセスで全データの書込みが終了しない場合は繰り返し変数にアクセスする(図3の(9) 、図6の(208) 〜(216))。書込みの終了は、サーバオブジェクト5が書込むべきデータの内容を判断して自主的に終了してもよいし(図6の(212),(214))、割込みを受けて中断してもよい。
【0032】
最後にクライアント側及びサーバ側の分散処理環境6a及び6bの動作を説明する。クライアント側の分散処理環境6aは、クライアント側アプリケーション1からオペレーション呼出しを受けると(図3の(1) )、サーバ側の分散処理環境6bにオペレーション呼出しのメッセージを送る(図3の(2) )。その内容は、サーバオブジェクト5のリファレンス、クライアント側のネットワークロケーション情報(IPアドレス及びポート番号)、オペレーションの種類、パラメータの処理及び値を含む。次いで、サーバ側の分散処理環境6bは、サーバを起動して該当するオブジェクトに対してオペレーションを呼出す(図3の(3) )。ここまでのシーケンスは従来のCORBAのオペレーション呼出しと同一である。
【0033】
次に、サーバオブジェクト5がストリーム型の変数インスタンスを生成すると(図3の(3) )、サーバ側の分散処理環境6bは、無限長データの通信用に新たな通信チャネルを生成する。そのため、新しいソケットを生成し、空いているポート番号を取得して新しいソケットに設定する。続いて、サーバ側の分散処理環境6bは、クライアント側の分散処理環境6aに対して新たなチャネルへの接続要求のメッセージを送る(図3の(5) )。その内容にはサーバ側が新たに生成したソケットの情報(ネットワークアドレス、ポート番号)が含まれる。
【0034】
クライアント側の分散処理環境6aは、サーバ側に新しいソケットを生成する。次に、空いているポート番号をソケットに設定する。そしてサーバ側に完了通知のメッセージを送る(図3の(6) )。更に、クライアントアプリケーション1のブロックを解除する(図3の(7) )。このとき、クライアント側のストリーム型の変数インスタンスも生成されている。サーバ側の分散処理環境6bは、クライアント側から接続完了の通知を受けると、変数の生成に関わる処理を終了する(図3の(8) )。
【0035】
サーバ側の分散処理環境6bは、サーバオブジェクト5からストリーム型の変数(内のバッファ)への書込みを受けると(図3の(9) )、変数内のバッファのデータを無限長データの通信用のソケットに対して書込む。一方、クライアント側の分散処理環境6aは、クライアントアプリケーション1からストリーム型の変数からの読込み要求を受けると(図3の(10))、無限長データの通信用のソケットからデータを読込み、そのデータをクライアントアプリケーション1に渡す。
【0036】
なお、この実施例においては、無限長データ用の通信チャネルのインタフェースとしてソケットを用いたが、勿論他のものでもよい。必要なことは、サーバ側及びクライアント側双方の分散処理環境が互いにネットワークロケーション情報の授受及び接続要求等を行うことである。また、分散処理環境間のやりとり及び処理は、サーバオブジェクト及びクライアントアプリケーションには見えないものであり、サーバはストリーム型の変数を生成する(プログラミング上では、変数宣言する)のみであることに注意すべきである。
【0037】
次に、アプリケーション開発者のコード記述例を説明する。IDL記述は、図4のAに示すとおり、シグネチャ「stream」がストリーム型を意味する。アプリケーション開発者は、このシグネチャを用いてストリーム型のパラメータを宣言する。「out 」とあるのは、従来のデータ型と同じように、サーバ側からクライアント側に無限長データが流れることを示している。
【0038】
C++をプログラミング言語としたコード記述例は、図4のB、図5及び図6に示すとおりである。図4のBはストリーム型のクラス宣言である。これは、IDLコンパイラが、上述のIDL記述を入力とし、ヘッダファイルとしてストリーム型のクラス宣言を出力するものである。(3) 〜(8) は、ストリーム型に対するオペレーションである。そのうち(3),(4) はストリーム型の変数の初期化に用いられる。特に(4) ではバッファサイズ等の情報を同時に設定する。(5),(6) はバッファサイズ等の情報を得るためのオペレーションである。(7) はバッファサイクルのインデックスを指定してそのインデックスのバッファにあるデータを読込むオペレーションである。(8) は(7) とは逆にデータを書込むオペレーションである。
【0039】
図5は、クライアント側アプリケーションの実装コード、図6はサーバのオペレーションの実装コードである。これらのコードについては、上述の動作シーケンスの説明の中で述べたとおりである。なお、図5の(104),(112) は、ストリーム型の変数から読込んだデータの処理に関するものである。また、図6の(204),(210) は、ストリーム型の変数に書込むべきデータの処理に関するものである。
【0040】
上述の実施例の説明においては、無限長データの流れがサーバオブジェクトからクライアントアプリケーションに向かう例について説明したが、逆に、クライアントアプリケーションからサーバオブジェクトに向かう場合も同様にして実現できることは勿論である。
【0041】
以上の実施例の説明から、分散処理環境は、クライアントアプリケーション及びサーバオブジェクト共に、無限長データを通信するためにネットワーク管理インタフェースを使用する必要がなく、また、意識する必要もないことが分かる。従って、アプリケーション開発者にとって無限長データの扱いが簡素化され、アプリケーション開発負担を軽減できる利点を持つ。
【0042】
また、実施例の説明から、無限長データへのアクセス手段をオペレーションのパラメータとして提供しており、無限長データへのアクセスを可能にするための通信開始或いは通信停止等のオペレーションの定義を必要としないことが分かる。従って、この実施例によれば、アプリケーション開発の柔軟性を損なわないという利点を持つ。
【0043】
【発明の効果】
以上説明したとおり、本発明は以下のような効果を奏する。即ち、第1に、有限長データの通信と無限長データの通信とを、要求応答型という同一の通信作法で行うことができるようになった。実現の形態の例としては、RPC又は分散処理環境において、サーバの手続き又はサーバオブジェクトのオペレーションを呼出すという作法で、有限長データの通信及び無限長データの通信双方を実現できる。これは、両種類のデータを扱うシステムでも、一貫したシステム開発が可能になることを示している。特に、CORBA等の分散オブジェクト環境では、有限長データに限らず無限長データに関するサービスを提供する主体をもオブジェクトと表すことができるので、システムの分析、設計、実装といった一連の開発サイクルを、オブジェクト指向という一貫した手法で行うことができる。また、トレーダ及びネームサービス等の汎用のオブジェクトサービスを、無限長データのサービスを提供するオブジェクトに関してそのまま利用できる利点もある。第2には、ネットワーク管理インタフェースを意識せずに無限長データの通信を開発でき、無限長データの扱いを簡素化してアプリケーション開発の負担を軽減することができる利点がある。
【図面の簡単な説明】
【図1】分散処理環境とアプリケーションとの全体構成の機能分類を示す図である。
【図2】分散処理環境の全体構成を示す図である。
【図3】動作シーケンスの例を示す図である。
【図4】クラス「ストリーム」を定義するコード記述例を示す図である。
【図5】クライアントコードの記述例を示す図である。
【図6】サーバの実装コードの記述例を示す図である。
【符号の説明】
1 クライアントアプリケーション
2 クライアント側データ処理部
3 データ通信部
4 サーバ側データ処理部
5 サーバオブジェクト
6 分散処理環境
6a クライアント側分散処理環境
6b サーバ側分散処理環境
10 コンピュータ
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a method for communicating infinite length data between applications in a distributed system.
[0002]
In recent years, many distributed system technologies such as a client / server system have been developed. According to Miki, Tsuchiya, and Lee, "Three-tier client / server system construction technique" (Soft Research Center, 1996), communication methods between distributed applications are roughly classified into two types: request-response type and peer-to-peer. There is a type. In the request-response type, one application makes a request and the other responds to it. On the other hand, in the peer-to-peer type, both applications simply exchange information under mutually equal rights and conditions.
[0003]
Typical implementations of the request response type include a remote procedure call (RPC) technology and a distributed object technology using a common object request broker architecture (CORBA). In RPC, for example, when a server application defines a procedure, and when the client calls the procedure to the server application and when the server responds to the client, data is exchanged between the client and the server via parameters. Do. Similarly, in CORBA, an object as a server defines an interface that is a collection of operations, and when a client invokes an operation on an object and responds to a client from an object, the interface between the client and the server via a parameter is defined. To exchange data.
[0004]
One of the features of these technologies is that the client does not need to be aware of the network when performing programming, and can perform data communication by a method in which a client calls a procedure or an operation of a server.
[0005]
However, conventional communication between request-response-type applications including RPC and CORBA targets only finite-length data as data to be exchanged, and cannot exchange infinite-length data. That is, conventionally, only peer-to-peer communication exists for exchanging infinite length data between the client and the server. For example, in a UNIX environment, it is common for both a client and a server to generate sockets, and both to access their own sockets to exchange infinite length data.
[0006]
Here, “finite length data” refers to data that can specify the entire length of data when data communication is started. On the other hand, "infinite length data" refers to data for which the size of data cannot be specified when data communication is started. An example of the infinite length data is video and audio data of a video conference system. Since the service end time of this system is generally indefinite, it is not possible to specify the entire length of the data at the time of starting the communication of the video and audio data. Another example of infinite length data is a video on demand service. Since the length of the movie is known in advance, it can be treated as finite length data, but depending on the implementation of the application, it can be developed as infinite length data.
[0007]
Using the peer-to-peer type instead of the request-response type for communication of infinite length data between applications has the following disadvantages. The first drawback is that it is difficult to develop a consistent system because the communication manners of finite-length data and infinite-length data are different. For example, in a distributed object environment such as CORBA, since communication of finite length data is a request response type, an entity that provides or processes finite length data at the time of code implementation can be represented as an object. Therefore, it is possible to develop the analysis, design and implementation of the system by a consistent method called object orientation. On the other hand, since communication of infinite length data is not a request-response type, a subject that provides or processes infinite length data at the time of mounting cannot be represented as an object. Therefore, system development cannot be performed in a consistent manner. For this reason, consistency cannot be maintained, the advantage of the system development method is lost, and the efficiency and quality of system development are reduced.
[0008]
A second disadvantage is that both the client and server must be aware of the network interface, such as the sockets described above, when implementing the code. In other words, in spite of the fact that technologies such as RPC and CORBA can be used, if infinite length data is to be communicated, programming must be performed with the network interface in mind. This adds to the burden of application development. In particular, this burden becomes extremely large in the development of multimedia systems that mainly handle data that can be classified into infinite length data such as moving images or audio.
[0009]
[Problems to be solved by the invention]
SUMMARY OF THE INVENTION An object of the present invention is to solve the above-mentioned drawbacks with respect to communication of infinite length data between applications, to provide the same communication manner for both finite length data and infinite length data, and to make it possible to apply a consistent system development method. Another object of the present invention is to enable communication of infinite-length data without being aware of a network interface when implementing the code of each application.
[0010]
[Means for Solving the Problems]
In order to achieve the above object, a request-response-type infinite-length data communication method of the present invention is a request-response-type infinite-length data communication method in which one application initiates a request and the other application responds to the request in a distributed processing environment. In a distributed processing system, in order to communicate infinite-length data between applications, a stream type is defined in a distributed processing environment as a data type for infinite-length data, and one application provides a stream type provided by the other application. When calling an operation having a parameter including a parameter, a variable of a trim type corresponding to the parameter is generated on each of the two application sides, and the distributed processing environment continuously repeats communication of infinite-length data between applications through the variable. Executes as finite-length data transfer And wherein the door.
[0011]
According to such a request-response type infinite length data communication method of the present invention, the distributed processing environment does not require the use of a network management interface for communicating infinite length data with both the client application and the server object. There is no need to be conscious. In addition, access means to infinite length data is provided as an operation parameter, and there is no need to define an operation such as starting or stopping communication for enabling access to infinite length data.
[0012]
BEST MODE FOR CARRYING OUT THE INVENTION
Next, embodiments of the present invention will be described in detail with reference to the drawings. FIG. 1 is a functional classification of the overall configuration of a distributed processing environment and an application. 1 is a client application. It invokes the operation of the object as a server to receive services on infinite data.
[0013]
Reference numeral 2 denotes a client-side data processing unit. In response to this, in response to an operation call request from the client application 1, the object reference of the server object 5, the operation call request, and data as operation parameters are passed to the data communication unit 3. This also passes the operation call response and data as parameters received from the data communication unit 3 to the client application 1.
[0014]
3 is a data communication unit. In this method, the position of the server object 5 is determined from the object reference received from the client-side data processing unit 2, and the object reference, the operation call request, and the data as parameters are passed to the server-side data processing unit 4 of the server object 5. In addition, it passes the operation call response received from the server-side data processing unit 4 and data as parameters of the operation to the client-side data processing unit 2.
[0015]
Reference numeral 4 denotes a server-side data processing unit. When receiving an object reference, an operation call request, and data as a parameter from the data communication unit 3, it passes the call request and data as a parameter to the server object 5. When receiving an operation call response and data as its parameters from the server object 5, it passes them to the data communication unit 3.
[0016]
5 is a server object. It provides services for infinite length data. It also performs the operation for which the call request was received.
Among the above, the client-side data processing unit 2, the data communication unit 3, and the server-side data processing unit 4 are provided to the application developer as the distributed processing environment 6.
[0017]
A simple scenario viewed from the client application 1 and the server object 5 is as follows. (1) The client application 1 obtains an object reference of the server object 5 to be called by using a name service or a trader service. (2) The client application 1 calls an operation of the server object 5 using the object reference. (3) The server object 5 executes the called operation. (4) The server object 5 returns a response of the called operation to the client application 1. In either or both of (2) and (4), infinite length data is exchanged between the client application 1 and the server object 5.
[0018]
FIG. 2 is a diagram showing the entire configuration of the distributed processing environment. The applications distributed to the respective computers 10a and 10b enable communication between the applications through the distributed processing environment 6 on each computer without being aware of the distribution. In this embodiment, the distributed processing environment 6 defines a data type for infinite length data, and the application uses that type.
[0019]
In the following description, the infinite length data type is referred to as a stream type. This stream type is an abstract data type assuming that an application directly processes infinite-length data. The stream type is defined by a distributed processing environment and provided to an application. The application treats the infinite length data as a parameter of the operation call in the operation, and processes the infinite length data by accessing the parameter.
[0020]
The distributed processing environment provides a data type in an interface definition language (IDL) and a data type in a programming language (for example, C ++) as a stream type. In addition, mapping is performed from the IDL description of the stream variable to the programming language (the mapping is performed by the IDL compiler).
[0021]
Since the stream type is provided as the data type of the parameter of the operation call, the generation of the stream type variable by the client-side application 1 and the server object 5 is performed in the same manner as the conventional data type of CORBA. That is, either of them gives an opportunity to generate a stream type variable. Although there is only one stream type variable entity as an operation call parameter visible to both parties, the variable entity actually exists in both the client and the server.
[0022]
The individual data flowing in the stream type is a simple bit string unlike the integer type and the floating point type. Therefore, unlike those types of data, marshalling and unmarshalling are not performed before and after communication.
[0023]
Next, a mounting method in the stream type will be described. The stream type variable (instance) has the following information for each variable. It is roughly divided into a user data section and a management section. A buffer is a component of the user data section. This is a temporary storage of data from once receiving writing of data from the application to writing to the network interface, and from reading data from the network interface to reading to the application. Each time the application accesses a stream type variable once, it reads and writes one buffer of finite length data, and processes the infinite length data by repeating the reading and writing.
[0024]
In the following description, it is assumed that the buffer is mounted cyclically, but in the present invention, the buffer is not necessarily cyclic. Also, as components of the management unit, there are buffer information (number of buffer cycles, data size per cycle, head address) and network information (network protocol stack, service quality, self and partner network location information). . The buffer information is information on the aforementioned buffer, and the network information is information on a communication channel for infinite-length data between the client and the server.
[0025]
In order to prevent data copying between the application and the network interface, it is also possible to adopt a configuration in which no buffer is provided in the stream type.
[0026]
The operation sequence when the client application 1 calls an operation of the server object 5 and infinite data flows from the server object 5 to the client application 1 will be described below with reference to FIGS. Here, it is assumed that the distributed processing environment 6 uses a socket, which is one of the network interfaces provided by an operating system such as UNIX. FIG. 3 is a diagram showing an example of an operation sequence, FIG. 4 is a code description example for defining a class “stream”, FIG. 5 is a description example of client code, and FIG. 6 is a description example of implementation code of a server.
[0027]
First, the operation of the client-side application 1 will be described. The client-side application 1 obtains the reference of the server object 5 in the manner of the conventional CORBA ((102) in FIG. 5). This reference includes server-side network location information (IP address and port number) and the like (this conforms to the IOR (Inter-Operable Object Reference) defined by CORBA). At this stage, the stream-type variable has not been generated in the client-side application 1 yet.
[0028]
Next, the client-side application 1 calls an operation to the server object 5 with respect to the distributed processing environment 6 of the own node, and enters a block state ((1) in FIG. 3, (104) in FIG. 5). The client-side application 1 is released from the block state without waiting for a return from the server object 5 (a notification of the end of the process accompanying the operation call) ((7) in FIG. 3). When released from the block state, a stream type variable is also created on the client side. The client-side application 1 obtains the attribute of this variable (buffer information in the variable) ((106) and (107) in FIG. 5).
[0029]
The client-side application 1 accesses a stream type variable and reads infinite length data. If reading of all data is not completed by one access, the variable is repeatedly accessed ((10) in FIG. 3, (109) to (116) in FIG. 5). The end of reading may be voluntarily terminated by the client-side application 1 judging the content of the data ((113), (115) in FIG. 5) or may be interrupted by receiving an interrupt.
[0030]
Next, the operation of the server object 5 will be described. Upon receiving the operation call ((3) in FIG. 3), the server object 5 generates stream-type variables ((4) and (8) in FIG. 3 and (6) in FIG. 4). The parameters for generating the variables include buffer information (number of cycles, data size per cycle) and quality of service information (QoS).
[0031]
After the variable generation, the server object 5 accesses the stream type variable and writes the infinite length data. If writing of all data is not completed by one access, the variable is repeatedly accessed ((9) in FIG. 3, (208) to (216) in FIG. 6). The termination of the writing may be voluntarily terminated by judging the contents of the data to be written by the server object 5 ((212), (214) in FIG. 6), or may be interrupted by receiving an interrupt. .
[0032]
Finally, operations of the client side and server side distributed processing environments 6a and 6b will be described. Upon receiving an operation call from the client-side application 1 ((1) in FIG. 3), the client-side distributed processing environment 6a sends an operation call message to the server-side distributed processing environment 6b ((2) in FIG. 3). . The contents include the reference of the server object 5, the network location information (IP address and port number) on the client side, the type of operation, the parameter processing and the value. Next, the server-side distributed processing environment 6b starts the server and calls an operation on the corresponding object ((3) in FIG. 3). The sequence up to this point is the same as the conventional CORBA operation call.
[0033]
Next, when the server object 5 generates a stream type variable instance ((3) in FIG. 3), the server side distributed processing environment 6b generates a new communication channel for communication of infinite length data. Therefore, a new socket is created, an available port number is obtained, and the new socket is set. Subsequently, the distributed processing environment 6b on the server side sends a message for requesting connection to a new channel to the distributed processing environment 6a on the client side ((5) in FIG. 3). The contents include socket information (network address, port number) newly generated by the server.
[0034]
The client side distributed processing environment 6a generates a new socket on the server side. Next, a free port number is set in the socket. Then, a completion notification message is sent to the server side ((6) in FIG. 3). Further, the block of the client application 1 is released ((7) in FIG. 3). At this time, a stream-type variable instance on the client side is also generated. Upon receiving the notification of the connection completion from the client side, the distributed processing environment 6b on the server side ends the processing related to the generation of the variable ((8) in FIG. 3).
[0035]
When the server-side distributed processing environment 6b receives writing from the server object 5 to the stream-type variable (the buffer therein) ((9) in FIG. 3), the server-side distributed processing environment 6b transfers the buffer data in the variable to the infinite length data communication Write to the socket. On the other hand, when the client-side distributed processing environment 6a receives a read request from a stream-type variable from the client application 1 ((10) in FIG. 3), the client-side distributed processing environment 6a reads data from a communication socket for infinite-length data, and reads the data. To the client application 1.
[0036]
In this embodiment, a socket is used as an interface of a communication channel for infinite length data. What is necessary is that the distributed processing environments on both the server side and the client side mutually transmit and receive network location information and make connection requests. Also, note that the exchange and processing between the distributed processing environments are invisible to the server object and the client application, and the server only generates stream type variables (programmatically declares variables). Should.
[0037]
Next, an example of code description by an application developer will be described. In the IDL description, as shown in FIG. 4A, the signature “stream” means a stream type. The application developer declares a stream type parameter using this signature. "Out" indicates that infinite length data flows from the server side to the client side as in the conventional data type.
[0038]
Code description examples using C ++ as a programming language are as shown in FIG. 4B, FIG. 5 and FIG. B in FIG. 4 is a stream type class declaration. In this method, an IDL compiler receives the above IDL description and outputs a stream type class declaration as a header file. (3) to (8) are operations for the stream type. Among them, (3) and (4) are used to initialize stream type variables. Particularly in (4), information such as the buffer size is set simultaneously. (5) and (6) are operations for obtaining information such as the buffer size. (7) is an operation of designating the index of the buffer cycle and reading the data in the buffer of the index. (8) is an operation for writing data in the reverse of (7).
[0039]
FIG. 5 shows the implementation code of the client-side application, and FIG. 6 shows the implementation code of the server operation. These codes are as described in the above description of the operation sequence. Note that (104) and (112) in FIG. 5 relate to processing of data read from stream type variables. Further, (204) and (210) in FIG. 6 relate to the processing of data to be written in stream type variables.
[0040]
In the above description of the embodiment, an example in which the flow of infinite data flows from the server object to the client application has been described. On the contrary, it is needless to say that the same applies to the case where the data flows from the client application to the server object.
[0041]
From the above description of the embodiment, it is understood that the distributed processing environment does not need to use or be aware of the network management interface for communicating infinite length data for both the client application and the server object. Therefore, there is an advantage that the handling of infinite length data is simplified for the application developer, and the application development burden can be reduced.
[0042]
Also, from the description of the embodiment, access means to infinite length data is provided as an operation parameter, and it is necessary to define operations such as communication start or communication stop to enable access to infinite length data. It turns out that it does not. Therefore, according to this embodiment, there is an advantage that flexibility of application development is not impaired.
[0043]
【The invention's effect】
As described above, the present invention has the following effects. That is, first, communication of finite-length data and communication of infinite-length data can be performed by the same request-response communication method. As an example of the mode of implementation, in the RPC or the distributed processing environment, both the communication of the finite length data and the communication of the infinite length data can be realized by calling the procedure of the server or the operation of the server object. This indicates that consistent system development is possible even for systems that handle both types of data. In particular, in a distributed object environment such as CORBA, a subject that provides a service not only for finite-length data but also for infinite-length data can be represented as an object. It can be done in a consistent way called orientation. Further, there is an advantage that general-purpose object services such as a trader and a name service can be used as they are for an object providing an infinite-length data service. Second, there is an advantage that communication of infinite length data can be developed without being conscious of the network management interface, and handling of infinite length data can be simplified to reduce the burden of application development.
[Brief description of the drawings]
FIG. 1 is a diagram showing functional classifications of the overall configuration of a distributed processing environment and an application.
FIG. 2 is a diagram illustrating an entire configuration of a distributed processing environment.
FIG. 3 is a diagram showing an example of an operation sequence.
FIG. 4 is a diagram illustrating a code description example that defines a class “stream”.
FIG. 5 is a diagram illustrating a description example of a client code.
FIG. 6 is a diagram illustrating a description example of a mounting code of a server.
[Explanation of symbols]
REFERENCE SIGNS LIST 1 client application 2 client-side data processing unit 3 data communication unit 4 server-side data processing unit 5 server object 6 distributed processing environment 6a client-side distributed processing environment 6b server-side distributed processing environment 10 computer

Claims (1)

分散処理環境上で、一方のアプリケーションが要求を起こし、他方のアプリケーションがそれに応答する要求応答型の分散処理システムにおいて、アプリケーション間で無限長データの通信を行うために、無限長データのためのデータ型としてストリーム型を分散処理環境に定義し、一方のアプリケーションが、他方のアプリケーションが提供するストリーム型を含むパラメータを有するオペレーションを呼び出すとき両アプリケーション側各々で該パラメータに対応するトリーム型の変数を生成し、分散処理環境がアプリケーション間の無限長データの通信を、該変数を通じて連続的に反復する複数回の有限長データの授受として実行することを特徴とする要求応答型無限長データ通信方法。In a distributed processing system in which a request is made by one application and the other application responds to the request in a distributed processing environment, the data for infinite length data is used to communicate infinite length data between applications. A stream type is defined in the distributed processing environment as a type, and when one application calls an operation having a parameter including a stream type provided by the other application, a trim type variable corresponding to the parameter is generated on each of the two applications. A request response type infinite length data communication method, characterized in that the distributed processing environment executes communication of infinite length data between applications as transmission and reception of a plurality of finite length data that is continuously repeated through the variable.
JP20894297A 1997-08-04 1997-08-04 Request response type infinite data communication method Expired - Lifetime JP3569114B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20894297A JP3569114B2 (en) 1997-08-04 1997-08-04 Request response type infinite data communication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20894297A JP3569114B2 (en) 1997-08-04 1997-08-04 Request response type infinite data communication method

Publications (2)

Publication Number Publication Date
JPH1153273A JPH1153273A (en) 1999-02-26
JP3569114B2 true JP3569114B2 (en) 2004-09-22

Family

ID=16564696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20894297A Expired - Lifetime JP3569114B2 (en) 1997-08-04 1997-08-04 Request response type infinite data communication method

Country Status (1)

Country Link
JP (1) JP3569114B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001067690A1 (en) 2000-03-07 2001-09-13 Nippon Telegraph And Telephone Corporation Semantic information network (sion)
JP3571604B2 (en) * 2000-03-07 2004-09-29 日本電信電話株式会社 Autonomous distributed matching device, content information distribution system, computer, processing method, and storage medium
JP3571632B2 (en) * 2000-09-19 2004-09-29 日本電信電話株式会社 Semantic information network, semantic information switch, semantic information router, semantic information gateway, event routing method, and event routing device

Also Published As

Publication number Publication date
JPH1153273A (en) 1999-02-26

Similar Documents

Publication Publication Date Title
Foster et al. Managing multiple communication methods in high-performance networked computing systems
US6807667B1 (en) Method and system of an application program interface for abstracting network traffic control components to application programs
US7552265B2 (en) System and method for providing context information
US8739183B2 (en) Annotating portions of a message with state properties
US6895588B1 (en) Remote device access over a network
TWI378700B (en) Reliable messaging using redundant message streams in a high speed, low latency data communications environment
US20100115041A1 (en) Creating a message readable by a plurality of heterogeneous recipients
US7716290B2 (en) Send by reference in a customizable, tag-based protocol
MXPA04002729A (en) Transmitting and receiving messages through a customizable communication channel and programming model.
JP2002505466A (en) Remote method invocation method and apparatus
CN109547243B (en) DDS-based cross-network-segment communication method
CN112134915B (en) Application layer protocol decoupling universal network processing system
US20170031739A1 (en) Protocol for communication of data structures
US20020046304A1 (en) Dynamic class loading
WO2023169267A1 (en) Network device-based data processing method and network device
Lohse et al. An open middleware architecture for network-integrated multimedia
EP1331571B1 (en) System and method for enabling arbitrary components to transfer data between each other
US11868819B2 (en) System and method for constructing filter graph-based media processing pipelines in a browser
JP3569114B2 (en) Request response type infinite data communication method
Gokhale et al. Operating system support for high-performance, real-time CORBA
Fischer et al. Embedding SCI into PVM
JP2000259437A (en) Software cut-through method, recording medium recorded with operating system and computer system
Wang et al. Cooperating intelligent mobile agents mechanism for distributed multimedia synchronization
CN118502968A (en) WebSocket-based data pushing method and device, computer equipment and readable storage medium
KR100441742B1 (en) A method for controlling inter-process communication data using an information exchange bus and the system thereof

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040323

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040520

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040615

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040617

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090625

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090625

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100625

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100625

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110625

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120625

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130625

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140625

Year of fee payment: 10

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term