クライアント
サーバモデルは、
コンピュータネットワークにおける
ソフトウェアアーキテクチャの一種であり、機能やサービスを提供する
サーバと、それを利用するクライアントを分離し、ネットワーク通信によって接続する方式です。このモデルは、単にクライアント・
サーバやC/Sと表記されることもあり、俗にクラサバと略されることもあります。
クライアントサーバモデルの概要
かつてのネットワークでは、
メインフレームと呼ばれる大型
コンピュータに接続された
端末から利用者が操作する形態が主流でした。当時の
端末は、文字の入出力程度の機能しか持たず、全ての
計算処理は
メインフレームに集中していました。しかし、
UNIXワークステーションのような高性能な
コンピュータを導入できるコストが低下すると、特定の役割を担う
コンピュータ(
サーバ)と、利用者が操作する
コンピュータ(クライアント)に役割を分担するクライアント
サーバモデルが広く利用されるようになりました。
このモデルでは、クライアントが
サーバに対して「要求」を送信し、
サーバがその要求に応じた「応答」を返すことで処理が実行されます。このやり取りは、UMLのシーケンス図を用いて可視化することができます。
クライアント
サーバモデルとは異なるネットワークアーキテクチャとして、ピア・ツー・ピアモデルがあります。これは、ネットワークに参加する
コンピュータがクライアントと
サーバの両方の役割を担い、固定的な役割分担をしないモデルです。
クライアント
サーバモデルにおける
サーバは、様々な役割を担います。代表的なものとして、以下の種類が挙げられます。
メールサーバ:電子メールの送受信を管理します。
Web[[サーバ]]:Webページの表示に必要なデータをクライアントに提供します。
アプリケーション[[サーバ]]:Webアプリケーションの実行環境を提供します。
ファイル
サーバ:ファイルを共有するためのストレージを提供します。
プリントサーバ:ネットワークに接続されたプリンターを管理します。
また、ソフトウェアテストの際には、クライアント端末内にローカルサーバを構築し、閉じた環境で通信を行うこともあります。
クライアントサーバモデルの例
オンラインストアを例に考えてみましょう。利用者がウェブブラウザを使ってオンラインストアにアクセスする場合、利用者のコンピュータやウェブブラウザがクライアントとして機能します。一方、オンラインストアのデータベースやWeb[[サーバ]]がサーバとして機能します。クライアントがWebページを表示する要求をサーバに送信すると、サーバは要求された情報に基づいてWebページのデータを生成し、クライアントに返信します。クライアント側のウェブブラウザがそのデータを受信してWebページを表示することで、利用者はオンラインストアを利用できます。
クライアントサーバの範囲
広い意味でクライアントサーバモデルという場合、クライアントとサーバが役割分担をする分散コンピューティングを指すことがあります。この場合、サーバがさらに数層に分かれる多層アーキテクチャを含むこともあります。一方、狭い意味でクライアントサーバモデルという場合には、2層アーキテクチャやリッチクライアントモデルを指すことがあります。
まとめ
クライアントサーバモデルは、現代のコンピュータシステムにおいて非常に重要な概念です。効率的なシステム運用を可能にするこのモデルは、Webサービスから企業内システムまで、幅広い分野で利用されています。このモデルを理解することは、現代のIT技術を理解する上で不可欠と言えるでしょう。
関連事項
端末、
端末サーバ
クライアント ([[コンピュータ)]]
サーバ
アプリケーション[[サーバ]]
Peer to Peer
* BSDソケット