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

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

関連記事

Confluenceでサイドバーを設置し、スクロールバーに追従させる方法

  <目次> (1) Confluenceでサイドバーを設置し、スクロールバーに追従させる方法  (1-0) やりたいこと  (1-1) 設定手順  (1-2) トライ&エラー備忘メモ:HT …

no image

P2P(Procure to Payment)とは?概要や流れをご紹介

  <目次> (1) P2P(Procure to Payment)とは?概要や流れをご紹介  (1-1) 概要  (1-2) 流れ   ●①必要性チェック(Indentify Needs) …

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

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

Windows10でWi-Fiが表示されない時の対処方法

  <目次> (1) Windows10でWi-Fiが表示されない時の対処方法  (1-1) 問題の整理  (1-2) 対策①:Wi-Fiサービスを有効化する  (1-3) 対策②:WLAN …

Azure Machine Learningでエラー「Experiment name must be 1-256 characters」が発生した際の原因と対処方法について

  <目次> (1) Azure Machine Learningでエラー「Experiment name must be 1-256 characters」が発生した際の原因と対処方法につ …

  • English (United States)
  • 日本語
Top