Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

CORBA通信とは?概要やアーキテクチャについて

投稿日:2021年10月4日 更新日:

 

<目次>

(1) CORBA通信とは?概要やアーキテクチャについて
 (1-1) CORBA通信とは?
 (1-2) CORBAのアーキテクチャについて

(1) CORBA通信とは?概要やアーキテクチャについて

(1-1) CORBA通信とは?

CORBAは「Common Object Request Broker Architecture」の略で、分散システムにおいて異なるプログラム言語(同じ言語同士でも可能)のオブジェクト間での通信(処理の要求/応答の通信)を行う目的で作られたプロトコルです。
 
分かりやすく言葉の補足をして書き直すと、CORBAは分散システム(複数のサーバから成るシステム)において、異なる言語(C++とJavaなど)のオブジェクト間の通信(お互いのメソッド呼び出しなど)をするためのプロトコル(規約)です。そのCORBAを使った通信をCORBA通信と呼んでいます。
 
その中でも「ORB (Object Request Broker)」機能が分散システムにおけるCORBA通信の中核を担っており、ライブラリやプロセス等から構成され、オブジェクト間の通信を可能にします。

●CORBAの特徴

CORBAはOMG(Object Management Group)という組織により作られており、特徴としては異なるサーバ間/異なるOS間/異なるプログラム言語であっても通信が出来る、といった環境間の差異を吸収して連携が出来る点があります。

●利用シーン

CORBAの主な利用シーンとしては、CL(クライアント=利用者の端末)とSV(サーバ=利用者にサービスを提供するマシン)間などでオブジェクト間のプログラム呼び出し(リモートのオブジェクトのメソッドを実行)を透過的に(存在を意識せずに利用できる)行うために使います。

●CORBA通信の主な流れ

①クライアント側のリクエスト(要求)に対応するサーバ側のオブジェクトを特定する
②上記①で特定したオブジェクトを透過的に有効化する
③オブジェクトにリクエスト(要求)を届ける
④クライアント側にレスポンス(応答)を返す
 
(図111)
 
またCORBAには中核をなす「ORBコア」機能があり、CORBAは実態としては通信を担うORBの「設計仕様」であるとも言えます。次の節でそのアーキテクチャについて見ていきます。
 

(1-2) CORBAのアーキテクチャについて

CORBAのアーキテクチャは大きくCL(クライアント側)とSV(サーバ側)に分ける事ができ、おおまかには次のような構成になっています。(表A)にて各部分の概要を記載しています。
 
(図121)
 
(表A)

■図中No. ■CL(クライアント)/SV(サーバ) ■項目 ■説明
CL IDLスタブ
(IDL Stub Interface)
●概要
CL(クライアント側)とORBとの仲介役。

「IDLスタブ」は「IDLコンパイラ」によって生成され、クライアント側のアプリにリンクされます。IDLスタブを構成する関数は、クライアント側とORBの間をマッピングし、言語の差異を吸収してくれます(オブジェクト参照を取得する)。

●IDLスタブの役割
・リモートのSV(サーバ側)オブジェクトへ接続するインターフェイスの役割
・CL(クライアント側)のORBのための変換指示

※IDLはオブジェクトのIF(インターフェイス)を作るための言語

CL/SV ・ORBインターフェイス
(ORB Interface)
●概要
CL(クライアント側)とSV(サーバ側)の両方から呼ばれるインターフェイスです。ORBのうち、クライアント側から直接アクセスされ得る機能(例:SV側のオブジェクトへの参照を取得する)などを提供します。

●ORBインターフェイスの主な提供機能
ネーミングサービス、ルートPOAなど
(「list_initial_services」、「resolve_initial_refererences」等のメソッドを利用)

(例)
ORB orb = ORB.init(args, null);
orb.resolve_initial_references(“NameService”);

CL/SV ・ORBコア ORBの根底に存在する機能で、主にOSI参照モデルのトランスポート層(第4層)で使用される、基本的な通信の機能(クライアント側からの要求とサーバ側部品の通信)を実現します。

