説明

情報処理装置及びその方法、通信システム、プログラム、記憶媒体

【課題】 通信する装置の機能や用途・目的に応じて適切なマーシャリング方式を自動的に決定することが可能な技術を提供する。
【解決手段】 通信データを整形してサーバ装置と通信する情報処理装置は、前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信手段と、受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置及びその方法、通信システム、プログラム、記憶媒体に関し、特に、アーキテクチャが異なる計算機間で通信を行う際に通信データを整形する技術に関する。
【背景技術】
【0002】
コンピュータを用いた制御システムにおいては、複数のプログラムを同時並行的に動かして所望の制御を行うケースが多い(マルチタスク、マルチプロセス)。このとき、複数のプログラム間でデータが受け渡されるが、CPUアーキテクチャやオペレーティングシステムが異なる計算機間では、意味的(論理的)には同一のデータであっても計算機ごとに主記憶上に保存されるデータの並びが異なることが一般的である。このため、システム間におけるデータの受け渡しに際してデータレイアウトの変換が必要になる。
【0003】
データレイアウトは計算機が採用しているCPUアーキテクチャと、計算機が採用しているコンパイラ等によって決定される。計算機が採用しているCPUアーキテクチャとコンパイラの組み合わせを本稿ではプラットフォームと呼ぶことにする。
【0004】
計算機上での具体的なデータレイアウトは以下の3つによって決定される。
・データ長:int, float, boolなどの型ごとに割り当てられる記憶容量。
例えば、C言語においては、同じint型でもプラットフォームによってデータ長が異なる。
・エンディアン:複数バイトからなるデータ型を主記憶に格納するバイト順。
例えば、10進数で1000という値を表現するときに、主記憶上で
0xE8 0x03 0x00 0x00と配置する方法(リトルエンディアン)。
【0005】
0x00 0x00 0x03 0xE8と配置する方法(ビッグエンディアン)。
のいずれかが今日一般に用いられている。
・アラインメント:例えば32ビットCPUでは、主記憶装置から4バイトを一度に読み出すことができるため、データ項目の先頭アドレスを4の倍数に揃え、主記憶アクセス高速化をはかる手法がとられている。この場合4バイトに満たないデータは、後方に隙間(パディング)が発生する。
【0006】
上記のうちエンディアンはCPUによって決定され、データ長とアラインメントはコンパイラによって決定される。
【0007】
異なるプラットフォーム間の通信では上記のそれぞれのレイアウト要因について変換処理が必要となる。変換処理の手順はシステムごとに若干の差異があるが、ここではその一例を示す。
・データ長:intなど、C言語の組み込み型はプラットフォームごとにサイズが異なるので、int16、int32など、明示的にサイズを規定したデータ型を独自に定義し、通信においてはそれらの独自型を使って送信データを構成することがよく行われる。
・エンディアン:送信側と受信側のエンディアンが異なる場合は、データ項目ごとにバイト順を逆転させる処理が必要となる。変換処理は送信側か受信側のどちらかで行えばよいが、変換の要否を判定するには事前に互いのエンディアンを知る必要がある。このため、ネットワーク上に流すデータは常にビッグエンディアンに変換するという規約(ネットワークバイトオーダ)で運用しているシステムも存在する。
・アラインメント:データ送信時にパディングを抜いた形式に変換しておき(シリアライズ)、受信側でパディングを挿入して(デシリアライズ)自身のアラインメントに合致するように整形する。
【0008】
このようなエンディアンやアラインメントなどのデータレイアウトの変換処理のことをマーシャリングと呼ぶ。
【0009】
実際の開発に際してはマーシャリング処理をアプリケーションロジックに組み込むことは通常せず、マーシャリングを専門に処理する仲介プログラム(スタブ、スケルトン)を作成し、制御プログラムとリンクして利用する。仲介プログラムはIDL(Interface Definition Language)等で記述されたインタフェース記述からIDLコンパイラによりソースコードを自動生成する方式が一般的である。
【0010】
通信相手が固定的な場合は、通信相手にあわせて予め定められたマーシャリング処理を行うことで、プログラム同士の通信が実現できる。しかし、複数の制御プログラムを汎用的に扱うアプリケーションにおいて、制御プログラムに与えるデータ構造を変更したり、新しい制御プログラムを追加したりする場合は、その都度対象プログラムの仲介プログラムを作成する必要がある。さらに、それをリンクするために、アプリケーションを再構築する必要がある。
【0011】
一方、組み込みシステムではマーシャリングに要する処理コストを抑える目的で、通信プラットフォームの組み合わせごとに最適化した複数のマーシャリング方式を用意している場合がある。このような環境においては、レスポンスを軽くしたい、特定のマーシャリングルーチンのテストを行いたいなど、目的によってマーシャリング方式を切り替えて使用するニーズが存在する。しかし、目的に対する最適なマーシャリング方式は自プラットフォームと接続先プラットフォームとの組み合わせによって変わるため、目的に合わせた最適なマーシャリング方式を選択する必要がある。
【0012】
また、組み込みシステムの開発においては、安価で開発環境の充実した汎用PCでの開発および単体テストと、CPUが異なる実機でのテストを反復して行うことが多い。この場合、同一プログラムでも稼動プラットフォームが頻繁に変更されるため、マーシャリングの方式が安定しない。したがって、このような環境においても、プラットフォームの変更に伴う設定変更やアプリケーションの再構築を行わずにすむようにしたい。
【0013】
特許文献1には、複数のマーシャリング方式の中から実際に使用するものを実行時に決定する構成が開示されている。また、特許文献2および特許文献3には、サーバ側の負荷が最小になるようにマーシャリング手順を最適化する構成が開示されている。
【特許文献1】特登録02978807号公報
【特許文献2】特開2000−20490号公報
【特許文献3】特開2001−167059号公報
【発明の開示】
【発明が解決しようとする課題】
【0014】
しかし、特許文献1の構成では、サーバ側サービスと、利用するマーシャリング方式とが、命名サーバ内にて1対1で関連付けられている。このため、このような構成では、クライアントの機能や通信の用途・目的に応じて最適なマーシャリング方式をクライアント側で柔軟に選択することができない。
【0015】
また、特許文献2、特許文献3の構成においてもサーバの負荷を下げることはできるが、通信する装置の機能や通信の用途・目的に応じて最適なマーシャリング方式を柔軟に選択することができない。
【0016】
本発明は上記課題に鑑みなされたものであり、通信する装置の機能や用途・目的に応じて適切なマーシャリング方式を自動的に決定することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0017】
上記目的を達成するため、本発明による情報処理装置は以下の構成を備える。即ち、
通信データを整形してサーバ装置と通信する情報処理装置であって、
前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信手段と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、
前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、
を備える。
【0018】
また、本発明による情報処理方法は以下の構成を備える。即ち、
通信データを整形してサーバ装置と通信する情報処理装置の情報処理方法であって、
前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信工程と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定工程と、
前記サーバ装置と送受信する通信データを、前記決定工程において決定されたマーシャリング方式で整形する整形工程と、
を備える。
【0019】
また、本発明による通信システムは以下の構成を備える。即ち、
通信データを整形して通信を行う、サーバ装置とクライアント装置とを有する通信システムであって、
前記サーバ装置は、前記クライアント装置からの要求に応じて、当該サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該クライアント装置に送信する送信手段を備え、
前記クライアント装置は、
前記一覧情報を前記サーバ装置から受信する受信手段と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、
前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、
を備える。
【発明の効果】
【0020】
本発明によれば、通信する装置の機能や用途・目的に応じて適切なマーシャリング方式を自動的に決定することが可能な技術を提供することができる。
【発明を実施するための最良の形態】
【0021】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。また、本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【0022】
(装置制御システム)
図1は本実施形態に係る装置制御システム(通信システム)の構成例を示す図である。図1において、クライアント100とサーバ300が通信媒体401で接続されている。また、クライアント200とサーバ300が通信媒体402で接続されている。
【0023】
ここでクライアント100のプラットフォームをA、クライアント200のプラットフォームをB、サーバ300のプラットフォームをCとする。プラットフォームAはリトルエンディアンのCPU上で動作する汎用PC用のOSである。プラットフォームBはリトルエンディアンのCPU上で動作するUNIX(登録商標)系OSである。プラットフォームCはビッグエンディアンのCPU上で動作するリアルタイムOSである。
【0024】
本実施形態において、クライアント200とサーバ300は組み込みの制御機器である。組み込み機器に実装されるマーシャリング機構は、リアルタイム性能を確保する必要があるため、従来技術で構築される。具体的には、この両者間の通信におけるマーシャリングは、マーシャリングを専門に処理する仲介プログラムであるスタブ202とスケルトン302の間で行われる。ここで、スタブ202とスケルトン302は、インタフェース記述言語(Interface Definition Language)などで記述されたIDL502をIDLコンパイラ501に読み込ませて生成される。なお、スケルトン302は、サーバ300が使用可能なマーシャリング方式のリスト302aを保持している。
【0025】
スタブ202はクライアントアプリケーション201とリンクされ、スケルトン302はサーバアプリケーション303とリンクされている。クライアント200とサーバ300との通信は、クライアント側の通信制御部203とサーバ側の通信制御部301を介して行われる。この通信機構は、データのやり取りのほか、クライアントからサーバに対する遠隔関数呼び出し(RPC:Remote Procedure Call)にも使用される。
【0026】
装置制御アプリケーション101は、クライアント100上で動作するアプリケーションである。本実施形態において、装置制御アプリケーション101は、サーバアプリケーション303に接続して、サーバ300上のプログラムのテストやデバッグを行う用途に用いられる。例えば、サーバ300の状態を監視したり、クライアントアプリケーション201がサーバアプリケーション303に対して呼び出す遠隔関数呼び出しをクライアントアプリケーション201の代わりに実行したりする。組み込み機器はそれ自体に入力装置、表示装置を備えていないものも多いため、このような形態でテスト、デバッグが行われることが多い。
【0027】
装置制御アプリケーション101は、スタブプログラムを静的にリンクしない。代わりに、IDLコンパイラ501によって生成された接続対象のサーバアプリケーション303のインタフェース情報110を、実行時に外部(501)から読み込んで、通信に使用するメッセージの仕様を決定する。このようにして、インタフェース情報110に情報を追加することにより、多種のサーバアプリケーションへの通信が可能となる汎用性が実現される。
【0028】
本実施形態に係るクライアント100は、サーバ300との通信に使用するマーシャリング方式を決定するための複数のストラテジを予め記憶しておき、いずれかのストラテジを選択して、そのストラテジに基づいてマーシャリング方式を決定する。108はクライアント100が記憶する複数のストラテジ情報である。本実施形態では、サーバの負荷が最小になるマーシャリング方式を選択するといったポリシーごとに、使用するマーシャリング方式の優先順位が規定されている。ストラテジ情報の詳細は後述する。
【0029】
102は、複数のストラテジ情報108から使用するストラテジを選択するストラテジ選択部である。ストラテジ選択部102が選択したストラテジは、以下、マーシャリング方式決定ストラテジ103と呼ぶ。
【0030】
104はマーシャリング方式決定ストラテジ103に基づいて使用するマーシャリング方式105を決定するマーシャリング方式決定部である。
【0031】
106は装置制御アプリケーション101がサーバと送受信するデータに、決定されたマーシャリング方式105に基づいてマーシャリング処理を行うデータ整形部である。このようにして、装置制御アプリケーション101がサーバと送受信するデータは、データ整形部106でマーシャリング処理が施されて、通信制御部107によりサーバと送受信される。
【0032】
109はプラットフォーム情報であり、プラットフォームごとに、プラットフォームの識別子、エンディアンのタイプ、データ型ごとのデータ長やアラインメント等を特定する。110はインタフェース情報であり、接続対象のサーバアプリケーション303のインタフェースに関する情報を記述する。
【0033】
(ハードウェア構成)
上記のクライアント100、クライアント200、サーバ300は、パーソナルコンピュータ(PC)やワークステーション(WS)、携帯情報端末(PDA)等の情報処理装置で実現される。そこでこれらの情報処理装置のハードウェア構成について、図11を参照して説明する。図11は、本実施形態に係る情報処理装置のハードウェア構成例を模式的に示したブロック図である。
【0034】
図11において、990はCPUである。CPU990は、後述するハードディスク装置995に格納されているアプリケーションプログラム、オペレーティングシステム(OS)や制御プログラム等を実行し、RAM992にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【0035】
991はROMであり、内部には基本I/Oプログラム等のプログラム、基本処理において使用するフォントデータ、テンプレート用データ等の各種データを記憶する。992は各種データを一時記憶するためのRAMであり、CPU990の主メモリ、ワークエリア等として機能する。
【0036】
993は記録媒体へのアクセスを実現するための外部記憶ドライブであり、メディア(記録媒体)994に記憶されたプログラム等を本コンピュータシステムにロードすることができる。尚、メディア994には、例えば、フレキシブルディスク(FD)、CD−ROM、DVD、USBメモリ、MO、フラッシュメモリ等が含まれる。
【0037】
995は外部記憶装置であり、本実施形態では大容量メモリとして機能するハードディスク装置(以下、HDと呼ぶ)を用いている。HD995には、アプリケーションプログラム、OS、制御プログラム、関連プログラム等が格納される。
【0038】
996は指示入力装置であり、キーボードやポインティングデバイス(マウス等)、タッチパネル等がこれに相当する。指示入力装置996を用いて、ユーザは、本実施形態に係る情報処理装置に対して、装置を制御するコマンド等を入力指示する。
【0039】
997はディスプレイであり、指示入力装置996から入力されたコマンドや、それに対する情報処理装置の応答出力等を表示したりするものである。
【0040】
999はシステムバスであり、情報処理装置内のデータの流れを司るものである。998はインターフェイス(以下、I/Fという)であり、このI/F998を介して外部装置とのデータのやり取りを行う。
【0041】
尚、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【0042】
本実施形態では、メディア994から本実施形態に係るプログラム及び関連データを直接RAM992にロードして実行させる例を想定するが、これに限られない。例えば、本実施形態に係るプログラムを動作させる度に、既にプログラムがインストールされているHD995からRAM992にロードするようにしてもよい。また、本実施形態に係るプログラムをROM991に記録しておき、これをメモリマップの一部をなすように構成し、直接CPU990で実行することも可能である。
【0043】
また、本実施形態では、説明の便宜のため、本実施形態に係る情報処理装置を1つの装置で実現した構成について述べるが、複数の装置にリソースを分散した構成によって実現してもよい。例えば、記憶や演算のリソースを複数の装置に分散した形に構成してもよい。或いは、情報処理装置上で仮想的に実現される構成要素毎にリソースを分散し、並列処理を行うようにしてもよい。
【0044】
(インタフェース情報例)
図2はインタフェース情報の一例を示す図である。図2の例では、インタフェースXが、2階層の深さレベルを有する、合計6つのデータ項目から構成されている。
【0045】
(マーシャリング方式例)
図3は本実施形態で定義されているマーシャリング方式の一覧を例示する図である。図3のように、本実施形態では、3つのマーシャリング方式例を規定している。
・NONSERIAL_SAMEORDERは、サーバ側プラットフォームのネイティブのデータレイアウトでデータを送受信する方式である。この方式では、サーバ側の処理は最も軽いが、同一プラットフォーム間通信でない場合はクライアント側でマーシャリング処理が必要となる。
・SERIALIZE_SAMEORDERは、データをシリアライズし、エンディアンはサーバ側に合わせて送受信する方式である。この方式では、サーバ側はデータのデシリアライズのみ行う。
・SERIALIZE_DIFFORDERは、データをシリアライズし、サーバ側と異なるエンディアンでデータを送受信する方式である。この方式は、エンディアンの異なるCPU間の通信で、エンディアン変換をサーバ側で行う場合に用いられる。
【0046】
本実施形態では通信を行うプラットフォームの組み合わせによってマーシャリング方式が決定される。クライアント200とサーバ300はCPUアーキテクチャが異なるため、スタブ202とスケルトン302の間の通信ではSERIALIZE_DIFFORDERが使用される。スタブ202は通信を行う相手が固定(サーバ300のスケルトン302のみ)であるため、実装されるマーシャリング方式はSERIALIZE_DIFFORDERのみである。一方、スケルトン302はクライアント200以外のクライアントからの接続も想定している場合、複数のマーシャリング方式に対応する。例えば、サーバアプリケーション303が同じサーバ300内の別プログラムとも通信を行う場合、スケルトン302はNONSERIAL_SAMEORDERにも対応する。
【0047】
なお、図3にあげたマーシャリング方式は一例でありこれに限られない。例えば、データのシリアライズを行わないが、サーバ側と異なるエンディアンでデータを送受信する方式を使用してもよい。
【0048】
(マーシャリング方式決定処理)
図4は、クライアント100のマーシャリング方式決定部104が、サーバプログラム303との通信に使用するマーシャリング方式を決定する処理のフローチャートである。図4の各ステップはクライアント100のCPUの制御に基づいて実行される。
【0049】
ステップS1001において、通信に先立って初期化処理を行う。初期化処理では、クライアント100は、サーバ300のスケルトンに、エンディアン、プラットフォーム、使用可能マーシャリング方式を問い合わせる。装置制御アプリケーション101がマーシャリングを行って通信をするためには、サーバ300のエンディアン、アラインメントおよびスケルトン302が使用可能なマーシャリング方式に関する情報が必要なためである。
【0050】
初期化処理では、装置制御アプリケーション101からサーバアプリケーション303に初期化要求メッセージを送信する。初期化要求メッセージを受信すると、サーバアプリケーション303は、サーバ300のプラットフォーム情報(プラットフォーム識別子)および使用可能なマーシャリング方式リスト(一覧情報)302aを含んだ返信メッセージを返す。
【0051】
なお、この初期化処理中に交換されるメッセージは仕組み上マーシャリングが不可能なため、マーシャリングが不要になるよう、エンディアン、アラインメントの影響を受けない形式で事前に規定されたレイアウトで通信される。
【0052】
ステップS1002において、マーシャリング方式決定部104は、スケルトン302からの返信メッセージ中のプラットフォーム識別子を読み取り、当該識別子を持つプラットフォーム情報がプラットフォーム情報109の中にあるか確認する。
【0053】
図5は初期化要求メッセージに対するサーバからの返信メッセージのレイアウト例を示す図である。図5の例ではビット単位でレイアウトを規定しているためエンディアン、アラインメントの影響を受けない。
【0054】
図5の例では、先頭2ビットにサーバのプラットフォーム識別子を記述している。図5の例では、1〜2ビット目の各ビットの意味は以下のとおりである。
・00:プラットフォームA。
・01:プラットフォームB。
・10:プラットフォームC。
【0055】
3ビット目にサーバのCPUエンディアンを記述している。例えば、3ビット目のビット値0はリトルエンディアンを示し、ビット値1はビッグエンディアンを示す。
【0056】
5〜7ビット目に各マーシャリング方式の使用可否を記述している。図5の例では、5ビット目がNONSERIAL_SAMEORDERの使用可否、6ビット目がSERIALIZE_SAMEORDERの使用可否、7ビット目がSERIALIZE_DIFFORDERの使用可否を示している。ビットが立っている(値が1)場合、対応するマーシャリング方式が当該スケルトンにおいて使用可能であることを意味している。
【0057】
プラットフォームが判明すればCPUエンディアンはおのずと決定するため、3ビット目のエンディアン情報は冗長であるが、未知のプラットフォーム識別子への対応のために情報を持たせてある。図5の例では、9ビット目以降にメッセージ本文が格納される。
【0058】
ステップS1002においてプラットフォーム情報109の中に当該識別子が見つからない場合は、未知のプラットフォームであると判定してステップS1003に進む。既知である場合は後述するようにステップS1004に進む。
【0059】
ステップS1003では、返信メッセージ中の使用可能マーシャリング方式を確認した上で、SERIALIZE_SAMEORDERが使用可能であるか確認する。使用可能である場合は、S1004において、使用するマーシャリング方式をSERIALIZE_SAMEORDERと決定し、処理を終了する。
【0060】
SERIALIZE_SAMEORDERが使用不可である場合は、ステップS1005において、SERIALIZE_DIFFORDERが使用可能であるか確認する。使用可能である場合は、S1006において、使用するマーシャリング方式をSERIALIZE_DIFFORDERと決定し、処理を終了する。
【0061】
SERIALIZE_DIFFORDERも使用不可の場合は、ステップS1007においてエラーとして終了する。
【0062】
このように、サーバのプラットフォームが未知の場合、マーシャリング方式が決定したら、メッセージは常にシリアライズし、返信メッセージ中の相手方エンディアン情報を確認し、必要に応じてエンディアン変換を行う。
【0063】
この初期化メッセージの交換により、装置制御アプリケーション101は、サーバ300のプラットフォームとサーバアプリケーション303に対して使用可能なマーシャリング方式を知ることができる。なお、この初期化メッセージ交換はスタブ202とスケルトン302の間でも行われるが、スタブ202は使用するマーシャリング方式が静的に決定しているため、その決定において返信メッセージ内の情報は特に利用されない。
【0064】
一方、ステップS1002において、プラットフォーム情報109中からプラットフォームを特定できた場合は、ステップS1008に進む。ステップS1008では、マーシャリング方式ストラテジ103の中から、特定できたプラットフォーム(例えば、プラットフォームC)に対応する優先順位情報を取得する。
【0065】
次に、ステップS1009において、マーシャリング方式決定ストラテジ103の中から、優先順位の高いマーシャリング方式から順に、返信メッセージと照合して使用可能であるか評価する。
【0066】
使用可能なマーシャリング方式が見つかった場合は、ステップS1010において、そのマーシャリング方式を使用する方式として決定し、それ以降の評価を打ち切る。一方、使用可能なマーシャリング方式が存在しない場合はステップS1011においてエラーとして終了する。
【0067】
クライアント100は、上述のように決定したマーシャリング方式を使用して、通信データを整形してサーバ300と通信を行う。
【0068】
上記のように、クライアント100は、通信データを整形してサーバ300と通信する際に、サーバ300が対応しているマーシャリング方式の一覧を示す一覧情報をサーバ300に要求する。そして、一覧情報をサーバ300から受信すると、受信した一覧情報に基づいて、使用するマーシャリング方式を決定して、サーバ300と送受信する通信データを、決定したマーシャリング方式で整形する。このため、本実施形態の構成によれば、クライアント100、サーバ300の機能や用途・目的に応じて適切なマーシャリング方式を自動的に決定することが可能である。
【0069】
また、クライアント100は、マーシャリング方式の優先順位を記載したストラテジ情報(優先順位情報)をHD995等の記憶装置に記憶している。そして、受信した一覧情報が示すマーシャリング方式のうち、ストラテジ情報において最も優先順位が高いものを、使用するマーシャリング方式として決定する。このため、本実施形態によれば、適切なストラテジ情報を予め用意しておくことによって、用途に応じた適切なマーシャリング方式を自動的に決定することができる。
【0070】
また、クライアント100は、サーバ300のプラットフォームを識別するプラットフォーム情報をサーバ300から受信し、このプラットフォーム情報にも基づいて、使用するマーシャリング方式を決定する。このため、サーバ300のプラットフォームに応じた適切なマーシャリング方式を自動的に決定することができる。
【0071】
また、ストラテジ情報は、プラットフォームの種類ごとにマーシャリング方式の優先順位を記載している。そして、クライアント100は、受信した一覧情報が示すマーシャリング方式のうち、ストラテジ情報において、サーバ300のプラットフォームの種類に対応する優先順位が最も高いものを、使用するマーシャリング方式として決定する。このため、サーバ300のプラットフォームと、クライアント100の方針に応じて適切なマーシャリング方式を自動的に決定することができる。
【0072】
クライアント100は、ストラテジ選択部102において、サーバ装置との通信ポリシーの選択を受け付ける受付処理を行う。そして、クライアント100は、それぞれ通信ポリシーに対応する複数のストラテジ情報を記憶している。このような構成において、クライアント100は、選択された通信ポリシーに対応するストラテジ情報において、サーバ300のプラットフォームの種類に対応する優先順位が最も高いものを、使用するマーシャリング方式として決定する。このため、クライアント100とサーバ300の間の通信ポリシーに応じて最適なマーシャリング方式を自動的に決定することができる。
【0073】
(マーシャリング方式決定ストラテジ例)
図6はマーシャリング方式決定ストラテジ103の一例を示す図である。マーシャリング方式決定ストラテジは複数用意しておき、装置制御アプリケーションの使用目的に応じて選択できるようにしておく。例えば、サーバの負荷を下げたい場合にはLIGHTEN_SERVERを選択する。また、クライアントアプリケーション201から呼び出される遠隔関数呼び出しを装置制御アプリケーション101から実行したい場合はEMULATE_Bを選択する。本実施形態では、ストラテジ選択部102を用いて、ストラテジ情報108の中から実際に使用するマーシャリング方式決定ストラテジ103を選択する。
【0074】
(プラットフォーム情報例)
図7は、プラットフォーム情報の一例を示す図である。プラットフォーム情報109には、プラットフォームごとに、初期化要求メッセージに対するサーバからの返信メッセージにおける識別子、CPUエンディアン、アラインメント規則が記述される。アラインメント規則はNONSERIAL_SAMEORDERで通信する際のデータ整形に用いられる。
【0075】
(マーシャリング処理例)
図8は本実施形態において、プラットフォームAがクライアントとして動作する場合、クライアント側に発生するマーシャリング処理内容の一例を示す図である。例えば、プラットフォームCのサーバ300にNONSERIAL_SAMEORDERで接続する場合は、通信メッセージ内の項目ごとにバイト順を逆転させるエンディアン変換を行う。また、プラットフォーム情報109に記述されたC式のアラインメント規則にしたがってアラインメント変換を行う。
【0076】
一方、サーバ300側は受信したメッセージを自プラットフォームの規定のレイアウトに戻す処理(アンマーシャリング)が必要である。NONSERIAL_SAMEORDERで通信を行っている場合、受信したメッセージがすでに規定のレイアウトになっているのでアンマーシャリングは必要ない。SERIALIZE_SAMEORDERで通信を行っている場合は、自プラットフォームのアラインメント規則に従ってデータにパディングを挿入する。SERIALIZE_DIFFORDERで通信を行っている場合は、項目ごとにエンディアン変換を行った上で、自プラットフォームのアラインメント規則に従ってデータにパディングを挿入する。したがって、サーバ側では相手プラットフォームに関係なくアンマーシャリングに要する処理コストは、NONSERIAL_SAMEORDER<SERIALIZE_SAMEORDER<SERIALIZE_DIFFORDERとなる。
【0077】
(マーシャリング方式決定優先順位例)
図9は本実施形態において、プラットフォームAがクライアントとして動作し、LIGHTEN_SERVERストラテジを選択した場合のマーシャリング方式決定優先順位の一例を示す図である。前述の理由により、サーバ側の負荷を軽くするというストラテジにおける優先順位は、NONSERIAL_SAMEORDER>SERIALIZE_SAMEORDER>SERIALIZE_DIFFORDERとなる。
【0078】
図10は本実施形態において、プラットフォームAがクライアントとして動作し、LIGHTEN_CLIENTストラテジを選択した場合のマーシャリング方式決定優先順位の一例を示す図である。ここでプラットフォームBに対する決定優先順位について、一例として説明する。クライアントの処理をなるべく軽くするというストラテジから、データアラインメントはサーバ側に合わせるのではなく、シリアライズして送信し、サーバ側でアンマーシャリングを行う。エンディアンはAとBで同じなため、エンディアン変換を行う必要がないので最も優先すべきマーシャリング方式はSERIALIZE_SAMEORDERとなる。さらに他のマーシャリング方式の優先順位を考えると、NONSERIAL_SAMEORDERとSERIALIZE_DIFFORDERのどちらがクライアント負荷を軽くするかはデータアラインメントの差異の大きさに依存し、一概に言えない。本実施形態ではエンディアン変換を行う負荷のほうが、サーバ側のデータアラインメントに合わせてデータを整形する負荷よりも軽いと仮定する。その場合のマーシャリング方式決定優先順位はSERIALIZE_SAMEORDER>SERIALIZE_DIFFORDER>NONSERIAL_SAMEORDERとなる。
【0079】
上記のように、本実施形態によれば、複数のマーシャリング方式選択ストラテジとストラテジ選択部を持つことによって、装置制御アプリケーションの使用目的に最適なマーシャリング方式の選択を自動化することが可能となる。
【0080】
また、実行時にサーバに対して動作プラットフォームと使用可能マーシャリング方式を問い合わせ、実行時にマーシャリング方式を決定する。このため、サーバの動作プラットフォームを変更してもクライアント側の装置制御アプリケーションの再構築や設定変更が不要となる。
【0081】
また、本実施形態では、インタフェースを定義したインタフェース情報を実行時に外部から読み込む。このため、送受信データの項目が変更になってもインタフェース情報を差し替えるだけでよく、装置制御アプリケーションの再構築が不要となる。
【0082】
本実施形態に係る構成は、装置制御アプリケーションが稼動するクライアントにおいて、使用可能な複数のマーシャリング方式のうち一つを決定するためのマーシャリング方式決定部を備える。このため、本実施形態の構成によれば、通信実行時に適切なマーシャリング方式を自動的に決定して実行することができる。
【0083】
また、前記のマーシャリング方式決定部がマーシャリング方式を選択するための具体的な基準を定義したマーシャリング方式決定ストラテジを備える。ここでマーシャリング方式決定ストラテジはマーシャリング方式の決定優先順位を数値化したデータの形式でもよいし、マーシャリング方式の決定ロジックを実装したプログラムモジュールの形式でもよい。マーシャリング方式決定ストラテジは装置制御アプリケーションの使用目的に応じてマーシャリング方式の決定優先順位を変化させたものを複数用意しておく。マーシャリング方式決定ストラテジ群は装置制御アプリケーションに静的に組み込んでもよいし、実行時に外部記憶から読み込んでもよい。このため、ストラテジに応じて最適なマーシャリング方式を自動的に決定させることができる。
【0084】
また、前記の複数のマーシャリング方式決定ストラテジの中から実行時に使用するストラテジを決定するためのストラテジ選択部を備える。ストラテジ選択部は、装置制御アプリケーションの起動引数であってもよいし、装置制御アプリケーションがGUIを持つ場合はコンボボックスのような選択部品を用いてもよい。このため、通信の用途・目的に応じて適切なストラテジ自体を選択して、マーシャリング方式を自動決定させることができる。
【0085】
また、送受信データの項目を定義したインタフェース定義を外部から読み込み、マーシャリング方式決定ストラテジによって決定されたマーシャリング方式に従って送受信データを加工するデータ整形部を備える。このため、自動決定されたマーシャリング方式に基づいて、通信データを整形することができる。
【0086】
また、整形された送信データを制御対象プログラムに送信する通信制御部を備える。このため、整形された通信データをサーバ300と送受信することができる。
【0087】
また、通信開始時において、クライアントからサーバに対して初期化要求メッセージを送信し、サーバからの返信メッセージにはサーバの動作プラットフォームおよび使用可能なマーシャリング方式の一覧が記載され、クライアントに通知される。このため、クライアントはマーシャリング方式の一覧に基づいて最適なマーシャリング方式を決定することができる。
【0088】
上記の仕組みにより、目的に合わせた最適なマーシャリング方式を自動選択することが可能になる。
【0089】
<<その他の実施形態>>
また、本発明の目的は、コンピュータプログラムやコンピュータプログラムを格納したコンピュータ読み取り可能な記録媒体によっても実現可能である。例えば、次のようにすることによっても本発明の目的は達成される。すなわち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明の技術的範囲に含まれる。
【0090】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も本発明の技術的範囲に含まれることは言うまでもない。
【0091】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の各機能が実現される場合も、本発明の技術的範囲に含まれる。
【0092】
なお、本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートで示される処理を実行するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0093】
【図1】装置制御システムの構成例を示す図である。
【図2】インタフェース情報の一例を示す図である。
【図3】マーシャリング方式の一覧を例示する図である。
【図4】通信に使用するマーシャリング方式を決定する処理のフローチャートである。
【図5】初期化要求メッセージに対するサーバからの返信メッセージのレイアウト例を示す図である。
【図6】マーシャリング方式決定ストラテジの一例を示す図である。
【図7】プラットフォーム情報の一例を示す図である。
【図8】マーシャリング処理内容の一例を示す図である。
【図9】マーシャリング方式決定優先順位の一例を示す図である。
【図10】マーシャリング方式決定優先順位の一例を示す図である。
【図11】情報処理装置のハードウェア構成例を模式的に示したブロック図である。

