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 확장자(extension)
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 입문 (제1회)
  2. CORBA Component Model 입문 ( 제니회)
  3. 「 CORBA Component Model Tutorial 」 OMG Document ccm/02-04-01
  4. Lightweight CORBA Component Model ptc/04-06-10

ダウンロード

最新バージョン : 2.1.0-RELESE

統計

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

OpenRTM@Github

OpenRTM-aist GitHubサイト

ROS

Robot Operating System

Choreonoid

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

DAQ-Middleware

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

産総研が提供するRTC集

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