1.1 クライアント/サーバー開発のCORBA以前の手法

クライアント/サーバー・コンピューティングは、ネットワーク接続された複数のマシンで処理を分散し、マシンのリソースをより効率的に利用できるようにするアプリケーション開発方法です。クライアント/サーバー・コンピューティングのアプリケーションは、クライアント・アプリケーションとサーバー・アプリケーションの2つのパートで構成されます。通常、それらの2つのアプリケーションは、次の図で示されているようにネットワークで接続された異なるマシンで動作します。

図1-1 クライアント/サーバー・コンピューティング

クライアント/サーバー・コンピューティング・アプリケーションについて説明します。

クライアント・アプリケーションは情報またはサービスをリクエストし、通常は結果を表示する手段をユーザーに提供します。サーバー・アプリケーションは、1つまたは複数のクライアント・アプリケーションのリクエストを満たし、通常は計算集中型の機能を実行します。

クライアント/サーバー・モデルの主要な利点は次のとおりです。

  • 計算機能が最も適切なマシン・システムで実行されます。
  • 複数のサーバーにアプリケーションの処理負荷を分散させることができます。
  • 多くのクライアント・アプリケーションでサーバー・アプリケーションを共有できます。

たとえば、デスクトップ・システムは、情報を表示するための使いやすいグラフィカルな環境を多くのビジネス・ユーザーに提供します。しかし、デスクトップ・システムはディスク領域とメモリーが制限される場合があり、シングル・ユーザー・システムであるのが普通です。より大きく、より強力なマシン・システムの方が、計算集中型の機能を実行し、マルチ・ユーザー・アクセスと共有データベース・アクセスを実現するには適しています。

したがって、通常はより規模の大きいシステムでアプリケーションのサーバー部分が実行されます。このようにして、分散したデスクトップ・システムとネットワーク接続されたサーバーにより、分散クライアント/サーバー・アプリケーションをデプロイする完璧なコンピューティング環境が実現されます。

CORBA以外のクライアント/サーバー手法でも異機種間ネットワークで処理を分散する手段が提供されますが、その手法には次の欠点があります。

  • 通信については、クライアント・アプリケーションで、必要なネットワーク・プロトコル情報を含めてサーバー・アプリケーションへのアクセス方法が理解されていなければなりません。

    クライアント/サーバー・アプリケーションでは、1つのネットワーク・プロトコルを使用する場合と、複数の異なるプロトコルを使用する場合があります。複数のプロトコルが使用される場合、アプリケーションではネットワークごとにプロトコル固有のコードを論理的に反復しなければなりません。

  • アプリケーションでは、異なるデータ形式が使用されるマシンと統合された場合に、データ形式の変換を処理しなければなりません。

    たとえば、一部のマシンでは整数値が最下位バイト・アドレスから最上位へ向かって読み取られ(リトル・エンディアン)、他のマシンでは逆に最上位バイトから読み取られます(ビッグ・エンディアン)。また、一部のマシン・システムでは、浮動小数点数またはテキスト文字列で異なる形式が使用される場合もあります。アプリケーションから異なるデータ形式が使用されるマシンにデータが送信される場合で、そのアプリケーションによってデータが変換されないときには、データは間違って解釈されます。

    ネットワーク経由でデータをトランスポートし、そのデータをターゲット・システムの適切な表現に変換することを、データ・マーシャリングと呼びます。多くの非CORBAクライアント/サーバー・モデルでは、アプリケーションですべてのデータ・マーシャリングを実行しなければなりません。データ・マーシャリングでは、アプリケーションでネットワークとオペレーティング・システムの機能を利用してデータをマシン間で移動する必要があります。また、データ形式の変換を実行して、送信時と同じようにデータが読み取られるようにすることも必要です。

  • アプリケーションの拡張に柔軟性がありません。

    CORBA以外のクライアント/サーバー手法では、クライアント・アプリケーションとサーバー・アプリケーションが強く結び付けられます。したがって、クライアント・アプリケーションかサーバー・アプリケーションで変更があった場合には、プログラマはインタフェース、ネットワーク・アドレス、およびネットワーク・トランスポートを変更する必要があります。また、クライアント・アプリケーションとサーバー・アプリケーションを別のネットワーク・インタフェースをサポートするマシンに移植する場合、プログラマはそれらのアプリケーションの新しいネットワーク・インタフェースを作成しなければなりません。