【特許請求の範囲】
【請求項1】
通信データを整形してサーバ装置と通信する情報処理装置であって、
前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信手段と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、
前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、
を備えることを特徴とする情報処理装置。
【請求項2】
マーシャリング方式の優先順位を記載した優先順位情報を記憶する記憶手段をさらに備え、
前記決定手段は、受信した前記一覧情報が示すマーシャリング方式のうち、前記優先順位情報において最も優先順位が高いものを、前記使用するマーシャリング方式として決定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記受信手段は、さらに、前記サーバ装置のプラットフォームを識別するプラットフォーム情報を前記サーバ装置から受信し、
前記決定手段は、さらに前記プラットフォーム情報に基づいて、前記使用するマーシャリング方式を決定する
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記記憶手段が記憶する前記優先順位情報は、プラットフォームの種類ごとにマーシャリング方式の優先順位を記載し、
前記決定手段は、受信した前記一覧情報が示すマーシャリング方式のうち、前記優先順位情報において、前記プラットフォーム情報が示すプラットフォームの種類に対応する優先順位が最も高いものを、前記使用するマーシャリング方式として決定する
ことを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記サーバ装置との通信ポリシーの選択を受け付ける受付手段をさらに備え、
前記記憶手段は、それぞれ通信ポリシーに対応する複数の前記優先順位情報を記憶し、
前記決定手段は、受信した前記一覧情報が示すマーシャリング方式のうち、前記選択を受け付けた通信ポリシーに対応する優先順位情報において、前記プラットフォーム情報が示すプラットフォームの種類に対応する優先順位が最も高いものを、前記使用するマーシャリング方式として決定する
ことを特徴とする請求項4に記載の情報処理装置。
【請求項6】
通信データを整形してサーバ装置と通信する情報処理装置の情報処理方法であって、
前記サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該サーバ装置から受信する受信工程と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定工程と、
前記サーバ装置と送受信する通信データを、前記決定工程において決定されたマーシャリング方式で整形する整形工程と、
を備えることを特徴とする情報処理方法。
【請求項7】
通信データを整形して通信を行う、サーバ装置とクライアント装置とを有する通信システムであって、
前記サーバ装置は、前記クライアント装置からの要求に応じて、当該サーバ装置が対応しているマーシャリング方式の一覧を示す一覧情報を該クライアント装置に送信する送信手段を備え、
前記クライアント装置は、
前記一覧情報を前記サーバ装置から受信する受信手段と、
受信した前記一覧情報に基づいて、使用するマーシャリング方式を決定する決定手段と、
前記サーバ装置と送受信する通信データを、前記決定手段が決定したマーシャリング方式で整形する整形手段と、
を備えることを特徴とする通信システム。
【請求項8】
コンピュータを請求項1から5のいずれか1項に記載の情報処理装置として機能させるためのプログラム。
【請求項9】
請求項8に記載のプログラムを格納したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate