PR

Windows 2000には,ASPの実行環境となるWWWサーバー・ソフト「IIS」の新版が同こんされる。企業システムにおけるASP実行環境としてのIIS 5.0と,COMコンポーネントの新しい実行環境であるCOM+の新機能を解説する。

 ASP*の登場から3年あまり。Visual Basic(VB)を利用したことのあるプログラマには比較的簡単にWWW(World-Wide Web)システムを作成できる安価な環境として,ASPは確実に普及した。

 Windows 2000ではASPの実行環境であるIIS*1も強化された。この記事では,Windows 2000に添付される新版「IIS 5.0」とCOMコンポーネント*の新しい実行環境「COM+」について解説する。

ASPファイルの実行性能を改善

 IIS 5.0の大きな強化点は, (1)ASPの実行環境の改善,(2)管理性の向上,(3)セキュリティの向上――である(表1[拡大表示])。また,インストールの手間も減った。

表1●IIS5.0の主な新機能

 これらの解説に入る前に,ASPの仕組みを簡単に確認しておこう。ASPはHTML(HyperText Markup Language)テンプレート型の開発環境である*2。HTMLとVBScriptを1つのASPファイルに記述し,サーバーに配置する。クライアントのWWWブラウザがURLで,ASPファイルにリクエストを出すと,サーバー側のスクリプティング・エンジンがASPファイルを実行し,結果をHTML形式でクライアントに返す。

 この仕組みはIIS 5.0も同じだが,実行速度とシステムの安定性が強化されている。

 ASPファイル実行の高速化では,(1)CPUの負荷などに応じて同時実行するスレッド数を動的に増減する「IISスレッド・ゲーティング」,(2)スクリプトを含まないASPページの実行速度を改善する「スクリプトレスASP」――などの機能を備えた。

 (1)のIISスレッド・ゲーティングは,CPUの利用効率を向上させるために,IIS管理下のスレッド制御を強化したもの。例えばあるスレッドがデータベース・サーバーからの返事待ちなどで止まっていて,サーバー自身のリソースに空きがあるとき,後からきたリクエストを実行しながら,現在実行中の処理も継続するように,自動的にスレッド数を増やす。逆にCPUの使用率などシステムの負荷が高いときは,同時実行するスレッド数を制限して,スレッドを切り替えるためのオーバーヘッドを抑える。

 (2)のスクリプトレスASPは,VBScriptを含まないASPファイルの実行速度を高速にする機能。IIS 4.0以前では,拡張子に.aspとつくファイルは,そのページがVBScriptを含むか含まないかを問わず,スクリプティング・エンジン上で処理するため性能が落ちていた。IIS 5.0では,拡張子が.aspであっても,まず最初にそのページがスクリプトを含むか含まないかを判定し,含まない場合はスクリプティング・エンジンでの処理を実行しない。ただし,IIS 5.0でも拡張子が.htmまたは.htmlのファイルの方が.aspよりも高速に動作するのは変わりない。

図1●ダイジェスト認証
従来のベーシック認証に代わるもの。ベーシック認証ではパスワードを盗聴されてしまう問題があった。これを解決した

アプリの保護レベルに選択肢を追加

 掲示板システムなど簡単なWWWアプリケーションではASPファイル上のVBScriptだけでも十分の場合もあるが,システムがある程度複雑なロジックを必要とする場合は,C++やVisual Basicなどで記述したロジック群をCOMコンポーネントとしてサーバー上に置き,ASPファイルから呼び出す形態をとる。IIS 5.0では,COMコンポーネントの実行環境も改善した。

 まず,IIS 4.0の実装を振り返っておこう。IIS 4.0でアプリケーションを実行する場合,選択肢は2つある。IISの実行ファイルであるInetinfo.exeの中でアプリケーションを動作させる「イン・プロセス」と,IISの実体とは異なるDLLHost.exeで動作させる「アウト・プロセス」である。

 前者はIIS(Inetinfo.exe)のプロセスの中でCOMコンポーネントを実行するのに対して,後者はCOMコンポーネントごとにDLLHost.exeのプロセスを立ち上げる仕組みだ。イン・プロセスは,比較的良い性能を発揮させやすい半面,COMコンポーネントが何らかの理由で停止した場合,IISごと落ちてしまう可能性がある。一方,アウト・プロセスは,新たなプロセスを起動するオーバーヘッドはあるものの,COMコンポーネントからの影響を受けないため高い信頼性を実現できる。また,アウト・プロセスで多数のCOMコンポーネントを動作させると,システム全体の性能が劣化しやすい。このため,信頼性を高くしたいアプリケーションもやむを得ずイン・プロセスで動作させなければならないという問題もあった。

 IIS 5.0では,これら2つの保護レベルに加えて「プール・プロセス」と呼ぶ,新しい保護レベルを設けた。アウト・プロセスと同様にアプリケーションはDLLHost.exe中で実行するが,従来のアウト・プロセスと異なり,1つのDLLHost.exeで複数のCOMコンポーネントを動作させる。

 このためIIS 5.0では,(1)もっとも信頼性が要求されるいくつかのアプリケーションはアウト・プロセスで,(2)信頼性よりも性能を重視したいアプリケーションはイン・プロセスで,(3)それ以外のアプリケーションはまとめてプール・プロセスで──動作させるという使い分けが可能になった。デフォルトの設定は(3)のプール・プロセスである。

