CCM

CCM (CORBA Component Model)

CCM は CORBA のサーバーサイドのコンポーネントモデルを提供するとともに、CORBA 環境上に EJB のようなコンポーネント環境を構築するためのフレームワークを提供する。

コンポーネント

コンポーネントの定義には様々あり、一般的に「再利用可能なソフトウェアの単位」であると言われている。 M.Collins-Cope らにある定義では、以下の4つの要件を満たすものをコンポーネントと呼び、この定義が広く用いられているようである。

自己完備性/自己記述性 独立した機能単体として存在し、 宣言的にインターフェースが定義されている。また、動作や操作に 標準的な方法が定められており、そのためのメカニズムが明確に定義されている。
動的な機能追加、変更が可能 コンポーネントの外部からプロパティやイベントなどの設定、変更ができる。また、そのための標準的な方法が与えられている。
インターフェースの透明性 インターフェース定義に基づいて、バイナリレベルでの連携方法が与えられている。
他のコンポーネントとの疎結合の支援 他のコンポーネント との直接的な通信経路を持たず、コンテナやアセンブリ環境などのフレームワークを介して接続される。

『 CORBA components が開く新しい分散環境 』 鈴木 純一/著, ドクター・ドブズ・ジャーナル日本語版 1999 年 4 月号、pp.150-158.

コンポーネントモデル

Facet コンポーネントのインターフェースを外部に公開することを示します。クライアントは、公開されたインターフェースをイントロスペクションによって獲得し、インターフェースがもつメソッドを呼び出すことができます。
Receptacle 他のコンポーネントがもつインターフェースを接続できることを示します。Receptacle のタイプとしては、一つのインターフェースを接続できる Simplex Receptacle と複数のインターフェースを同じ Receptacle に接続できる Multiplex Receptacle が存在します。
Event Source 特定のイベントを発行することを示します。イベント通知のタイプとしては、1対多の通知ができる Publisher と同時にひとつしか通知できない Emitter が存在します。
Event Sink 特定のイベントを受け取ることを示します。
Attribute コンポーネントが持つ属性を示します。通常の CORBA オブジェクトの属性と同じ意味を持っています。

CIDL のための追加されたキーワード

  • component
  • consumes
  • emits
  • eventtype
  • finder
  • getraises
  • home
  • import
  • multiple
  • primarykey
  • provides
  • publishes
  • setraises
  • typeid
  • typeprefix
  • uses

Deployment と Configuration のための XMLファイル

Descriptor 拡張子
Component Package Descriptor: .cpd
Component Implementation Descriptor: .cid
Implementation Artifact Descriptor: .iad
Component Interface Descriptor (CORBA Component Descriptor): .ccd
Component Domain Descriptor .cdd
Deployment Plan Descriptor (Component Deployment Plan): .cdp
Top Level Package Descriptor package.pcd
ZIP file containing all of above + binaries .cpk

コンポーネントの宣言

CCM のコンポーネントは、拡張 IDL に基づき component 宣言子を用いて以下の構文に従って宣言される。

 component <component_name> [ : <base_name> ]
     [ supports <interface_name> [, <interface_name>] * ]
 {
      <attribute declaration> *;
      <port declaration> *;
 };  

component に続く <component_name> は宣言するコンポーネントの名前を記述する。 オプション的な宣言として、コンポーネントは一つのコンポーネント( <base_name> )を継承することがでる。 また、support 宣言子により同時にいくつかの IDL で定義したインターフェース( <interface_name> )を持つこともでき、これらは supported interface と呼ばれる。 コンポーネントの本体には、コンポーネントの属性( <attribute declaration> ) や Ports ( <port declaration> )を宣言することができる。

この宣言は IDL2 と等価なインターフェース equivalent interface として以下のように宣言するのと等価である。

 interface <component_name>
     : Components::CCMObject, [<base_name>, <interface_name>, <interface_name>] * ]
 {
 };  

したがって、<base_name> はコンポーネント名であり、<interface_name> はインターフェース名として区別されるが、equivalent interface においてこれらはすべて interface となり、これらの継承に帰着される。

例えば、以下のように Hello インターフェースをもった HelloWorld コンポーネントを宣言することができます。

参考文献

  1. CORBA Component Model 入門 (第一回)
  2. CORBA Component Model 入門 (第ニ回)
  3. 『 CORBA Component Model Tutorial 』 OMG Document ccm/02-04-01

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2159
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク