(57)【特許請求の範囲】
【請求項１】
依頼された描画処理を実行する描画実行プログラムとこの描画実行プログラムに描画を依頼する描画指示プログラムとの間のデータ通信を行うプログラム間通信方法において、
描画処理を実行させるために必要な複数種の描画パラメタをパラメタ毎に分割し、当該分割された描画パラメタそれぞれに対して、当該描画パラメタの種類を識別するデータＩＤと、前記描画実行プログラムに実行させるべき描画処理を指示する描画指示コマンドを記述したメッセージＩＤと、送信する描画パラメタが最終のものか否かを示す情報を含むパケット送信順番号とを付加することによって各描画パラメタ毎に通信パケットを生成するステップと、
前記生成された通信パケットを前記描画実行プログラムに送信するステップとを具備することを特徴とするプログラム間通信方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、複数の情報処理装置上に存在するアプリケーションプログラム間のデータ通信または情報処理装置内部の複数のアプリケーションプログラム間のデータ通信を行うためのプログラム間通信方法に関する。
【０００２】
【従来の技術】
従来、アプリケーションプログラム間のデータ通信においては、データ要素はデータの通信目的を記述したメッセージに対して従属関係にあり、いわばメッセージ指向型の通信方式が主流であった。
【０００３】
メッセージ指向型の通信方式では、各々のメッセージ毎にデータ構造とデータサイズが決定されていた。したがって、メッセージ指向型のアプリケーションプログラム間通信は、メッセージが主要な意味を持っており、そのメッセージによって相手先の内部状態を変化させることが主要な目的とされていた。
【０００４】
【発明が解決しようとする課題】
しかし、メッセージ指向型の通信方式では、データがメッセージ毎に個別に構造化されることによって次のような問題があった。
（ａ）同一のデータ要素を複数のメッセージが共通して持つ場合でも、そのデータ要素を共有できないため、データの冗長制が増加する。
（ｂ）データ構造のパターンをメッセージ毎に定義することが必要になるため、同一のデータ要素を複数のメッセージが共通して持つ場合には、送受信データの処理が複雑になる場合がある。
（ｃ）データ構造の中には、値が変化したために通信を要するデータ要素と、値が変化していないために通信を要しないデータ要素があるにも拘らず、データ構造を構成するデータ要素は全て通信の対象となるため、通信トラヒックが増加する。
（ｄ）基本的にメッセージ毎に受信処理が必要になり、またメッセージが通信上の主要な意味を持つことにより、メッセージの種類が必然的に増加することになるため、受信処理が複雑になる。
【０００５】
この発明はこのような点に鑑みてなされたものであり、送受信のためのデータを構成する任意のデータ要素を任意の組み合わせおよび順序で通信できるようにし、データ指向型のプログラム間通信を実現することが可能なプログラム間通信方法を提供することを目的とする。
【０００６】
【課題を解決するための手段および作用】
この発明は、依頼された描画処理を実行する描画実行プログラムとこの描画実行プログラムに描画を依頼する描画指示プログラムとの間のデータ通信を行うプログラム間通信方法において、描画処理を実行させるために必要な複数種の描画パラメタをパラメタ毎に分割し、当該分割された描画パラメタそれぞれに対して、当該描画パラメタの種類を識別するデータＩＤと、前記描画実行プログラムに実行させるべき描画処理を指示する描画指示コマンドを記述したメッセージＩＤと、送信する描画パラメタが最終のものか否かを示す情報を含むパケット送信順番号とを付加することによって各描画パラメタ毎に通信パケットを生成するステップと、前記生成された通信パケットを前記描画実行プログラムに送信するステップとを具備することを特徴とする。
【０００７】
このプログラム間通信方法においては、描画処理を実行させるために必要な複数種の描画パラメタをパラメタ毎を分割し、そのパラメタ毎に通信パケットを送信することにより、データ指向型の通信を実現している。この場合、各通信パケットには、描画パラメタの種類を識別するデータＩＤと、前記描画実行プログラムに実行させるべき描画処理を指示する描画指示コマンドを記述したメッセージＩＤと、送信する描画パラメタが最終のものか否かを示す情報を含むパケット送信順番号とが付加される。
【０００８】
したがって、従来のメッセージ指向型通信のようにデータをメッセージ毎に個別に構造化する必要がなくなり、例えば、値が変化したために通信を要するパラメタのみを選択的に送受信するなど、データ送受信をより自由な形態で行うことが可能になり、プログラム間のデータ通信の効率化を図ることができる。
【０００９】
【実施例】
以下、図面を参照してこの発明の実施例を説明する。
図１には、この発明の一実施例に係るプログラム間通信方法を適用したアプリケーションプログラム間のデータ通信処理の原理が示されている。
【００１０】
アプリケーションプログラム（Ａ）１１およびアプリケーションプログラム（Ｂ）１２は、それぞれ異なる情報処理装置上または同一情報処理装置内に存在しており、その間のデータの送受信は図示のような通信パケット１５を利用して行われる。
【００１１】
ここでは、３２ビット構成のアプリケーションプログラム間の通信を通信処理プログラム１３，１４を利用して行う場合を例にとって、通信パケット１５の構造を説明する。
【００１２】
通信パケット１５は、受信側ポートＩＤ（ａ）、パケット順番号データ（ｂ）、送信側ポートＩＤ（ｃ）、カテゴリＩＤ（ｄ）、メッセージコード（ｅ）、データ型ＩＤ（ｆ）、データＩＤ（ｇ）、およびデータ領域（ｈ）から構成されている。
【００１３】
受信側ポートＩＤ（ａ）は、受信側プログラムの受信ポートを記述したアドレスまたは識別コードであり、通信パケット１５を届ける受信側プログラムを指定する目的で通信処理プログラム１３，１４によって使用される。
【００１４】
パケット順番号データ（ｂ）は、通信パケット１５の送信順序と分割送信状態を記述したデータであり、同一メッセージを複数の通信パケット１５で分割送信した時に、それら通信パケット１５のフロー制御（送信パケット番号順の処理）を行う目的で通信処理プログラム１３，１４によって使用される。
【００１５】
送信側ポートＩＤ（ｃ）は、送信側プログラムの受信ポートを記述したアドレスまたは識別コードであり、受信側プログラムが送信側プログラムを認識する目的、および受け取ったカテゴリＩＤ（Ｄ）が受信相手にレスポンスを返すことを期待する内容である場合に、受信側プログラムがレスポンスを返す送信相手を認識する目的で使用される。
【００１６】
カテゴリＩＤ（ｄ）は、メッセージの基本的な通信目的（メッセージタイプ）を記述した識別コードであり、送信相手へのデータ要素の設定、送信相手からの応答の要求、受信相手に対する応答、またはイベント発生などを通知するために使用される。
【００１７】
メッセージコード（ｅ）は、メッセージそのものをコード化して記述した識別コードであり、送信される通信パケット１５のデータ要素を受信側でどの様に扱うかを示す目的で利用される。
【００１８】
データ型ＩＤ（ｆ）は、通信パケット１５のデータ表現（データ型）をコード化して記述したものであり、送信される通信パケット１５のデータ要素を受信側がどのようなデータ型として参照すべきかを示す目的で利用される。
【００１９】
データＩＤ（ｇ）は、送信される通信パケット１５のデータ要素を識別するためのコードデータであり、受信側でデータ要素を識別する目的で使用される。
データ領域（ｈ）は、データ要素そのものを格納するための領域であり、データ通信の目的で利用される。このデータ領域（ｈ）のデータサイズは、基本的に固定長であるが、可変長にすることも可能である。
【００２０】
このプログラム間通信方法では、例えばアプリケーションプログラム１１からアプリケーションプログラム１２にデータ送信する場合には、そのデータを構成するデータが複数のデータ要素に分割され、データ要素毎に前述の受信側ポートＩＤ（ａ）、パケット順番号データ（ｂ）、送信側ポートＩＤ（ｃ）、カテゴリＩＤ（ｄ）、メッセージコード（ｅ）、データ型ＩＤ（ｆ）、およびデータＩＤ（ｇ）が通信処理プログラム１３によって付加されて、通信パケット１５としてアプリケーションプログラム１２に順次送られる。
【００２１】
このように通信の単位となる通信パケット１５に、その通信パケット１５中に含まれるデータ要素の通信目的を記述するメッセージコード（ｅ）、基本的な通信目的を記述するカテゴリＩＤ（ｄ）、データ要素を識別するデータＩＤ（ｄ）、データ要素のデータ型を識別するデータ型ＩＤ（ｆ）、通信を行うデータ要素そのもののデータ領域（ｈ）を設けることにより、データ指向型の通信が実現される。
【００２２】
したがって、従来のメッセージ指向型通信のようにデータをメッセージ毎に個別に構造化する必要がなくなり、例えば、値が変化したために通信を要するデータ要素のみを選択的に送受信するなど、データ送受信をより自由な形態で行うことが可能になり、プログラム間のデータ通信の効率化を図ることができる。
【００２３】
次に、図２を参照して、図形描画を行う場合を例にとってプログラム間通信の具体例を説明する。
図２においては、ＬＡＮ１００を介して２つの情報処理装置１０１，２０１が互いに接続されており、情報処理装置１０１上で実行されている描画指示プログラム１０１ａと情報処理装置２０１上で実行されている描画実行プログラム２０１ａとの間でデータ通信が行われる。すなわち、送信側の情報処理装置１０１は、描画指示プログラム１０１ａおよびＬＡＮドライバ１０１ｂを利用して受信側の情報処理装置２０１に対して図形描画の指示を送信する機能を持ち、また受信側の情報処理装置２０１は受信データをもとに図形を描画する機能を持つ。
【００２４】
以下、描画指示プログラム１０１ａと描画実行プログラム２０１ａとの間で授受される通信パケットが図１の構造を有しており、図３のような図形描画をデータ指向型の通信方法で行う場合を例示して具体的な動作を説明する。
【００２５】
図３に示す図形描画の場合、従来のメッセージ指向型の通信方式では例えば解像度に関する３種類のモードが存在するとき、長方形描画以前に解像度設定を行うメッセージによりモード指定を行ってから長方形描画を行うメッセージを出力するか、図４（ａ）に示されているように長方形描画のメッセージにモード情報を付加し、そのモード情報によって３種類のモードの１つを指定することで対応していた。また、描画パラメータについても２回の長方形描画とも４つの座標パラメタが必要であった。
【００２６】
図４（ａ）において、Ｂ  ａｄｄｒは、受信側の情報処理装置２０１（装置Ｂ）の宛先であり、次のＲｅｃｔａｎｇｌｅ４００は解像度４００に対応した長方形描画メッセージである。また、Ｒｅｃｔａｎｇｌｅ２４０、Ｒｅｃｔａｎｇｌｅ６４０は、それぞれ解像度２４０，６００に対応した長方形描画メッセージである。図３では、１回目の長方形描画で左端点（ｌｘ１，ｌｙ１）、右端点（ｒｘ１，ｒｙ１）の長方形を描画し、２回目の長方形描画で左端点（ｌｘ１，ｌｙ２）、右端点（ｒｘ１，ｒｙ１）の長方形を描画している。このため、図４（ａ）に示されているように、１回目の長方形描画メッセージでは４つの座標パラメタ（ｌｘ１，ｌｙ１，ｒｘ１，ｒｙ１）の指定が必要であり、また、２回目の長方形描画メッセージでも４つの座標パラメタ（ｌｘ１，ｌｙ２，ｒｘ１，ｒｙ１）の指定が必要である。
【００２７】
この実施例では、図４（ｂ）に示されているように３種類の解像度モードをデータ型（４００ｕｎｉｔ，２４０ｕｎｉｔ，または６００ｕｎｉｔ）として実装するため、メッセージは１種類の長方形描画（Ｒｅｃｔａｎｇｌｅ）だけで済む。
【００２８】
また、座標パラメタについては、２回目の描画の際は１回目のパラメタとの差分を指定するだけで済む。すなわち、１回目の長方形描画で左端点（ｌｘ１，ｌｙ１）、右端点（ｒｘ１，ｒｙ１）の長方形を描画し、２回目の長方形描画で左端点（ｌｘ１，ｌｙ２）、右端点（ｒｘ１，ｒｙ１）の長方形を描画する場合には、１回目と２回目で異なるのはｌｙの値だけであるので、２回目の描画の際はそのパラメタの差分であるｌｙの値が指定される。また、パラメタは全てポインタで与えられる。これは、ＮＵＬＬポインタのパラメタについては送信しないようにするためである。
【００２９】
これにより、２回目の描画においては、送信関数としては４つのパラメタ（０，＆ｌｙ２，０，０）を与えることになるが、実際に送信するのはｌｙのパラメタだけで済む。
【００３０】
送信処理は、図５のフローチャートに従って次のように行われる。
まず、情報処理装置１０１の通信処理プログラムは、情報処理装置２０１のアドレスを受信側ポートＩＤとして設定し（ステップＳ１０１）、次いで、データ設定を示すカテコリＩＤ、および長方形描画指示を示すメッセージコード（Ｒｅｃｔａｎｇｌｅ）の設定を行なう（ステップＳ１０２，１０３）。
【００３１】
次いで、そのメッセージで送信すべきデータ要素の数が１になるまでステップＳ１０５〜Ｓ１１０の送信処理が繰り返し実行され、送信すべきデータ要素の数が１になると、ステップＳ１１１〜Ｓ１１５の送信処理が行われる。
【００３２】
前述した１回目の描画については、送信すべきデータ要素の数は４であるため、全部で４回の送信処理、具体的にはＳ１０５〜Ｓ１１０の送信処理が３回繰り返し実行された後、ステップＳ１１１〜Ｓ１１５の送信処理が１回行われる。
【００３３】
１回目の描画の場合、まず、１回目の送信処理ではデータＩＤとしてｌｘ、データ型ＩＤとして４００、データ要素としてｌｘのパラメタ値、パケット順番号データとして１がそれぞれ設定されて（ステップＳ１０５〜Ｓ１０８）、通信パケット１５が送信される（ステップＳ１０９）。そして、パケット順番号データの値が＋１される（ステップＳ１１０）。
【００３４】
１回目の描画の２回目の送信処理では、データＩＤとしてｌｙ、データ型ＩＤとして４００、データ要素としてｌｙのパラメタ値、パケット順番号データとして２がそれぞれ設定されて（ステップＳ１０５〜Ｓ１０８）、通信パケット１５が送信される（ステップＳ１０９）。そして、パケット順番号データの値が＋１される（ステップＳ１１０）。
【００３５】
１回目の描画の３回目の送信処理では、データＩＤとしてｒｘ、データ型ＩＤとして４００、データ要素としてｒｘのパラメタ値、パケット順番号データとして３がそれぞれ設定されて（ステップＳ１０５〜Ｓ１０８）、通信パケット１５が送信される（ステップＳ１０９）。そして、パケット順番号データの値が＋１される（ステップＳ１１０）。
【００３６】
１回目の描画の４回目の送信処理では、データＩＤとしてｒｙ、データ型ＩＤとして４００、データ要素としてｒｙのパラメタ値、パケット順番号データとして−４がそれぞれ設定されて（ステップＳ１１１〜Ｓ１１４）、通信パケット１５が送信される（ステップＳ１１５）。ここで、パケット順番号データとして使用される負の値は、分割送信の終端を示している。
【００３７】
２回目の描画の場合は、送信すべきデータ要素の数は１であるため、ステップＳ１１１〜Ｓ１１５における１回の送信処理だけが実行される。
すなわち、２回目の描画の場合、データＩＤとしてｌｙ、データ型ＩＤとして４００、データ要素としてｌｙのパラメタ値、パケット順番号データとして−１がそれぞれ設定されて（ステップＳ１１１〜Ｓ１１４）、通信パケット１５が送信される（ステップＳ１１５）。
【００３８】
次に、図６のフローチャートを参照して、通信パケット１５の受信処理について説明する。
すなわち、受信側の情報処理装置２０１の通信処理プログラムは、通信パケット１５を受信すると、まず、メッセージコードを調べ、Ｒｅｃｔａｎｇｌｅか否かを判断する（ステップＳ２０１，Ｓ２０２）。メッセージコードがＲｅｃｔａｎｇｌｅで無い場合には、さらに、他の描画指示コード、例えば円弧描画を指定するＡｒｃか否かの判断が行われる（ステップＳ２０３）。このようにして、まず、通信パケット１５のメッセージが種別される。以下、メッセージコードがＲｅｃｔａｎｇｌｅである場合を例にとって受信処理を説明する。
【００３９】
情報処理装置２０１は、通信パケット１５中のデータＩＤがｌｘ，ｌｙ，ｒｘ，ｒｙのいずれを示しているかを調べる（ステップＳ２０４，Ｓ２０５，…）。これにより要素が決定されると要素毎のルーチンに移行され、そこでデータ型によってさらに振り分けられる。すなわち、通信パケット１５中のデータ型ＩＤによってモード（解像度４００、２４０、６００）が調べられ（ステップＳ２０６，Ｓ２０７，…）、情報処理装置２０１の解像度に合わせた型変換、すなわち解像度換算が行われる（ステップＳ２０８、Ｓ２１２）。
【００４０】
そして、通信パケット１５によって送信されデータ要素、つまり変換されたパラメータの値がＲｅｔａｎｇｌｅ構造体の対応する要素に設定される（ステップＳ２０９。このようにして、受信処理では、通信パケット１５によって送信されたパラメータの値が所定の解像度変換がなされた後にＲｅｔａｎｇｌｅ構造体の対応する要素に設定される。パラメータ値と構造体の要素との対応は、通信パケット１５中のデータＩＤを利用して行われるので、メッセージ指向型のようにパラメータの順番を固定させる必要はない。Ｒｅｔａｎｇｌｅ構造体とそれに設定するデータ要素との関係を図７に示す。
【００４１】
図７に示されているように、Ｒｅｔａｎｇｌｅ構造体はｌｘ，ｌｙ，ｒｘ，ｒｙに対応する４つの描画パラメータ領域から構成されており、通信パケット１５によって送信されデータ要素はデータＩＤの内容によって対応するパラメータ領域に設定される。
【００４２】
このようにして、設定すべき全ての描画パラメータがＲｅｔａｎｇｌｅ構造体の対応する各要素に設定されると、長方形描画が行われる。すなわち、分割送信パケットのパケット順番号に終端を示す負の値が検出されたならば（ステップＳ２１０、その時のＲｅｔａｎｇｌｅ構造体の４つの描画パラメータを利用して長方形描画が行われる（Ｓ２１１，Ｓ２１５）。
【００４３】
１回目の描画の場合には、４つの通信パケットによって４つの描画パラメータが設定された時に長方形描画が実行され、また２回目の描画の場合には、１つの通信パケットによって１つの描画パラメータ（ｌｙ）が更新された時に、その時のＲｅｔａｎｇｌｅ構造体の４つの描画パラメータを利用して長方形描画が実行される。この場合、ｌｘ，ｒｘ，ｒｙについては、１回目の描画で設定された値が使用される。
【００４４】
以上説明したように、この実施例においては、通信の単位となる通信パケット１５に、その通信パケット１５中に含まれるデータ要素の通信目的を記述するメッセージコード（ｅ）、基本的な通信目的を記述するカテゴリＩＤ（ｄ）、データ要素を識別するデータＩＤ（ｄ）、データ要素のデータ型を識別するデータ型ＩＤ（ｆ）、通信を行うデータ要素そのもののデータ領域（ｈ）を設けることにより、データ指向型の通信が実現される。
【００４５】
したがって、従来のメッセージ指向型通信のようにデータをメッセージ毎に個別に構造化する必要がなくなり、例えば、値が変化したために通信を要するデータ要素のみを選択的に送受信するなど、データ送受信をより自由な形態で行うことが可能になり、プログラム間のデータ通信の効率化を図ることができる。
【００４６】
また、具体的には、（ａ）データＩＤによってデータ要素を識別することができるため、同一メッセージでありながら全データ要素の送受信や差分データ要素のみの送受信を任意に行うことができる。（ｂ）データ型ＩＤによってデータ要素の型を識別することができるため、同一データ要素でありながら複数の異なるデータ表現を扱うことができる。（ｃ）データ要素に対して様々な情報を付加することができるため、メッセージの受信処理が従来に比べて簡素化される。さらに、データ要素は複数のメッセージ間で共有できるため、受信処理においても、各メッセージ処理プログラム間でデータ処理プログラムを共有ライブラリ化することができる。
【００４７】
なお、この実施例の通信方法は、データの要素分割、データ要素の識別、データ表現の識別、複数メッセージ間でのデータ要素の共有、任意の組み合わせおよび順序での任意のデータ要素の通信ができることから、アプリケーションプログラム間での差分データ通信や様々なデータ資源を取り扱うマルチメディア環境下の通信に応用することができる。
【００４８】
また、データ要素とデータＩＤからそれぞれ構成される複数組のデータ列にメッセージＩＤを付加することにより、同一のメッセージＩＤの元に複数のデータ要素を一括して通信することも可能である。
【００４９】
【発明の効果】
以上説明したように、この発明によれば、通信の単位となるパケットとして、そのパケット中に含まれるデータ要素の通信目的を記述したメッセージＩＤと、データ要素を識別するデータＩＤと、通信を行うデータ要素そのものを設けることにより、送受信のためのデータを構成する任意のデータ要素を任意の組み合わせおよび順序で通信できるようになり、データ指向型のプログラム間通信を実現できる。
【図面の簡単な説明】
【図１】この発明の一実施例に係るプログラム間通信方法で使用される通信パケットの構造を示す図。
【図２】同実施例のプログラム間通信方法を利用して図形描画を行う場合のシステム構成の一例を示す図。
【図３】図２のシステムで描画される図形の一例を示す図。
【図４】図２のシステムで図３の図形を描画するときに発行される描画指示例を説明するための図。
【図５】図２のシステムで図３の図形を描画するときに実行されるパケット送信処理の手順を説明するフローチャート。
【図６】図２のシステムで図３の図形を描画するときに実行されるパケット受信処理の手順を説明するフローチャート。
【図７】図６のパケット受信処理で使用されるＲｅｔａｎｇｌｅ構造体の一例を模式的に示す図。
【符号の説明】
１１，１２…アプリケーションプログラム、１３，１４…通信処理プログラム、１５…通信パケット、１０１…送信側情報処理装置、１０１ａ…描画指示プログラム、２０１…受信側情報処理装置、２０１ａ…描画実行プログラム。
【図１】
0003654954.tif 000002
【図２】
0003654954.tif 000003
【図３】
0003654954.tif 000004
【図４】
0003654954.tif 000005
【図５】
0003654954.tif 000006
【図６】
0003654954.tif 000007
【図７】
0003654954.tif 000008