(例)Javaの場合の例(コマンドのオプション)
・ORBInitialHost ⇒サーバ側のホスト名を指定
・ORBInitialPort ⇒ネームサーバを起動したいポート番号を指定
・ORBHost ⇒接続をする際にリッスンするホストの指定

※Linuxでのコマンド例
$ orbd -ORBInitialPort [ポート番号] -ORBInitialHost [ホスト名]

CL 動的呼び出し(Dynamic Invocation) ●概要
ランタイム(実行時)の動的なリクエスト(要求)をする仕様を実現する為のインターフェイスです。

通信相手オブジェクトのインターフェイスが実行時点で不明な場合に必要となります。その際、動的呼び出し(Dynamic Invocation)がインターフェイスリポジトリ(Interface Repository)と一緒に動作する事で、通常必要となるIDLインターフェイスをリンクせずにORBの機能を使用する事ができます。

SV OA
(Object Adapters)
●概要
OAは一般的には、クライアント側のリクエストとサーバ側のメソッドを紐付けを「オブジェクト参照」により実現する機能です。

OAはサーバ側オブジェクトの実装(⇒⑦)に対して、ORBの機能を提供しています。OAには次の3方向のIFがあります。
①「IDLスケルトンIF」へのプライベートなIF
②「ORB Core」へのプライベートなIF
③「SV側オブジェクト」へのパブリックなIF

●OAの主な機能
・メソッド呼び出し
(例:JavaではXXXPOA.java内の「_invoke」といったメソッド)
・SV側オブジェクトの有効化/無効化
(例:case文での有効化制御:「switch (__method.intValue ()) { case 0: ~」)
・オブジェクト参照(※注1)と、その実装のマッピング
(例:case文内でのメソッドの呼び出しなど:「$result = this.sayHello ();」)

(※注1)
CORBA通信では、他のオブジェクトから自身を呼び出すためには、まず「オブジェクト参照」を取得します。その方法はいくつかあり、例えばネーミングサービスや、LDAPサーバ、JNDI等を使ったりします。

SV IDLスケルトン
(IDL Skeleton Interface)
●概要
サーバ側オブジェクトとORBとの仲介役。

「IDLスケルトン」は「IDLコンパイラ」によって生成され、CL(クライアント側)からのリクエスト(要求)に応じたメソッドを呼び出す際に、SV(サーバ側)のORBとサーバ側オブジェクトの間のインターフェイスの役割を果たします(どのメソッドが利用可能かを検知する)

●IDLスケルトンの役割
・SV(サーバ側)のORBとサーバ側オブジェクトの間のIF
・SV(サーバ側)のORBに対して、逆変換の指示を出す(クライアント側から送られたパラメータを解読できるように)

SV サーバ側オブジェクトの実装 CL(クライアント側)が要求する、呼び出し対象のSV(サーバ側)のオブジェクト。

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

ソフトマックス関数の微分の導出をご紹介

  <目次> (1) ソフトマックス関数の微分の導出をご紹介  (1-1) ソフトマックス関数とは?  (1-2) ソフトマックス関数の微分(一般式)  (1-3) ソフトマックス関数の微分 …

SlackのAPIでメッセージを投稿する方法(Pythonのサンプルコード付き)

  <目次> (1) SlackのAPIでメッセージを投稿する方法(Pythonのサンプルコード付き)  (1-1) STEP1:Slackでボット用のアプリを作成  (1-2) STEP2 …

ValgrindのIndirectly Lostの意味や実際のサンプルをご紹介

  <目次> (1) ValgrindのIndirectly Lostの意味や実際のサンプルをご紹介  (1-1) Valgrindの「Indirectly Lost」はどんな状況?  (1 …

Anaplanとは?コネクテッドプランニング(コンセプト)と絡めてご紹介

  <目次> (1) Anaplanとは?コネクテッドプランニング(コンセプト)と絡めてご紹介  (1-1) Anaplanとは?  (1-2) Anaplanで実現する「コネクテッドプラン …

アジャイル開発のスクラム手法の流れや進め方について

  <目次> (1) アジャイル開発のスクラム手法の流れや進め方について  (1-1) スクラムとは?  (1-2) スクラムの流れ  (1-3) スクラムにおける「バックログ」の単位につい …

  • English (United States)
  • 日本語
Top