動的なコンテンツへの対応
Webのコンテンツは、「静的コンテンツ」と「動的コンテンツ」に大きく分けることができる。静的コンテンツは、上記で紹介したような、事前に作成したファイルをそのままWebブラウザで表示するコンテンツだ。一方の動的コンテンツは、Webブラウザからのリクエストやユーザーの操作などが生じた際に、動的に生成されるコンテンツである。さらに動的コンテンツには、Webブラウザ上で動作するスクリプト(JavaScriptやVBScript)を使う「クライアントサイド」タイプと、サーバ側で動作する外部プログラムやスクリプトによって生成される「サーバサイド」タイプとがある。
Amazon.co.jpのようなショッピングサイトは、サーバサイドによる動的コンテンツの典型だ。Amazon.co.jpでは、商品を選んで「ショッピングカートに入れる」をクリックすると、カートに入れられた商品が次のページにリストアップされる(画面3)。こうしたサイトでは、商品データベースを検索したり、ユーザーごとのカートの内容を書き換える(データベースを修正する)プログラムを用意し、Webサーバから呼び出す仕組みを構築している。カートに商品を追加する操作を行なうと、カート内容を書き換えるプログラムが実行され、動的コンテンツが生成されるわけだ。
IISは、こうした機能を実現するために「CGI(Common Gateway Interface)」や「ISAPI(Internet Server Application Programming Interface)」といった機能を持っている。CGIはApacheも搭載する機能で、Webサーバから外部プログラムを呼び出す仕組みだ。外部プログラムの種類に規定はなく、Webサーバから命令を受け、実行結果をWebサーバに受け渡す機能を持つプログラムであれば、何でも利用できる。ただし一般的には、「Perl」や「Ruby」などのスクリプト言語が使われることが多い。CGIは自由度の高い仕組みではあるが、外部プログラムの起動時や出力結果の受け取りなどの処理に時間がかかってしまう欠点がある。
一方のISAPIは、HTML内に記述されたスクリプトをサーバ上で実行する仕組みだ。このISAPIに対応したアプリケーション(ISAPIエクステンション)には、Javaのコードを実行する「JSP(JavaServer Pages)」や「PHP」、「ASP(Active Server Pages)」などがある。
特にASPは、マイクロソフトがIIS用に開発した仕組みで、JScript(マイクロソフト版のJavaScript)やVBScriptといったスクリプト、C#という言語で開発したプログラムなどをIIS上で実行できる。HTML内に記述するだけでなく、独立したファイルとして用意し、HTMLから呼び出すことも可能だ。ASPには、スクリプトの起動や出力結果の受け取りがCGIより速い、データベースと連携するための機能などが用意されているといった長所がある。
サーバの3層化
これらのアプリケーションを実現するためのWebサーバと外部プログラム、そしてデータベースを同一のサーバで運用することも可能ではあるが、多くのサイトがこれらを別のサーバに分散している(図1)。サーバを分けることで負荷の分散が可能なほか、万が一Webサーバに侵入されても、ユーザー情報や決済情報が保存されているデータベースサーバへのアクセスを防止できるといったメリットがある。また、Webサーバとアプリケーションサーバ、データベースサーバをそれぞれ複数用意する「冗長化」もよく使われる手法だ。
この連載の記事
-
第8回
ネットワーク
どうして携帯電話でインターネットできるの? -
第7回
ネットワーク
Webにまつわる危険をきちんと知っていますか? -
第6回
ネットワーク
ブラウザとサーバは何をやりとりしているの? -
第5回
ネットワーク
高度なWebアプリケーションを実現するRIAの仕組み -
第4回
ネットワーク
HTMLからXMLへ!Webを彩るコンテンツを知ろう -
第2回
ネットワーク
サーバを指定するURLの仕組み -
第1回
ネットワーク
Webブラウザから拡がる楽しい世界 -
ネットワーク
WWW完全制覇 - この連載の一覧へ