写真1●「コンポーネント サービス」の動作画面

右クリック一発でIISだけを再起動

 IIS 5.0では管理のしやすさも向上した。従来版のユーザーへの朗報は,IISのみの再起動が可能になったことだろう。従来は,例えばイン・プロセスでの障害によってIISがハングした場合に,IISを再起動するためにはOSから再起動する必要があった。IIS 5.0ではIISのみ再起動できる。「コンピュータの管理」で,「IISの再起動」を選択するだけだ。

 インストール作業の手間も減った。IIS 4.0をインストールするためには,(1)Windows NT 4.0をインストール,(2)次にSP3を適用,(3)Internet Explorer 4.01をインストールし,(4)Windows NT Option Packを導入した上で,(5)最新版のサービスパックをインストールする必要がある。IIS 5.0であればWindows 2000をインストールするだけでよい。

 他にも,WWWサーバー上のコンテンツに対して,バージョン管理やファイルのロック,ファイルの移動など,HTTP/1.1を拡張することで実現した「WebDAV」*や,FTPでファイルを転送中になんらかの原因で中断した場合,ファイルを最初からダウンロードし直すのではなく,中断した場所から再開できるコマンドである「REST」をサポートしたなどの変更点がある。

ベーシック認証に代わる方式を追加

 一般にシステムのセキュリティ・レベルは,ユーザーが構築するシステムでどのような手段を利用するかによるところが大きい。IIS 5.0では,この手段が追加された。中でも簡単に利用できて効果が期待できるのが,ベーシック認証に代わる新しい認証方式である「ダイジェスト認証」である。

 ベーシック認証にはセキュリティを守る認証方式として,欠点があった。パスワードを平文で送信するため,悪意のある第三者に盗聴されるとパスワードを盗まれてしまう。ダイジェスト認証では,ユーザーが入力するパスワードから,ハッシュ関数を利用して一種のワンタイム・パスワードを生成する。盗聴されてもパスワードは破られない(図1[拡大表示])。ベーシック認証を利用するよりも,高いセキュリティ・レベルを実現できる。

 ただし,(1)クライアントがInternet Explorer 5.0に限定される,(2)認証後にダウンロードされるコンテンツは平文のままである――など問題もある。より高いセキュリティ・レベルを望むのであれば,従来通りSSL*を利用するのが最善である。

図2●COM+
COM+を一言で言えば,サーバー・サイドのCOMコンポーネントの動作を支援するためのサービスである。COM+がアプリケーションに提供する機能は,トランザクション処理やメソッド呼び出しのキューイング,アプリケーションの実行権限の管理などである

MTSを統合したCOM+

 先に述べたように,業務ロジックがある程度複雑な場合は,COMコンポーネントとしてサーバーに置き,それをASPファイルから呼び出す利用形態が一般的である。このCOMコンポーネントの実行環境を,Windows 2000では「COM+」と呼ぶ。

 COM+の実体はサービスで,「コンポーネント サービス」という設定画面が用意されている(写真1[拡大表示])。この設定画面をよく見ると,COM+でどんなことができるのかを理解しやすい。

 写真の右側にある,ダンボール箱に玉のような物体が詰まったアイコンが,1つのアプリケーションを表し,「COM+アプリケーション」と呼ぶ。COM+アプリケーションは,COMコンポーネントの集合である(図2[拡大表示])。

 管理者は,サーバーにCOM+アプリケーションをインストールしたり,アプリケーション単位でユーザーの実行権限やMSMQ*を利用するかどうかを設定する。COM+アプリケーションのアイコンをダブル・クリックし,「コンポーネント」を開くと,コンポーネントの一覧を参照できる。コンポーネントのアイコンを右クリックしプロパティを選択すれば,トランザクション処理を必要とするかなどを設定する画面を表示する。

 従来の環境でもMTSやMSMQを利用することで,同様のことができたはず,と感じる読者もいるかもしれない。確かに,これはその通りで,COM+はトランザクション機能のみ実現する別製品として提供していたMTS*などを統合したものと言える*3

 なお,Windows 2000 ベータ3の出荷当時に搭載されていた,COM+の動的負荷分散や,データベースをメモリー上に格納して,アクセスの高速化を図るIMDB(In-Memory DataBase)は製品版ではサポートしない。

(矢崎 茂明=yazaki@nikkeibp.co.jp