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

クライアントサーバモデル（）は、機能やサービスを提供するサーバと、それを利用するクライアントとを分離し、ネットワーク通信によって接続する、コンピュータネットワークのソフトウェアモデル（ソフトウェアアーキテクチャ）である。単にクライアント・サーバと呼ばれたり、C/Sなどと表記されたりすることも多い。俗にクラサバと略されることもある。
概要.
かつてのネットワークでは、メインフレームと呼ばれる大型コンピュータに接続された端末から利用者が操作する形態が中心であった。当時の端末は文字の入力受付と表示を行なうのみの貧弱な処理能力しかなかったため、あらゆる計算はメインフレームによって集中的に処理されていた。
その後、UNIXワークステーションなど表示能力と処理能力の高いコンピュータを多数配置することがコスト的に容易な時代になった。その結果、特定の役割を集中的に担当するコンピュータ（サーバ）と、利用者の操作するコンピュータ（クライアント）に役割を分け、これらが相互にネットワークで接続されるクライアントサーバモデルが一般化した。このモデルでは、クライアントがサーバに「要求」を送信し、サーバがそれに「応答」を返す形で処理が行われる。
クライアントサーバモデル以外のネットワークアーキテクチャとしては、ピア・ツー・ピアモデルも広く利用されている。これは、クライアントやサーバといった役割を固定化せず、ネットワークに参加するコンピュータ（ノード）が場合によってどちらとしても働くというものである。
サーバとクライアントのやり取りを記述するためには、UMLのシーケンス図が利用できる。
サーバの種類.
サーバの代表的な役割には次のようなものが存在する。いずれも前述のような形態をとっており、現在のコンピュータシステムでは一般的な概念となっている。
ソフトウェアテストの目的で、クライアント端末内にローカルサーバを構築し、閉じた環境内でローカルホスト経由の通信を行なうこともある。
例.
例えば、World Wide Web (Web) 上のオンラインストアを利用する場合、オンラインストアの利用者が使っているコンピュータやWebブラウザがクライアントに相当し、オンラインストアのデータベース管理システムやWebサーバがサーバに相当する。Webブラウザがウェブページを表示する要求を送ると、サーバは必要な情報からウェブページのデータを動的に生成し、これを応答として返す。これを受信したクライアント側のWebブラウザがページを表示することで、利用者がそのウェブページを閲覧・利用することができる。
狭義のクライアント・サーバ.
広い意味でクライアント・サーバと呼ばれる場合、前述のようにクライアントとサーバと処理を役割分担している分散コンピューティングのことを意味することがある。この場合、サーバがさらに数層分けられる多層アーキテクチャを含める場合がある。
一方で、狭い意味でクライアント・サーバと呼ばれる場合には、2層アーキテクチャやリッチクライアントモデルを指す場合がある。