(57)【要約】      （修正有）【課題】アプリケーションサーバフレームワークにおける同期実行・非同期実行制御を容易にして利用し易くする。【解決手段】コントローラ２１１は、同期処理の実行と非同期処理の実行のうち少なくとも一方で処理することを指示されたデータをアプリケーション２０１から入力する。そして、入力されたデータから同期処理のデータを抽出する。そして、同期処理のデータが抽出された場合、同期処理のデータを同期処理し、同期処理された同期処理のデータと非同期処理のデータのうち少なくとも一方を、各データの処理に対応したコンポーネント２２０で実行させる。【選択図】図２
2007114902.tif 000002
【特許請求の範囲】
【請求項１】
同期処理の実行と非同期処理の実行のうち少なくとも一方で処理することを指示されたデータを入力する入力手段と、
前記入力手段によって入力されたデータから同期処理のデータを抽出する抽出手段と、
前記抽出手段によって同期処理のデータが抽出された場合、前記同期処理を実行する処理手段と、
前記処理手段によって実行された同期処理のデータと前記抽出手段によって抽出された非同期処理のデータのうち少なくとも一方を、各データの処理に対応したコンポーネントで実行させる制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記データは、複数のスレッドにより処理され、前記処理手段は、前記複数のスレッドをそれぞれ保持し、各入力データをそれぞれのタイミングにおいて各スレッドに対応したコンポーネントに実行させることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データは、複数のスレッドにより処理され、前記処理手段は、前記複数のスレッドをそれぞれ保持し、各前記データをそれぞれのタイミングにおいて各前記データに対応したサーバに送り、前記サーバからは受信した前記データの実行結果を受け取ることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
同期処理の実行と非同期処理の実行のうち少なくとも一方で処理することを指示されたデータを入力する入力工程と、
前記入力工程によって入力されたデータから同期処理の処理のデータを抽出する抽出工程と、
前記抽出工程によって同期処理のデータが抽出された場合、前記同期処理を実行する処理工程と、
前記処理工程によって同期処理された同期処理のデータと前記抽出工程によって抽出された非同期処理のデータのうち少なくとも一方を、各処理のデータに対応したコンポーネントで実行させる制御工程と、
を含むことを特徴とする情報処理方法。
【請求項５】
前記データは、複数のスレッドにより処理され、前記処理工程は、前記複数のスレッド
をそれぞれ保持し、各入力データをそれぞれのタイミングにおいて各スレッドに対応した
コンポーネントに実行させることを特徴とする請求項４に記載の情報処理方法。
【請求項６】
前記データは、複数のスレッドにより処理され、前記処理工程は、前記複数のスレッドをそれぞれ保持し、各前記データをそれぞれのタイミングにおいて各前記データに対応したサーバに送り、前記サーバからは受信した前記データの実行結果を受け取ることを特徴とする請求項４または５に記載の情報処理方法。
【請求項７】
請求項４〜６のいずれか一つに記載の情報処理方法をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンポーネントにおける処理を制御する情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
近年、コンポーネントの開発効率を高めることを目的として、ＨＰＣ（ハイパフォーマンスコンピューティング）環境の提供を視野に入れた開発環境の提供が進んでいる。この開発環境として、サーバ・クライアントにより呼び出されるアプリケーションサーバフレームワークがある。
【０００３】
このフレームワークは、厳密にはＪＡＶＡ（登録商標）プログラムの生成および管理を行う超Ｌｉｇｈｔｗｅｉｇｈｔコンテナというものに分類されており、単独で各種アプリケーションを構築するのではなく、ＥＪＢを用いたＷｅｂアプリケーションフレームワークやデスクトップアプリケーションの場合は、ＳｗｉｎｇなどのＡＰＩと組み合わせて利用するのが一般的である。このフレームワークは、Ｊ２ＥＥの機能に依存しているわけではないので、クライアントマシン上で動作するスタンドアロンアプリケーションやアプレットなどから利用することも可能である。
【０００４】
こういった問題点を解決するため、従来技術として、ＪＡＶＡ（登録商標）の開発環境であるＪ２  ＳＥ５（Ｊａｖａ  ２  Ｐｌａｔｆｏｒｍ  Ｓｔａｎｄａｒｄ  Ｅｄｉｔｉｏｎ  ５．０）では、Ｃｏｎｃｕｒｒｅｎｃｙ  ＵｔｉｌｉｔｉｅｓというＡＰＩ群が用意され、これによりある程度の簡略化は実現されていた。
【０００５】
また、一般にデザインパターンと呼ばれるアルゴリズムのパターン群が広く知られており、これらはプログラミングにおける典型的な問題の効率的な解決策を示している。さらに、先述したＨＰＣ環境も視野に入れたデザインパターンも存在している（たとえば、非特許文献１参照。）。
【０００６】
【非特許文献１】結城浩、「Ｊａｖａ言語で学ぶデザインパターン入門  マルチスレッド編」、ｐ．１４９−１６３、２００２年
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、以上のようなフレームワークを採用する場合、いくつかの問題が挙げられる。まず、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）やサーバ・クライアントモデルのネットワークアプリケーション開発などでは、同期実行・非同期実行の制御機構が必要となる。しかし、非同期実行を行うためには、アプリケーション開発者は、別スレッドを作成し、その別スレッドの上で何らかの処理を行う必要があった。また、処理結果をアプリケーションに出力するためのリスナー（Ｌｉｓｔｅｎｅｒ）までを作成する必要があり、手間がかかっていた。
【０００８】
また、コンポーネント（Ｃｏｍｐｏｎｅｎｔ）の開発者は、同時生成されるインスタンスの数を意識してコンポーネントを開発する必要があり手間であった。また、コンポーネントの利用者は、コンポーネントの開発者が想定した範囲を超えた利用ができなかった。
【０００９】
分散ネットワークを実現するためには、アプリケーション開発者はネットワーク関連のプログラミング知識を必要とされ、難しかった。また、分散ネットワーク環境に、処理速度の遅いマシンと速いマシンが混在すると、全体として処理速度の遅いマシンに足を引っ張られることになり、全体としてのパフォーマンスが低下するという問題があった。
【００１０】
この発明は、上述した従来技術による問題点を解消するため、利用しやすくパフォーマンスの高いフレームワークを備えた情報処理装置、情報処理方法および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、請求項１の発明にかかる情報処理装置は、同期処理の実行と非同期処理の実行のうち少なくとも一方で処理することを指示されたデータを入力する入力手段と、前記入力手段によって入力されたデータから同期処理のデータを抽出する抽出手段と、前記抽出手段によって同期処理のデータが抽出された場合、前記同期処理を実行する処理手段と、前記処理手段によって実行された同期処理のデータと前記抽出手段によって抽出された非同期処理のデータのうち少なくとも一方を、各処理のデータに対応したコンポーネントで実行させる制御手段と、を備えたことを特徴とする。
【００１２】
この請求項１の発明によれば、同期実行・非同期実行の処理をフレームワーク側で吸収することにより、同一のコンポーネントを必要に応じて同期実行・非同期実行を呼び分けることができる。
【００１３】
また、請求項２の発明にかかる情報処理装置は、請求項１に記載の発明において、前記データは、複数のスレッドにより処理され、前記処理手段は、前記複数のスレッドをそれぞれ保持し、各入力データをそれぞれのタイミングにおいて各スレッドに対応した
コンポーネントに実行させることを特徴とする。
【００１４】
この請求項２の発明によれば、プーリングするコンポーネントのインスタンスの数をコンポーネント毎のプロパティファイルで制御できる。これにより、コンポーネントの利用者は、実装に依存せずにインスタンスの数を制御することができる。
【００１５】
また、請求項３の発明にかかる情報処理装置は、請求項１または２に記載の発明において、前記データは、複数のスレッドにより処理され、前記処理手段は、前記複数のスレッドをそれぞれ保持し、各前記データをそれぞれのタイミングにおいて各前記データに対応したサーバに送り、前記サーバからは受信した前記データの実行結果を受け取ることを特徴とする。
【００１６】
請求項３の発明によれば、同期・非同期の制御をスタンドアローンに近い構成でネットワーク対応することができる。また、サーバ側のコンポーネントをスタンドアローンと同様に分散して処理することができる。
【００１７】
請求項４の発明にかかる情報処理方法は、同期処理の実行と非同期処理の実行のうち少なくとも一方で処理することを指示されたデータを入力する入力工程と、前記入力工程によって入力されたデータから同期処理のデータを抽出する抽出工程と、前記抽出工程によって同期処理のデータが抽出された場合、前記同期処理のを実行する処理工程と、前記処理工程によって実行された同期処理のデータと前記抽出工程によって抽出された非同期処理のデータのうち少なくとも一方を、各処理のデータに対応したコンポーネントで実行させる制御工程と、含むことを特徴とする。
【００１８】
この請求項４の発明によれば、同期実行・非同期実行の処理をフレームワーク側で吸収することにより、同一のコンポーネントを必要に応じて同期実行・非同期実行を呼び分けることができる。
【００１９】
請求項５の発明にかかる情報処理方法は、請求項４に記載の情報処理方法において、前記データは、複数のスレッドにより処理され、前記処理工程は、前記複数のスレッドをそれぞれ保持し、各入力データをそれぞれのタイミングにおいて各スレッドに対応したコンポーネントに実行させることを特徴とする。
【００２０】
この請求項５の発明によれば、プーリングするコンポーネントのインスタンスの数をコンポーネント毎のプロパティファイルで制御できる。これにより、コンポーネントの利用者は、実装に依存せずにインスタンスの数を制御することができる。
【００２１】
請求項６の発明にかかる情報処理方法は、請求項４または５に記載の情報処理方法において、前記データは、複数のスレッドにより処理され、前記処理工程は、前記複数のスレッドをそれぞれ保持し、各前記データをそれぞれのタイミングにおいて各前記データに対応したサーバに送り、前記サーバからは受信した前記データの実行結果を受け取ることを特徴とする。
【００２２】
請求項６の発明によれば、同期・非同期の制御をスタンドアローンに近い構成でネットワーク対応することができる。また、サーバ側のコンポーネントをスタンドアローンと同様に分散して処理することができる。
【００２３】
請求項７の発明にかかる情報処理プログラムによれば、請求項４〜６に記載の情報処理方法をコンピュータに実行させることができる。
【発明の効果】
【００２４】
本発明にかかる情報処理装置、情報処理方法および情報処理プログラムによれば、同期処理・非同期処理の制御にあたって余計な処理を必要とせず、利用しやすくパフォーマンスの高いフレームワークを提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２５】
以下に添付図面を参照して、この発明による情報処理装置、情報処理方法および情報処理プログラムの実施の形態を詳細に説明する。
【００２６】
（実施の形態）
図１は、この発明の実施の形態による情報処理装置のハードウエア構成の一例を示すブロック図である。図中、ＣＰＵ１０１は装置全体を制御する。ＲＯＭ１０２は基本入出力プログラムを記憶する。ＲＡＭ１０３はＣＰＵ１０１のワークエリアとして使用される。また、ＨＤＤ（ハードディスクドライブ）１０４はＣＰＵ１０１の制御にしたがってＨＤ（ハードディスク）１０５に対するデータのリード／ライトを制御する。ＨＤ１０５はＨＤＤ１０４の制御にしたがって書き込まれたデータを記憶する。
【００２７】
また、ＦＤＤ（フレキシブルディスクドライブ）１０６はＣＰＵ１０１の制御にしたがってＦＤ（フレキシブルディスク）１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、着脱自在であり、ＦＤＤ１０６の制御にしたがって書き込まれたデータを記憶する。また、ＣＤ−ＲＷドライブ１０８はＣＰＵ１０１の制御にしたがってＣＤ−ＲＷ（または、ＣＤ−Ｒ、ＣＤ−ＲＯＭ）１０９に対するデータのリード／ライトを制御する。ＣＤ−ＲＷ１０９は着脱自在であり、ＣＤ−ＲＷドライブ１０８の制御にしたがって書き込まれたデータを記憶する。
【００２８】
また、ディスプレイ１１０はカーソル、メニュー、ウィンドウ、あるいは文字や画像などの各種データを表示する。キーボード１１１は文字、数値、各種指示などの入力のための複数のキーを備える。マウス１１２は各種指示の選択や実行、処理対象の選択、マウスポインタの移動などを行う。
【００２９】
また、ネットワークＩ／Ｆ１１３は、通信ケーブル１１４を介してＬＡＮやＷＡＮなどのネットワークに接続され、当該ネットワークとＣＰＵ１０１とのインターフェースとして機能する。バス１２０は上記各部を接続する。
【００３０】
図２は、同期・非同期を管理するための待ち行列の制御機構の構成を説明するブロック図である。このシステムは、指示処理部２００、フレームワーク２１０、コンポーネント２２０によって構成されている。指示処理部２００からのコンポーネント２２０への処理要求をフレームワーク２１０が管理する形になっている。図２において、指示処理部２００、フレームワーク２１０、コンポーネント２２０は、それぞれ機能的な構成を示しており、図１に示したＣＰＵ１０１が、ＲＯＭ１０２から読み出されてプログラムに基づいて、ＲＡＭ１０３をワークエリアとして使用することにより実行する。
【００３１】
指示処理部２００は、アプリケーション２０１およびリスナー２０２によって構成されている。アプリケーション２０１は、フレームワーク２１０にデータを出力する。そして、フレームワーク２１０を介して実行された結果が戻ってくるので、リスナー２０２は、その結果を受け取ってアプリケーション２０１に通知する。
【００３２】
フレームワーク２１０は、コントローラ２１１、キュー２１２、リスナー２１３によって構成される。コントローラ２１１は、ＡＰＩによって構成され、アプリケーション２０１からのデータを受け取る。データは複数のスレッドにより構成される。コントローラ２１１は、受け取ったスレッドをキュー２１２に入力し、順次コンポーネント２２０に出力する。キュー２１２は、コントローラ２１１からのスレッドを保持する。同期の場合は一定のタイミングが経過したら、非同期の場合はリスナー２１３からのフィードバックが入力されたら、コンポーネント２２０に出力する。
【００３３】
コンポーネント２２０は、処理を受け取って実行する。非同期処理の場合は、処理後にリスナー２１３に、処理の終了を通知する。そして、リスナー２１３が、リスナー２０２に通知する。同期処理の場合は、リスナー２１２がタイミングを管理し、コントローラ２１１に通知する。
【００３４】
コントローラ２１１は、同期・非同期用ＡＰＩを介して適切にスレッド管理を実行する。同期呼び出しは、非同期処理を同期化することで実現する。同期呼び出しの場合は、結果をリスナー２１３へコールバックする。同期呼び出しの場合：結果をコントローラ２１１でフックしてアプリケーション２０１へ返す。
【００３５】
図３は、同期・非同期を管理するための待ち行列の制御処理を説明するフローチャートである。図３を用いて、図２のフレームワーク２１０の制御処理を説明する。まず、アプリケーション２０１からの処理の呼び出しにより、処理が開始する。コントローラ２１１は、この呼び出しを受けて、非同期処理のためにキュー２１２にプッシュ（ｐｕｓｈ）処理を実行する（ステップＳ３０１）。なお、ここではキュー２１２のうち、非同期処理の待ち行列にプッシュする。
【００３６】
次に、この処理が同期処理か否かを判定する（ステップＳ３０２）。同期処理でない場合（ステップＳ３０２：Ｎｏ）、処理をキュー２１２から取り出し、ＦＩＦＯを用いることによりポップ（ｐｏｐ）処理を実行する（ステップＳ３０３）。なお、ここではキュー２１２のうち、非同期処理の待ち行列にプッシュされていたスレッドの処理をプッシュする。同期処理の場合（ステップＳ３０２：Ｙｅｓ）、同期化のため、キュー２１２にプッシュ処理を実行する（ステップＳ３０５）。なお、ここではキュー２１２のうち、同期処理の待ち行列にプッシュする。
【００３７】
そして、キュー２１２において、処理が行列の先頭であるか否かを判定する（ステップＳ３０６）。行列の先頭の場合（ステップＳ３０６：Ｙｅｓ）、ステップＳ３０３に進む。行列の先頭でない場合（ステップＳ３０６：Ｎｏ）、終了通知まで待機して、ＬＩＦＯを用いることによりポップ処理を実行する（ステップＳ３０７）。なお、ここではキュー２１２のうち、同期処理の待ち行列にプッシュされていた処理の実行をポップする。そして、ステップＳ３０６に戻る。ステップＳ３０３の実行後、取り出した処理をコンポーネント２２０で実行し、結果を返す（ステップＳ３０４）。それにより、一連の処理を終了する。終了後、結果が出力される。
【００３８】
以上のように、同期実行・非同期実行の処理をフレームワーク側で吸収することにより、アプリケーションの開発者は同一のコンポーネントを必要に応じて同期実行・非同期実行を呼び分けることができるようになる。これは、フレームワーク２１０の内部で、別スレッドの管理や入力データの待ち行列の管理を行うことにより実現されている。フレームワーク２１０では、すべての処理は非同期に行われるが、非同期処理をフックすることにより、同期実行をサポートしている。
【００３９】
図４は、コンポーネントのインスタンスをプーリングする機構の構成を説明するブロック図である。このシステムは、指示処理部４００、フレームワーク４１０、コンポーネント４２０、コンポーネント４２１によって構成されている。図２と異なり、コンポーネントが１つではなく複数を含む構成となっており、この複数のコンポーネントにそれぞれ処理させる。指示処理部４００からのコンポーネント４２０およびコンポーネント４２１への処理要求をフレームワーク４１０が管理する。図４において、指示処理部４００、フレームワーク４１０、コンポーネント４２０、コンポーネント４２１は、それぞれ機能的な構成を示しており、図１に示したＣＰＵ１０１が、ＲＯＭ１０２から読み出されてプログラムに基づいて、ＲＡＭ１０３をワークエリアとして使用することにより実行する。
【００４０】
指示処理部４００は、アプリケーション４０１およびリスナー４０２によって構成されている。アプリケーション４０１は、フレームワーク４１０にデータを出力する。そして、フレームワーク４１０を介して実行された結果が戻ってくるので、リスナー４０２は、その結果を受け取ってアプリケーション４０１に通知する。
【００４１】
フレームワーク４１０は、コントローラ４１１、キュー４１２、ダイレクトリスナー４１３、ソートリスナー４１４によって構成される。コントローラ４１１は、ＡＰＩによって構成され、アプリケーション４０１からのデータを受け取る。データは複数のスレッドにより構成される。コントローラ４１１は、受け取ったスレッドをキュー４１２に入力する。キュー４１２は、コントローラ４１１によって入力されたスレッドを保持する。
【００４２】
そして、スレッドがキュー４１２からコンポーネント４２０またはコンポーネント４２１に出力される。図４の場合、インスタンスは複数設定されており、インスタンス数に応じた数のコンポーネントが生成されるので、スレッドも、コンポーネント４２０〜４２１のそれぞれ対応したところに出力される。設定されたインスタンス数のコンポーネントが生成されプーリングされる。また、キュー４１２に積まれたスレッドは、各コンポーネントにより自律的に処理される。
【００４３】
コンポーネント４２０〜４２１は、スレッドを受け取り、処理を実行する。非同期処理の場合は、処理後にソートリスナー４１３に、処理の終了を通知する。そして、ソートリスナー４１３が、リスナー４０２に通知する。ダイレクトリスナー４１２は、処理結果を終了順でリスナー４０２へコールバックする。ソートリスナー４１３は、処理結果を依頼順（順番保証）でリスナー４０２へコールバックする。
【００４４】
図５は、コンポーネントのインスタンスをプーリングする制御処理を説明するフローチャートである。図５を用いて、図４のフレームワーク４１０の制御処理を説明する。まず、データを非同期処理のためにキュー４１２にプッシュする（ステップＳ５０１）。次に、このデータが同期処理か否かを判定する（ステップＳ５０２）。同期処理でない場合（ステップＳ５０２：Ｎｏ）、ステップＳ５０４に進む。同期処理の場合（ステップＳ５０２：Ｙｅｓ）、キュー４１２において待ち行列を用いて同期化処理を実行する（ステップＳ５０３）。
【００４５】
次に、キュー４１２から処理を取り出し、ＦＩＦＯでプッシュされていた処理をポップする（ステップＳ５０４）。そして待機中スレッドで処理を実行する（ステップＳ５０５）。そして、処理を実行して結果を返す（ステップＳ５０６）。すなわち、コンポーネント４２０〜４２１のうち各データに対応するところでスレッドの処理を実行する。結果は、ソートリスナー４１４に返される。次に、処理結果について、キャッシュソートを実行して出力する（ステップＳ５０７）。そして、一連の処理を終了する。終了後、結果が出力される。
【００４６】
以上のように、フレームワーク４１０により生成されたコンポーネントは、フレームワーク４１０内にプーリングされることにより、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）やサーバ・クライアントモデルのネットワークアプリケーションなどにおいて効率的に処理できる。フレームワーク４１０では、プーリングするコンポーネントのインスタンスの数をコンポーネント毎のプロパティファイルで制御できる。これにより、コンポーネントの利用者は、実装に依存せずにインスタンスの数を制御できる。
【００４７】
図６は、分散ネットワークを実現するためのエージェント機構の構成を説明するブロック図である。このシステムは、指示処理部６００、クライアントフレームワーク６１０、分散フレームワーク６２０、分散フレームワーク６３０によって構成されている。指示処理部６００からの分散フレームワーク６２０および分散フレームワーク６３０への処理要求を、クライアントフレームワーク６１０が管理する。図６において、指示処理部６００、クライアントフレームワーク６１０、分散フレームワーク６２０、分散フレームワーク６３０は、それぞれ機能的な構成を示しており、図１に示したＣＰＵ１０１が、ＲＯＭ１０２から読み出されてプログラムに基づいて、ＲＡＭ１０３をワークエリアとして使用することにより実行する。
【００４８】
指示処理部６００は、アプリケーション６０１およびリスナー６０２によって構成されている。アプリケーション６０１は、クライアントフレームワーク６１０にデータを出力する。そして、クライアントフレームワーク６１０を介して実行された結果が戻ってくるので、リスナー６０２は、その結果を受け取ってアプリケーション６０１に通知する。
【００４９】
クライアントフレームワーク６１０は、コントローラ６１１、キュー６１２、ダイレクトリスナー６１３、ソートリスナー６１４によって構成される。コントローラ６１１は、ＡＰＩによって構成され、アプリケーション６０１からのデータを受け取る。データは複数の処理のデータにより構成される。コントローラ６１１は、受け取った処理をキュー６１２に入力し、順次分散フレームワーク６２０および分散フレームワーク６３０に出力する。キュー６１２は、コントローラ６１１によって入力された処理のデータを保持する。そして、処理が、キュー６１２から分散フレームワーク６２０または分散フレームワーク６３０の処理に対応するところに出力される。
【００５０】
分散フレームワーク６２０および６３０は、処理を受け取って実行する。分散フレームワーク６２０は、サーバ６２１、コンポーネント６２２〜６２３によって構成されている。分散フレームワーク６３０も同様の構成である。サーバ６２１は、キュー６１２から処理要求を受け取り、コンポーネント６２２〜６２３の対応するものに出力する。コンポーネント６２２〜６２３は、それぞれ処理を実行してサーバ６２１に返す。そして、処理の終了をリスナー６１３に返す。そして、リスナー６１３は、処理結果を受け取るとリスナー６０２に通知する。
【００５１】
この図６に示した分散ネットワークを実現するためのエージェント機構の処理は、図５に示したフローチャートと同様である。図５においては複数のコンポーネントへの処理を制御していたが、ここでは複数のサーバに対して制御を実行する。各サーバにおいてはそれぞれ複数のコンポーネントを持つ場合があり、各サーバにおいて処理を制御する。
【００５２】
このように、スタンドアローンとほとんど同じ構成でネットワーク対応が可能である。また、サーバ側のコンポーネントをスタンドアローンと同様に分散可能である。クライアント側では、クライアント側でのＡＰＩ実装の変更は最小限にする。一方、サーバ側では、スタンドアローン構成と同じものをサーバ起動する。
【００５３】
以上のように、ネットワーク関連処理をすべてクライアントフレームワーク６１０および分散フレームワーク６２０〜６３０側で吸収する。それにより、アプリケーション６０１の開発者は同一のコンポーネントを必要に応じてスタンドアローンとしても、分散ネットワークとしても処理することができる。また、コンポーネント６２２〜６２３毎に入力データをキュー６１２で一括管理することにより、処理性能が異なるマシンが混在する環境においても、優れたパフォーマンスを示すことができる。
【００５４】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【００５５】
以上のように、本発明にかかる情報処理装置、情報処理方法および情報処理プログラムは、パフォーマンスの高いナレッジコンポーネントの利用にあたって有用である。
【図面の簡単な説明】
【００５６】
【図１】この発明の実施の形態による情報処理装置のハードウエア構成の一例を示すブロック図である。
【図２】同期・非同期を管理するための待ち行列の制御機構の構成を説明するブロック図である。
【図３】同期・非同期を管理するための待ち行列の制御処理を説明するフローチャートである。
【図４】コンポーネントのインスタンスをプーリングする機構の構成を説明するブロック図である。
【図５】コンポーネントのインスタンスをプーリングする制御処理を説明するフローチャートである。
【図６】分散ネットワークを実現するためのエージェント機構の構成を説明するブロック図である。
【符号の説明】
【００５７】
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  ＨＤＤ
１０５  ＨＤ
１０６  ＦＤＤ
１０７  ＦＤ
１０８  ＣＤ−ＲＷドライブ
１０９  ＣＤ−ＲＷ
１１０  ディスプレイ
１１１  キーボード
１１２  マウス
１１３  ネットワークＩ／Ｆ
１１４  通信ケーブル
１２０  バス
２００  指示処理部
２０１  アプリケーション
２１０  フレームワーク
２１１  コントローラ
２１２  キュー
２２０  コンポーネント
【図１】
2007114902.tif 000003
【図２】
2007114902.tif 000004
【図３】
2007114902.tif 000005
【図４】
2007114902.tif 000006
【図５】
2007114902.tif 000007
【図６】
2007114902.tif 000008