連載
» 2008年09月01日 00時00分 公開

Webアプリの常識をJSPとStrutsで身につける(3):Webアプリにおけるサーバとクライアントの常識 (1/3)

本連載は、JSP/サーブレット+StrutsのWebアプリケーション開発を通じて、Java言語以外(PHPやASP.NET、Ruby on Railsなど)の開発にも通用するWebアプリケーション全般の広い知識・常識を身に付けるための連載です

[鬼木実,株式会社メセナ・ネットコム]

 前回は、「Strutsの常識を知り、EclipseとTomcatの環境構築」と題し、Webアプリケーションフレームワークの1つであるStrutsについての概要を説明したうえで、JDKEclipseTomcatなどのWebアプリケーション作成の環境構築を行い、サンプルプログラムを実際に作成してみました。

 今回は、「サーバとクライアントの常識」と題し、サーバとクライアントの関係など詳しく説明していくとともに、前回紹介したサンプルアプリケーションを基にStrutsの設定ファイルやソースコードについて説明していきます。

あらためて、サーバとは? クライアントって何?

 まずはクライアントとサーバについて詳しく説明します。サービスを提供する側のサーバ(Server)、サービスを利用する側のクライアント(Client)に分けることができます。「Server」は英語で「供給する人・もの」「与える人・もの」などの意味です。「Client」は「顧客」「依頼人」の意味です。

 このようなモデルを「クライアント/サーバ(C/S)モデル」といい、クライアント/サーバでは、図1のようにクライアントがサーバに依頼・要求(リクエスト)し、サーバがクライアントに応答(レスポンス)する形で処理が行われます。

図1 クライアント/サーバ(C/S)モデル 図1 クライアント/サーバ(C/S)モデル

 このように、機能を提供する役割のサーバとしてのコンピュータと、サーバに接続して機能を利用するクライアントとしてのコンピュータで構成されるネットワーク形態のことを「クライアント/サーバ(C/S)システム」といいます。

 実業務で使われるシステムでは、クライアントとサーバはそれぞれ要求される役割が大きく異なるため、ハードウェアとしての機能やインストールするソフトウェア(OS)もサーバ用とクライアント用で機能が異なることが多いです。大きくざっくりといってしまうと、サーバ側では演算機能・保管機能が重視され、クライアント側では描画機能が重視される傾向があると思います。

3層クライアント/サーバシステム

 また、「3層クライアント/サーバシステム」では、プレゼンテーション層、アプリケーション層、データ層の3層に分割されます。Webアプリケーションにおいては、クライアント側であるWebブラウザはプレゼンテーション層、サーバ側の業務処理を行う部分(アプリケーションサーバ)はアプリケーション層、データ処理・保管を行う部分(データベースサーバ)はデータ層に位置します。

 連載第1回の「Webアプリケーションの処理の流れ」でも説明しましたが、図2のように、3層にすることで負荷分散や改修がしやすくなるというメリットがあります。

図2 3層クライアント/サーバシステム 図2 3層クライアント/サーバシステム

負荷を分散する「分散処理」

 アプリケーションサーバとデータベースサーバは同じコンピュータ内で構成されることもあれば、別々のコンピュータに分けられることもあります。サーバの処理能力が不足する場合は、複数のコンピュータに分散して1台当たりの処理量を減らすことができるのです。このような処理の仕方を「分散処理」といいます。

アプリケーションサーバとWebサーバの連携

 このように、サービスを提供する「サーバ」ですが、サーバにもいろいろと提供するサービスによって種類があります。前述のアプリケーションサーバとデータベースサーバに加え、WebサーバメールサーバファイルサーバDNSサーバプロキシサーバなどなど、世の中には実にさまざまなサーバが存在します。

Webサーバとは?

 Webサーバは、HTMLHyper Text Markup Language)で記述されたコンテンツをHTTPHyper Text Transfer Protocol)というプロトコル(通信規約)を通してクライアントに提供する役割を、主に持ちます。プロトコルについては、後の連載で詳しく説明する予定です。ここでは、ある特定の情報が通る“道”とか“トンネル”と思っていてください。

 また、「CGI(Common Gateway Interface)」と呼ばれる仕組みを通して、Perl・Ruby・Python・PHPなどのプログラミング/スクリプト言語で作成したプログラムから動的にHTMLを提供することもできます。

 さらに、Webサーバのモジュール部分にはPHPなどで作成されたプログラムを動かすモジュールも存在し、それを使ってCGIに比べ処理速度の高速化、サーバ負荷の低減を実現できます。

 主なWeb(HTTP)サーバとしては、以下が挙げられます。

アプリケーションサーバとは?

 アプリケーションサーバは、サーブレットなどの業務処理を行うアプリケーションをサーバ側で実行することを主な役割とするミドルウェア/コンテナです。

 例えば、サーブレット/JSPを処理するアプリケーションサーバには、オープンソースのTomcatがあり、主にWebサーバの連携モジュール部分とアプリケーションサーバ上で動作するコネクタを連携して動作する、図3のような仕組みになっています。

図3 Webサーバとアプリケーションサーバの連携 図3 Webサーバとアプリケーションサーバの連携

 また、Tomcatはそれ自体がWebサーバとしての機能も持っていて単独で動かすこともできますし、ほかのさまざまなサーバ機能を併せ持っているアプリケーションサーバも多種多様にあります。

 ちなみに、Tomcat以外のJava用の主なアプリケーションサーバには以下が挙げられます。

 アプリケーションサーバについてさらに詳しく知りたい読者は、記事「フリーのWebコンテナ/EJBコンテナを整理する」「アプリケーションサーバを自在に操れ!」「Linuxで動くJavaアプリケーションサーバ・カタログ」も参照してください。

 次ページからは、アプリケーションサーバの設定や、WebブラウザやユーザーエージジェントにおけるHTTPリクエストについて解説します。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。