CORBAとは? わかりやすく解説

Common Object Request Broker Architecture

(CORBA から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/01/13 14:36 UTC 版)

Common Object Request Broker Architecture(コモン オブジェクト リクエスト ブローカー アーキテクチャー、略称CORBAコルバ))とは、Object Management Group (OMG) が定義した標準規格であり、様々なコンピュータ上で様々なプログラミング言語で書かれたソフトウェアコンポーネントの相互利用を可能にする(分散オブジェクト技術)ものである。

概要

CORBA では、プログラムコードをその機能や呼び出し方の情報と共に一種のカプセル化を行う。このカプセル化されたオブジェクトは、コンピュータネットワークを経由して他のプログラム(あるいは CORBA オブジェクト)から呼び出すことができる。

CORBA はインタフェース記述言語 (IDL) を使ってこのようなオブジェクトの外部インタフェースを記述する。そして、IDLから他の特定の実装言語(C++Java)への「マッピング」を行う。CORBAとしてマッピングが標準的に用意されているのは、AdaC、C++、LISPSmalltalk、Java、COBOLPL/IPython である。標準に組み込まれていないが、PerlPHPRubyVisual BasicTclDelphi へのマッピングを実装したObject Request Brokerが存在する。

下図はCORBA基盤で生成されたコードが使われる様子を示したものである。

この図は非常に単純化してある。通常、サーバ側には Portable Object Adapter があり、呼び出しをローカルなサーバントに渡すか(負荷分散のために)他のサーバに転送する。また、サーバ側にもクライアント側にも後述するインターセプターが存在することが多い。

ユーザーに対して言語やプラットフォームに依存しない遠隔手続き呼出し (RPC) 仕様を提供する以外に、CORBAはトランザクションセキュリティに必要な一般的サービスを定義している。

主な機能・特徴

Objects by Value (OBV)

リモートオブジェクトとは別に、CORBAとRMI-IIOPはOBVの概念を定義している。オブジェクト内のメソッドのコードはデフォルトではローカルに実行される。OBVをリモートから受信する場合、必要なコードが両者に事前に備えられているか、送信側から動的にダウンロードしなければならない。このため、コードをダウンロードできるURL群の(空白で区切った)リストである Code Base が OBV を定義するレコードに含まれている。OBV はリモートメソッドを持つこともできる。

OBV は転送される際に付属して転送されるフィールドを持つことがある。そのフィールドにはOBV自体、構成リスト、木構造やグラフなどが含まれる。OBVにはクラス階層があり、多重継承や抽象クラスもある。

CORBA Component Model (CCM)

CORBA Component Model (CCM) は CORBA 仕様の追加要素である。 CORBA 3 で導入された。これはCORBAコンポーネントの標準アプリケーションフレームワークを記述したものである。それはちょうど「言語に依存しない」Enterprise JavaBeans(EJB)の拡張版である。「ポート」と呼ばれる明確な名前付きのインタフェースを通してサービスのやりとりができる実体を抽象化したものである。

CCM にはコンポーネントコンテナがあり、その中にソフトウェアコンポーネントが置かれる。コンテナは内包するコンポーネントに各種サービスを提供する。例えば、通知、認証、永続性、トランザクション管理などがある。これらは分散システムには必須のサービスであり、その実装をソフトウェアコンポーネントからコンテナに移すことによってコンポーネントの複雑さは劇的に軽減される。

ポータブルなインターセプター

ポータブルなインターセプターとは、CORBAやRMI-IIOPが使用するCORBAシステムの最重要機能の「フック」である。CORBA標準では以下のようなタイプのインターセプターを定義している:

  1. IORインターセプターは、カレントサーバが示すリモートオブジェクトへの新たな参照の作成を調停する。
  2. クライアントインターセプターは、クライアント側でリモートメソッドの呼び出しの調停を行う。そのオブジェクトのサーバントが同じサーバに存在すれば、そのメソッドが呼び出されるようにローカル呼び出しが調停される。
  3. サーバインターセプターは、サーバ側のリモートメソッド呼び出しへの対応を調停する。

インターセプターは、送信されるメッセージに何らかの情報や生成したIORを付加することができる。それらの情報はリモート側の対応するインターセプターが読み取る。インターセプターは例外を送ったり、メッセージを他のターゲットに転送したりといったことも行う。

General InterORB Protocol (GIOP)

GIOPとは、Object Request Broker(ORB)同士が通信する際の抽象プロトコルである。このプロトコルに関する標準はObject Management Group(OMG)が管理保守している。GIOPアーキテクチャはいくつかの実際のプロトコルを提供している:

  1. Internet InterORB Protocol (IIOP) - CORBA ORB 同士の通信プロトコルであり、インターネット上のGIOPの実装である。従って、GIOPメッセージとTCP/IPとの橋渡しをする。
  2. SSL InterORB Protocol (SSLIOP) - SSL 上のIIOP。暗号化認証機能を提供する。
  3. HyperText InterORB Protocol (HTIOP) - HTTP上のIIOP。プロキシを透過的に迂回するなどの機能がある。
  4. その他いろいろ…

