目次 前 次 PDF


CORBAプログラミング・モデル

CORBAプログラミング・モデル
CORBAは、オブジェクト・ベースの分散アプリケーションを作成するための仕様です。CORBAのアーキテクチャと仕様は、Object Management Group (OMG)によって開発されました。OMGは、数百社の情報システム・ベンダーで構成されるコンソーシアムです。CORBAの目的は、分散ソフトウェア・アプリケーションをビルドおよび統合するオブジェクト指向の手法を促進することです。
CORBA仕様では、分散アプリケーションをビルドするためのオープンで一貫性のあるモデルが提供されます。そのために、CORBA仕様では次の事項が定義されています。
分散アプリケーションをビルドするためのオブジェクト・モデル
クライアント・アプリケーションおよびサーバー・アプリケーションで使用される共通のアプリケーション・プログラミング・オブジェクトのセット
分散アプリケーションの開発で使用されるオブジェクトのインタフェースを記述する構文
複数のプログラミング言語で記述されたアプリケーションによる使用のサポート
CORBA仕様では、CORBAの実装を開発する方法が説明されています。また、アプリケーションの開発で使用するプログラミング言語のバインディングも記述されています。
CORBAアーキテクチャを使用する利点を説明するために、この項では初期のクライアント/サーバー・アプリケーション開発手法とCORBAの開発手法を比較します。
クライアント/サーバー開発のCORBA以前の手法
クライアント/サーバー・コンピューティングは、ネットワーク接続された複数のマシンで処理を分散し、マシンのリソースをより効率的に利用できるようにするアプリケーション開発方法です。クライアント/サーバー・コンピューティングのアプリケーションは、クライアント・アプリケーションとサーバー・アプリケーションの2つのパートで構成されます。通常、それらの2つのアプリケーションは、次の図で示されているようにネットワークで接続された異なるマシンで動作します。
クライアント・アプリケーションは情報またはサービスをリクエストし、通常は結果を表示する手段をユーザーに提供します。サーバー・アプリケーションは、1つまたは複数のクライアント・アプリケーションのリクエストを満たし、通常は計算集中型の機能を実行します。
クライアント/サーバー・モデルの主要な利点は次のとおりです。
計算機能が最も適切なマシン・システムで実行されます。
複数のサーバーにアプリケーションの処理負荷を分散させることができます。
多くのクライアント・アプリケーションでサーバー・アプリケーションを共有できます。
たとえば、デスクトップ・システムは、情報を表示するための使いやすいグラフィカルな環境を多くのビジネス・ユーザーに提供します。しかし、デスクトップ・システムはディスク領域とメモリーが制限される場合があり、シングル・ユーザー・システムであるのが普通です。より大きく、より強力なマシン・システムの方が、計算集中型の機能を実行し、マルチ・ユーザー・アクセスと共有データベース・アクセスを実現するには適しています。
したがって、通常はより規模の大きいシステムでアプリケーションのサーバー部分が実行されます。このようにして、分散したデスクトップ・システムとネットワーク接続されたサーバーにより、分散クライアント/サーバー・アプリケーションをデプロイする完璧なコンピューティング環境が実現されます。
CORBA以外のクライアント/サーバー手法でも異機種間ネットワークで処理を分散する手段が提供されますが、その手法には次の欠点があります。
通信については、クライアント・アプリケーションで、必要なネットワーク・プロトコル情報を含めてサーバー・アプリケーションへのアクセス方法が理解されていなければなりません。
クライアント/サーバー・アプリケーションでは、1つのネットワーク・プロトコルを使用する場合と、複数の異なるプロトコルを使用する場合があります。複数のプロトコルが使用される場合、アプリケーションではネットワークごとにプロトコル固有のコードを論理的に反復しなければなりません。
アプリケーションでは、異なるデータ形式が使用されるマシンと統合された場合に、データ形式の変換を処理しなければなりません。
たとえば、一部のマシンでは整数値が最下位バイト・アドレスから最上位へ向かって読み取られ(リトル・エンディアン)、ほかのマシンでは逆に最上位バイトから読み取られます(ビッグ・エンディアン)。また、一部のマシン・システムでは、浮動小数点数またはテキスト文字列で異なる形式が使用される場合もあります。アプリケーションから異なるデータ形式が使用されるマシンにデータが送信される場合で、そのアプリケーションによってデータが変換されないときには、データは間違って解釈されます。
ネットワーク経由でデータを転送し、そのデータをターゲット・システムの適切な表現に変換することを、データ・マーシャリングと呼びます。多くの非CORBAクライアント/サーバー・モデルでは、アプリケーションですべてのデータ・マーシャリングを実行しなければなりません。データ・マーシャリングでは、アプリケーションでネットワークとオペレーティング・システムの機能を利用してデータをマシン間で移動する必要があります。また、データ形式の変換を実行して、送信時と同じようにデータが読み取られるようにすることも必要です。
アプリケーションの拡張に柔軟性がありません。
CORBA以外のクライアント/サーバー手法では、クライアント・アプリケーションとサーバー・アプリケーションが強く結び付けられます。したがって、クライアント・アプリケーションかサーバー・アプリケーションで変更があった場合には、プログラマはインタフェース、ネットワーク・アドレス、およびネットワーク・トランスポートを変更する必要があります。また、クライアント・アプリケーションとサーバー・アプリケーションを別のネットワーク・インタフェースをサポートするマシンに移植する場合、プログラマはそれらのアプリケーションの新しいネットワーク・インタフェースを作成しなければなりません。
クライアント/サーバー開発のCORBA手法
CORBAモデルは、分散アプリケーションを開発するためのより柔軟なアプローチを提供します。The CORBA model:
アプリケーションのクライアント部分とサーバー部分がはっきりと分離されます。
CORBAクライアント・アプリケーションでは処理をリクエストする方法のみが理解され、CORBAサーバー・アプリケーションではクライアントからリクエストされたタスクを遂行する方法のみが理解されています。このような分離のおかげで、クライアント・アプリケーションがサーバー・アプリケーションにタスクの遂行を要求する方法に影響を与えることなく、サーバーでタスクを遂行する方法を変更できます。
アプリケーションが、オペレーションと呼ばれる特定のタスクを実行できる複数のオブジェクトに論理的に分割されます。
CORBAは、分散オブジェクト・コンピューティング・モデルに基づいています。このモデルでは、分散コンピューティング(クライアントとサーバー)の概念とオブジェクト指向コンピューティング(オブジェクトとオペレーションをベースとする)の概念が結合されます。
オブジェクト指向コンピューティングにおいて、オブジェクトはアプリケーションを構成するエンティティであり、オペレーションはそれらのオブジェクトでサーバーが実行できるタスクです。たとえば銀行業務アプリケーションでは、顧客口座のオブジェクトと、預け入れ、引き出し、および残高照会のオペレーションを利用できます。
リモート・マシンまたはローカル・マシンのアプリケーションとデータをやり取りするためのデータ・マーシャリングが提供されます。
たとえば、CORBAモデルでは必要に応じてビッグ・エンディアンまたはリトル・エンディアン用に自動的に形式変換が行われます。データ・マーシャリングの説明については、前の項を参照してください。
ネットワーク・プロトコル・インタフェースがアプリケーションから隠蔽されます。
CORBAモデルではすべてのネットワーク・インタフェースが処理されます。アプリケーションで認識されるのはオブジェクトだけです。アプリケーションは複数の異なるマシンで動作できます。その理由は、すべてのネットワーク・インタフェース・コードがORBによって処理され、異なるネットワーク・プロトコルをサポートするマシンに後からデプロイされる場合でもアプリケーションではネットワーク関連のどのような変更も必要としないからです。
CORBAモデルのクライアント・アプリケーションでは、情報の供給源やその位置について直接知らなくても、サーバー・アプリケーションにリクエストを送信してレスポンスを受信することができます。CORBA環境では、通信のためのネットワークやオペレーティング・システムの情報はアプリケーションで必要としません。かわりに、クライアント・アプリケーションとサーバー・アプリケーションはオブジェクト・リクエスト・ブローカ(ORB)と通信します。次の図は、クライアント/サーバー環境のORBを示しています。
CORBAでは、クライアント・アプリケーションとサーバー・アプリケーションの媒介としてORBが定義されています。ORBでは、クライアントのリクエストが適切なサーバー・アプリケーションに転送され、サーバーのレスポンスがリクエスト元のクライアント・アプリケーションに返されます。ORBを使用することで、クライアント・アプリケーションではサーバー・アプリケーションの位置またはサーバーがリクエストを満たす方法を知らなくてもサービスをリクエストできます。
CORBAモデルのクライアント・アプリケーションでは、どのようなリクエストが可能なのか、およびどのようにリクエストを行うことができるのかを知っているだけで十分です。サーバーまたはデータ形式の細かな実装は必要ありません。サーバー・アプリケーションは、リクエストを満たすことができれば十分です。クライアント・アプリケーションにデータを返す方法について知っている必要はありません。
つまり、プログラマは、クライアント・アプリケーションがサーバー・アプリケーションにタスクの遂行を要求する方法に影響を与えることなく、サーバーでタスクを遂行する方法を変更できます。たとえば、クライアント・アプリケーションとサーバー・アプリケーションのインタフェースが変更されないかぎり、クライアント・アプリケーションに変更を加えることなくサーバー・アプリケーションの実装を拡張したり、新しい実装を開発したりできます。また、サーバー・アプリケーションはそのままに新しいクライアント・アプリケーションを作成することも可能です。
 

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved