クライアント/サーバー・モデル

ソフトウェアを編成して分散システムで実行するために一般的に行われているのは、クライアントとサーバーという 2 つの部分に機能を分割することです。 クライアント は、他のプログラムによって提供されるサービスを使用するプログラムです。 サービスを提供するプログラムを、サーバー と呼びます。 クライアントはサービスの要求を行い、 サーバーはそのサービスを実行します。サーバーの機能として、一般に何らかのリソース管理が行われます。 サーバーは、リソースに対するアクセスを同期化および管理し、クライアントの要求に応じてデータまたは状況情報を提供します。 クライアント・プログラムは、通常、ユーザー との対話を処理します。また、多くの場合、ユーザーに代わってデータを要求し、 データ変更を開始します。

例えば、クライアントは、ユーザー (データ入力端末で仕事を している人など) が製品の受注を入力できるようなフォームを提供することが できます。クライアントがこの受注情報をサーバーへ送ると、サーバーは その製品のデータベースを検査し、請求および出荷に必要なタスクを実行します。 一般に、複数のクライアントが 1 つのサーバーを使用します。 例えば、何十台または何百台ものクライアントが、データベース・アクセスを 制御する数台のサーバーと対話することができます。

クライアントは、実際のリソース・マネージャーに関して何も情報を持つ必要がありません。 使用しているデータベースを 変更する場合、サーバーの変更が必要になるかもしれませんが、クライアントの 変更は不要です。一般に、サーバーのコピーはクライアントのコピーよりも少数です。 また、サーバーは多くの場合、更新の容易な場所 (例えば、ユーザーのデスク上の PC ではなく中央マシン) に置かれます。 このため、更新手順も簡略化されます。 また、このアプローチでは、 セキュリティーが強化されます。サーバーのみが、リソース・マネージャーの 管理するデータにアクセスすることになっているからです。クライアントは データにアクセスしません。

さらに、クライアントは、数台の異なるサーバーにアクセスすることが できます。また、サーバー自体も、他のサーバーのクライアントになることが できます。どのように機能をサーバー間に分散させるかは、アプリケーション設計上の決定事項です。 例えば、クライアントが必要とするすべてのサービスを 1 つのサーバーが提供する場合と、さまざまな要求を実行するためにクライアントが複数のサーバーに アクセスする場合が考えられます。 アプリケーションの設計者は、拡張容易性、場所、セキュリティーなどの事項について考慮することが必要です。 例えば、クライアントとサーバーをローカルにするか、またはアプリケーションを広範な地域に分散するか、 物理的に安全なマシンにサーバーを配置する必要があるかどうか、などです。 このような 設計上の決定事項は、本概説では取り扱いません。

サーバーには、アプリケーションの一部と なって、アプリケーション・サーバー と呼ばれる ものもあります。特定のアプリケーションの一部になっていないサーバーも あります。そのかわり、このようなサーバーは、どのアプリケーションから でも使用できます。例えば、CICS® 構造化ファイル・サーバー (SFS) では、 各種アプリケーション向けにレコード単位のファイル・アクセスが提供されます。