Data Distribution Service (DDS)

Object Management Group (OMG) は関連する標準規格としてData Distribution Service (DDS) 標準を制定している。DDS は出版-購読(publish-subscribe)型データ配信モデルであり、対照的にCORBAはリモート呼び出しオブジェクトモデルである。

VMCID (Vendor Minor Codeset ID)

標準CORBAは例外のサブカテゴリーを明示するためにマイナーコードを明記している。マイナー例外コードは unsigned long 型で、上位20ビットは “Vendor Minor Codeset ID”(VMCID)、下位12ビットがマイナーコード本体である。標準例外のマイナーコードには OMG が予約する VMCID の付与された形で unsigned long 型の定数 CORBA::OMGVMCID として定義される。従って、マイナー例外コードは OMGVMCID と OR された形で ex_body 構造体に格納されている。

マイナーコードの設定はベンダー依存である。VMCID の割り当て要求は、tagrequest@omg.org に電子メールを送ればよい。VMCID のうち、0 と 0xfffff は実験用の予約されている。また、OMGVMCID と 1 から 0xf までの VMCID は OMG が予約している。

CorbaLoc

CorbaLoc とは、Corba Location の略であり、CORBA オブジェクトへの参照を文字列で表したものである。その見た目はURLによく似ている。CORBA製品には OMGが定義した二種類のURL、"corbaloc:" と "corbaname:" をサポートしている。その目的は、IORを持つ場所を指定するに当たって、人間がそれを読んで編集できる方法を提供することである。

CobaLoc の例を以下に示す:

corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root

CORBA製品はオプションとして "http:"、"ftp:"、"file:" をサポートするものもある。これらは、文字列化されたIORのダウンロード方法の詳細を提供するために存在する(または、再帰的に他のURLをダウンロードすることによって文字列化されたIORが得られるようにしている)。

CORBA 実装例

  • Oracle Tuxedo - CORBA 2.5 対応の商用 ORB (JavaC++用)オラクル
  • Borland Enterprise Server, VisiBroker - CORBA 2.6 対応の商用 ORB (Java、C++用) ボーランド
  • GNU Classpath - Java用の自由ソフトウェア実装を含む(GPL+linking exception, 新たに書かれた org.omg パッケージを含む)
  • CORBA for PHP - PHP5
  • Combat - Tcl用 ORB。C++ ORB の Tcl 層。
  • e*ORB - 商用 ORB (AdaC、C++用)
  • ILU - パロアルト研究所のオープン・ソフトウェア・オブジェクト・インタフェース・システム
  • IIOP.NET - Microsoft .NET 用自由ソフトウェア(LGPL) ORB
  • Interstage - 商用、富士通
  • JacORB - Javaで実装された自由ソフトウェア (LGPL) ORB
  • J-Integra Espresso - 商用 Microsoft .NET ORB、by Intrinsyc J-Integra
  • MICO - C++で実装された自由ソフトウェア (LGPL) ORB
  • omniORB - 自由ソフトウェア (LGPL) ORB (C++、Python用)
  • OpenORB - 自由ソフトウェア (BSD) ORB (Java用)
  • Orbacus - 商用 C++ ORB、by IONA Technologies
  • ORBexpress - 商用 ORB(Ada、Java、C++用。通常版とリアルタイム版)by Objective Interface Systems
  • ORBit2 - 自由ソフトウェア (LGPL) ORB (C、C++、Python用)
  • Orbix - 商用 ORB by IONA Technologies
  • ORBLink - 商用 ORB (Allegro Common LISP 用)
  • Perl ORB - Perlで実装されたオープンソース(Artistic License) ORB
  • PolyORB - Adaで実装された自由ソフトウェア (MGPL) ORB
  • SANKHYA Varadhi - 商用 ORB (C++用)
  • TAO - オープンソース ORB (C++用)
  • TPBroker - VisiBroker の日立製作所による改造版
  • Universe - PHP4
  • VBOrb - 自由ソフトウェア (LGPL) ORB (Visual Basic用)
  • Xtradyne I-DBC - 商用 CORBA セキュリティ実装、by Xtradyne
  • Systemν[nju:] - 商用 分散トランザクション対応 ORB、日本ユニシス

OMG の商標

CORBA、IIOP、OMG は Object Management Group の登録商標であり、利用には注意が必要である。GIOP は登録商標ではない。従って、アプリケーションについて「GIOPに基づいたアーキテクチャである」とするのが適切な場合もあるだろう。なお、CORBAの仕様書自体に関しては、それに基づいた実装を自由に行うことは(CORBAという登録商標を使わないかぎり)許されている。

関連項目

参考文献

外部リンク



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「CORBA」の関連用語

CORBAのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



CORBAのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【CORBA】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのCommon Object Request Broker Architecture (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS