この特集のトップページへ
Chapter 8:プレゼンテーション層の構築

8.1.2 Webアプリケーションの動作
●Active Server Pages
 Table 8-1で示したように,IISはEXEファイルやDLLファイルだけでなく,さまざまなスクリプトファイルの実行をサポートする。とはいえ,Table 8-1で示したスクリプトエンジンが,すべて自由なWebアプリケーションの構築に使えるかといえば,そういうわけではない。たとえば,Index Serverは検索することしかできないから,.ida.idqの拡張子を持つスクリプトを使っても,検索以外のアプリケーションを構築することはできない。つまり開発者は,Table 8-1で示したスクリプトエンジンを用途に応じて使い分けることになる(実際には,適切な拡張子でスクリプトファイルを保存すれば,IISが拡張子に合わせて自動的にスクリプトエンジンを呼び出すので,開発者はスクリプトエンジンの存在や使い分けを意識する必要はない)。

 Table 8-1に示した開発技法のうち,最も柔軟性が高いのが,Active Server Pages(以下ASP)である。ASPは,VBScriptやJScriptなどで記述されたスクリプトファイルを読み込み,それを解釈実行する機能を備えている(Fig.8-5)。スクリプト言語は拡張可能であり,たとえばhttp://www.activestate.com/からPerlScriptモジュールをダウンロードしてインストールすれば,Perl言語を利用することもできる。

Fig.8-5 ASP
fig8_05

 本稿では,ASPを使ってWebアプリケーションを構築する方法について説明する。

 ASPはVBScript,JScript,Perlなど,複数のスクリプト言語をサポートする。しかし本稿では,スクリプト言語としてVisual Basicに似た文法を持つVBScriptを使うことにする。なぜなら,前章までにすでにVisual Basic用のプレゼンテーション層を作ってきたため,文法的に違うJScriptやPerlを使うよりも馴染みやすいだろうと判断したからである。

 VBScriptが特に優れているというわけでもないので,どのスクリプト言語を採用するのかは,開発者がどのスクリプト言語に馴染んでいるのかに大きく左右されるだろう。実際,JavaScriptによる開発経験があれば,VBScriptよりも,むしろJScriptのほうが馴染みやすいかもしれない。

●ASPとCOM
 ASPを使うと,VBScript,JScript,Perlなどのスクリプト言語を使ってWebアプリケーションを構築することができる。スクリプト言語には,(1)文法が容易であること,(2)テキストエディタさえあれば開発できること,(3)急場の修正にも即時に対応できること,などのメリットがある。しかし半面,スクリプト言語で書かれたスクリプトファイルは,実行時に逐次解釈実行されるインタプリタ方式で処理されるため,実行速度は必ずしも高速ではない。

 もしパフォーマンスを重視したいのであれば,C言語などを使ってアプリケーションを開発すべきである。とはいえ,C言語による開発は,複雑で開発効率も悪いから,迅速な開発要求に応えるのは難しい。よってやはり開発にはASPを使いたいところである。


One Point! 本稿執筆時点におけるVisual Basicでは,特別なライブラリやCOMコンポーネントを使わない限り,Webアプリケーションとして動作する実行形式ファイルやDLLファイルを作成することはできない。

 では,「ASPを利用する場合に実行速度を向上させることはできないのか」という話になるが,これはCOMコンポーネントを利用すれば実現可能である。詳しくは「8.2.3 ASPからCOMコンポーネントを使う」で説明するが,ASPではスクリプトからCOMコンポーネント(COM+コンポーネントも含む)を利用することができる。よって,処理速度を向上させるには,時間がかかりそうな処理をCOMコンポーネント化すればよい。速度重視ならばVisual C++を使ってCOMコンポーネントを開発するとよいが,Visual Basicを使ってCOMコンポーネントを開発しても,ASPでスクリプトファイルを逐次解釈実行させるよりはずっと高速に動作する。

 つまり,ASPを使う場合には,何でもスクリプト言語だけで処理してしまおうと考えるべきではない。確かに,スクリプト言語による開発は手軽であり,開発者の教育コストも低くすむ。しかし,スクリプト言語だけで何もかも実装してしまうと,スクリプトファイルは長くなり,メンテナンス性が悪くなるばかりか,処理速度の低下も招く。たとえば,データベースにアクセスするアプリケーションを構築する場合には,スクリプト言語からADOコンポーネントを使ってデータベースに直接アクセスするようなプログラムを作ることも可能であり,事実そのようなプログラムを作ることもある。だが,パフォーマンスを考えると,この方法は必ずしも優れているわけではない。ある程度のパフォーマンスを要求するのであれば,データベースにアクセスする部分をCOMコンポーネント化してビジネスロジックとし,そのビジネスロジックをASPから呼び出すようなN階層アプリケーションモデルを心がけるべきである。

 本連載では,すでにChapter 6でビジネスロジックを作ってある。そこで本章では,Webアプリケーションを構築するのに際し,Chapter 6で作ったビジネスロジックをASPから呼び出すという手法をとって開発を進めることにする。具体的な実装は,「8.4 Web用プレゼンテーション層の概要」にて説明する。

Prev 5/43 Next