Insider's Eye

マイクロソフトWebアプリケーション最新動向(1)

―― ASPのこれまでを知り、最新版ASP 2.0がもたらす今後を展望する ――

Greg DeMichillie
2004/09/07
Copyright (C) 2004, Redmond Communications Inc. and Mediaselect Inc.


本記事は、(株)メディアセレクトが発行する月刊誌『Directions on Microsoft日本語版』 2004年9月号 p.24の「ASP.NET 2.0が目指すWebアプリの新パラダイム」を、許可を得て転載したものです。同誌に関する詳しい情報は、本記事の最後に掲載しています。

 1995年のInternet Explorerと翌年のInternet Information Services(IIS)のリリース以来、MicrosoftのWebアプリケーション・プラットフォームは大きな変化を遂げてきた。このため、開発者が比較検討すべきクライアント用およびサーバ用のAPIとプラットフォームは、現在では多数に上っている。企業は既存のWebアプリケーションの拡張や、新しいアプリケーションの開発に当たって、選択肢を慎重に吟味して適切なAPIとプラットフォームを採用しなければならない。ASP.NETのメジャー・アップグレードとなるASP.NET 2.0は、Visual Studio 2005とともに2005年前半にリリースが予定されており、前バージョンの成功を土台にどのような進化を遂げようとしているのか。

共通基盤を提供するIIS

 MicrosoftのWebサーバであるIISは、MicrosoftのWebアプリケーションに関するすべての取り組みの共通基盤であり、動的Webアプリケーションを構築する開発者向けに次の2つのAPIを提供している。

■広範に活用されるCGI(Common Gateway Interface)
 CGIは、Windows用およびLinux用の事実上すべてのWebサーバでサポートされている業界標準のAPIだ。CGIにより、Webサーバは受け取った要求を外部アプリケーションに渡し、そのアプリケーションの出力をブラウザに返すことができる。この仕組みを実現するCGIのプログラミング・モデルは非常にシンプルなもので、CGIアプリケーションは、要求の詳細を標準入力からテキストで受け取り、返すページを標準出力にテキストで書き込むコンソール・アプリケーションだ。CGIアプリケーションは、CやC++など、ほぼどんなプログラミング言語でも作成できるが、Perlで作成されることが最も多い。Perlは、Cに似た構文と、UNIXでポピュラーな多数のユーティリティ(特にsedやawk)によるテキスト処理機能を備える言語だ。

 CGIは広く普及しているため、さまざまなWebサーバやOS上で稼働させる必要があるWebアプリケーションでは魅力的な選択肢となっているが、難点もいくつかある。第1に、MicrosoftはCGIアプリケーション開発の支援に特化したツールを提供していない。第2に、CGIは外部の実行可能プログラムに依存するため、Windows上ではパフォーマンスに影響を及ぼす。UNIXやLinuxとは異なり、Windows上では新しいプロセスの生成は、比較的時間のかかる処理だ。このオーバーヘッドは、エンド・ユーザー側ではほとんど意識されないが、アクセスが多いWebサーバが受け取るような何千あるいは何百万もの要求に倍加されると、大幅にパフォーマンスが低下する恐れがある。

Webサーバを構成するテクノロジ
 MicrosoftのWebサーバ・テクノロジはすべて、共通の基盤としてInternet Information Services(IIS)を土台としている。Microsoftとサードパーティ各社は、IISのプラグイン・アーキテクチャであるCommon Gateway Interface(CGI)とInternet Server API(ISAPI)を用いて、より高度なWeb開発プラットフォームを構築している。

 時としてWebツールは、ASP(スクリプティング言語に依存)やATL Server(C++のみをサポート)など、特定の組み合わせのプログラミング言語やツールを必要とする場合がある。だが、これまで成功してきた製品のほとんどは、ASP.NETのように、各種のプログラミング言語をサポートしている。

■DLLを利用したISAPI(Internet Server API)
 ISAPIは、Windows上でのCGIの利用に伴うパフォーマンスへの悪影響を解消するためにMicrosoftが用意したAPIだ。ISAPIは、基本的にCGIにおける外部プログラムの代わりにDLLを作成して利用できるようにしたもので、IISと広く普及したオープンソースWebサーバであるApacheのWindows版でサポートされている。ISAPIとCGIは類似しているため、CGIアプリケーションをISAPI対応に移行するのは非常に容易だ。ActiveStateからPerlのISAPI実装が無償配布されていることも、移行の大きな助けとなっている。

 しかし、外部プログラムからDLLへの移行には、いくつかの注意点がある。最も重要なのは、IISとこうしたDLLがプロセスとメモリ・アドレス空間を共有するため、アプリケーションの作りが悪いと、Webサーバがクラッシュやメモリ・リークの危険にさらされることだ。ISAPIアプリケーションがクラッシュすると、Webサーバや稼働中のほかのアプリケーションすべてが巻き添えになる。また、ISAPI DLLでメモリ・リークが発生すると、Webサーバのパフォーマンスが時間とともに低下し、最終的にリブートが必要になる恐れがある。MicrosoftはIISの最新リリース(バージョン6.0)で、信頼性を向上させる新しいプロセス分離モデルを導入したが、IIS 6.0はWindows Server 2003上でしか利用できない。

 CGIとISAPIはIISの中核機能であり、同じサポート・スケジュールが適用される。IIS 5.0は2005年6月30日、IIS 6.0は2008年6月30日にメインストリーム・サポートが終了することになっている。CGIとISAPIは広く利用されているため、IISの将来のバージョンで提供されなくなることはなさそうだ。このため、ほぼ最新のバージョンのIISを使い続ける限り、企業にとってサポートの問題は最小限にとどまるだろう。

Web開発のためのVBを目指して

 CGIとISAPIは、IISベースのWebアプリケーションを作成する手段を開発者に提供するが、Webアプリケーション開発をできるだけ広範な開発者にとって取り組みやすいものにするために、MicrosoftをはじめとするWebサーバ・ベンダは、使いやすい開発環境を切実に必要としていた。それはWebサーバ・アプリケーションの開発者に、APIフレームワークとドラッグ&ドロップの開発ツールをセットで提供する開発環境、いわば「WebのためのVisual Basic(VB)」だった。また一部の開発者は、すべての処理をサーバに任せ、すべてのブラウザがサポートする基本的なレベルのHTMLだけを利用することに甘んじていたが、ほかの多くの開発者は、より洗練されたユーザー・インターフェイスを作成することを望んだ。そのために開発者は、クライアント側のWeb APIの増加と、Internet Explorer(IE)の各バージョンなど、ブラウザ間の標準サポートのばらつきに対して、各ブラウザに合わせてサイトを手動で調整しなくても対処できる方法を必要としていた(ブラウザAPIの詳細については、コラム「ブラウザ間に残る非互換性の課題」を参照のこと)。

 

 INDEX
  Insider's Eye
マイクロソフトWebアプリケーション最新動向(1)
    コラム:ブラウザ間に残る非互換性の課題
  マイクロソフトWebアプリケーション最新動向(2)
 
 「Insider's Eye」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間