Common Object Request Broker Architecture
Common Object Request Broker Architecture︵コモン オブジェクト リクエスト ブローカー アーキテクチャー、略称CORBA︵コルバ︶︶とは、Object Management Group (OMG) が定義した標準規格であり、様々なコンピュータ上で様々なプログラミング言語で書かれたソフトウェアコンポーネントの相互利用を可能にする︵分散オブジェクト技術︶ものである。
概要[編集]
CORBA では、プログラムコードをその機能や呼び出し方の情報と共に一種のカプセル化を行う。このカプセル化されたオブジェクトは、コンピュータネットワークを経由して他のプログラム︵あるいは CORBA オブジェクト︶から呼び出すことができる。 CORBA はインタフェース記述言語 (IDL) を使ってこのようなオブジェクトの外部インタフェースを記述する。そして、IDLから他の特定の実装言語︵C++やJava︶への﹁マッピング﹂を行う。CORBAとしてマッピングが標準的に用意されているのは、Ada、C、C++、LISP、Smalltalk、Java、COBOL、PL/I、Python である。標準に組み込まれていないが、Perl、PHP、Ruby、Visual Basic、Tcl、Delphi へのマッピングを実装した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標準では以下のようなタイプのインターセプターを定義している: (一)IORインターセプターは、カレントサーバが示すリモートオブジェクトへの新たな参照の作成を調停する。 (二)クライアントインターセプターは、クライアント側でリモートメソッドの呼び出しの調停を行う。そのオブジェクトのサーバントが同じサーバに存在すれば、そのメソッドが呼び出されるようにローカル呼び出しが調停される。 (三)サーバインターセプターは、サーバ側のリモートメソッド呼び出しへの対応を調停する。 インターセプターは、送信されるメッセージに何らかの情報や生成したIORを付加することができる。それらの情報はリモート側の対応するインターセプターが読み取る。インターセプターは例外を送ったり、メッセージを他のターゲットに転送したりといったことも行う。General InterORB Protocol (GIOP)[編集]
GIOPとは、Object Request Broker(ORB)同士が通信する際の抽象プロトコルである。このプロトコルに関する標準はObject Management Group(OMG)が管理保守している。GIOPアーキテクチャはいくつかの実際のプロトコルを提供している: (一)Internet InterORB Protocol (IIOP) - CORBA ORB 同士の通信プロトコルであり、インターネット上のGIOPの実装である。従って、GIOPメッセージとTCP/IPとの橋渡しをする。 (二)SSL InterORB Protocol (SSLIOP) - SSL 上のIIOP。暗号化と認証機能を提供する。 (三)HyperText InterORB Protocol (HTIOP) - HTTP上のIIOP。プロキシを透過的に迂回するなどの機能がある。 (四)その他いろいろ…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 ︵Java、C++用︶オラクル ●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 ︵Ada、C、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という登録商標を使わないかぎり︶許されている。関連項目[編集]
- 遠隔手続き呼出し (RPC)
- ソフトウェアコンポーネント
- サービス指向アーキテクチャ
- Java Remote Method Invocation
- Webサービス
- 分散コンピューティング
- Jakarta EE
- XML-RPC
- DCOM
- SOAP (プロトコル)
- Bonobo
参考文献[編集]
- 利用可能な CORBA 実装の比較
- The official CORBA standard from the OMG group (direct download, .pdf, about 10 Mb).
- Robert Orfali: The Essential Client/Server Survival Guide, John Wiley & Sons, ISBN 0-471-15325-7
- Robert Orfali, Dan Harkey, Jeri Edwards: The Essential Distributed Objects Survival Guide, John Wiley & Sons, ISBN 0-471-12993-3
- Robert Orfali, Dan Harkey: Client/Server Programming with JAVA and CORBA, John Wiley & Sons, ISBN 0-471-24578-X
- Dirk Slama, Jason Garbis, Perry Russell: Enterprise CORBA, Prentice Hall, ISBN 0-13-083963-9
- Michi Henning, Steve Vinoski: Advanced CORBA Programming with C++, Addison-Wesley, ISBN 0-201-37927-9
- Axel Korthaus, Martin Schader, Markus Aleksy: Implementing Distributed Systems with Java and CORBA, Springer, ISBN 3-540-24173-6
- Fintan Bolton: Pure Corba, Sams Publishing, ISBN 0-672-31812-1
- Jon Siegel: CORBA 3 - Fundamentals and Programming, John Wiley & Sons, ISBN 0-471-29518-3
- Ron Zahavi: Enterprise Application Integration with CORBA: Component and Web-Based Solutions, John Wiley & Sons, ISBN 0-471-32720-4
- Bret Hartman, Konstantin Beznosov, Steve Vinoski, Donald Flinn: Enterprise Security with EJB and CORBA, John Wiley & Sons, ISBN 0-471-40131-5
- Thomas J. Mowbray, Ron Zahavi: The Essential Corba: System Integration Using Distributed Objects, John Wiley & Sons, ISBN 0-471-10611-9
- Michael Rosen, David Curtis: Integrating CORBA and COM Applications, John Wiley & Sons, ISBN 0-471-19827-7
- Gerald Brose, Andreas Vogel, Keith Duddy: Java Programming with CORBA, John Wiley & Sons, ISBN 0-471-37681-7
- John Schettino, Robin S. Hohman, Liz O'Hara: CORBA For Dummies, Hungry Minds, ISBN 0-7645-0308-1
- Jeremy L. Rosenberger: Teach Yourself CORBA in 14 Days, Sams Publishing, ISBN 0-672-31208-5
- Jon Siegel: Quick CORBA 3, John Wiley & Sons, ISBN 0-471-38935-8
- Thomas J. Mowbray, Raphael C. Malveau: CORBA Design Patterns, John Wiley & Sons, ISBN 0-471-15882-8
- Robert Orfali, Dan Harkey, Jeri Edwards: Instant CORBA, John Wiley & Sons, ISBN 0-471-18333-4
- Paul Harmon, William Morrissey: The Object Technology Casebook, John Wiley & Sons, ISBN 0-471-14717-6
外部リンク[編集]
- Information Board
- Object Management Group
- Description by Christopher B. Browne
- CORBA support for autoconf
- OrbZone forum
- SOAP Bridge
- いまなぜCORBAなの? アットマーク・アイティ
- CORBA テックスコア
- CORBA Component Model 入門 永田博靖(オージス総研)