【IIS7】 IIS5からIIS7への移行を考えるとき
金曜のセッションではここで書いているテーマに関しては大きくふれることができないのでブログで書いておこうと思いましたのであらためてまとめておきます。
まず、あえて小数点を書かなかったのはこうすることでクライアント系を含みたかったからです。
OSバージョン | IISのバージョン |
Windows 2000 | IIS5.0 |
Windows XP | IIS5.1 |
Windows Server 2003, Windows XP x64 | IIS6.0 |
Windows Vista, Windows Server 2008 | IIS7.0 |
Windows 7, Windows Server 2008 R2 | IIS7.5 |
このように整理するとわかりやすいですかね。Windows XPの 64 ビット環境が実は 5.1 ではない点が注意ですね。つまり 言い換えると IIS5 から IIS7 へ移行するということは 2000・XP から Vista/2008/7/2008 R2 へ移行するということになります。
互換モード
まず注目すべきは互換モードの搭載状況でしょう。ある意味 以前のバージョンのエミュレーションをしてくれる互換モードは IIS6 では IIS5 互換が、IIS7 では IIS6 互換(クラシックモードという)がそれぞれ搭載されているので残念ながら IIS7には IIS5 互換モードはないということになります。なので、ほとんど触らないで移行できるということを前提には考えない方がいいです。まず何かあることを前提に結果として何もしないで済むこともあると思った方がいいということです。
実は IIS6 が登場した時に対応をあきらめて互換モードを使った環境も IIS5 対応のアプリケーションと分類すべきだと思います。というのは IIS6 で登場した ワーカープロセス分離モード(アプリケーションプールの概念の登場)のモデルが IIS7 でも同じように利用されていて、IIS7 の IIS6 互換モードであるクラシックモード(引き続き aspnet_isapi.dllを利用)でもアプリケーションプールを利用できる状態だからです。このことから IIS5 互換モードと IIS6 互換モードの意味合いが違うのがわかりにくいかもしれません。
整理して表現をするとこういうことじゃないかと私は思っています。
IIS5互換モード :IIS5 と同じプロセス分離モデルで動作する IIS6 のモード
クラシックモード:IIS6 と同じようにASP.NETを動作させる IIS7 のモード
もう一つ違う点ありました。IIS5互換モードはサーバー単位での切り替え(それほど大きい影響)になっていて、クラシックモード(反対が統合モード)への切り替えはアプリケーションプール単位になっています。なので、IIS7ではASP.NETの動作環境としてかなり混在した環境を一台で提供できることになります。
クライアント環境の差異
手元に Windows クライアントがあって、そこで開発をしているというとても多くあるケースではまた少し考察すべき点があります。こちらはどちらかというと制限の解除なのでより便利になっている要素です。IIS5 でのクライアント版はサイトが一つしか持てないとか接続制限があったりとかサーバーとはまったく異なる IIS と言ってもいいほど多くの制限を持っていました。IIS7 では OS の登場時期での差異はあるものの、ベースでは同じと考えて問題ありません。この点は少し要素を列挙することにしましょう。
- Windows Vista 以降でも同時接続数制限(3あるいは10)があるが、印刷のようにキューに溜まる構造になっていて、待つだけの制限になっていて、キューの上限(すごく大きな数)を超えない限りはエラーを返さない。
- Windows Vista 以降も エディションによっては IIS が搭載されていない、あるいはフル機能ではないものがある。
- 複数のサイトを取り扱えるようになった。
- IIS7 の IIS マネージャはクライアント系は自分しか管理できない。別バージョンの IIS マネージャをIIS.NETからダウンロードしてインストールするとリモートの IIS7 を管理できるようになる。これは Beta 版の Windows 7 でも同じ。
- Windows Server 2008 は Windows Vista SP1と同期して登場しているのでどうすれば同じレベルなの?ということではこれが解になる。
ASP.NET
IIS7 では残念ながら .NET1.0には対応していない。また、Vista/2008系ではOSに搭載されている.NETフレームワークのベースが 2.0、選択してインストールすれば 3.0 が入るので 1.1も入っていない。従って、1.1 を動作させるには 1.1 をダウンロードしてセットアップし かつ クラシックモードで利用しないといけない。新モードである(ASP.NET)統合モードでは 2.0 以降の利用になる。なお、.NET3.0 と .NET3.5 はクラスの拡張であって、ランタイム的な観点では 2.0ベースになっています。.NET4.x に関してはベースを拡張すると聞いていますが、詳細は私の同僚のデベロッパーエバンジェリストの面々のブログで聞くとかどこかのセミナー会場で彼らにより具体的に聞いてみてもらえればと思います。
前にも書きましたが、ASP.NETとしてはIIS7との統合度合いで クラシックモード、統合モードをアプリケーションプール単位で別々に実行できます。ということで下記のような状態が一台の中で存在できるわけです。
AppPool1 .NET1.1 クラシックモード
AppPool2 .NET2.0 クラシックモード
AppPool3 .NET2.0 統合モード
などなど・・・
ASP
IIS5 ということは拡張子が.aspである ASP アプリケーションも多くあるでしょう。IIS7 という観点ではあくまでもASP.NETの動作原理の切り替えなので、クラシックモードでも統合モードでも ASP に関しては違いが無いです。ただ、今までと比べるとアクセス制限などが厳しくなっていることで動作しないことの可能性の方が高いです。困ったらぜひ下記の記事を一読いただきたいと思います。Access(MDB)に関しても Bill はちゃんと書いています。
Tips for Classic ASP developers on IIS7 (英語)
大きく一点だけ取り上げると、スクリプトエラーや行番号管理などは既定ではオフになっているのでトラブルシュートをする際は明示的に IISマネージャでオンにしないと何が起こっているのかよくわからない点があります。
ASP でのコーディングにおいては 複雑なロジックは COM コンポーネントを作成して ASP内のスクリプトから COM を呼び出す構造が多いと思うので、IIS7 で動作するかはむしろその COM コンポーネントが当該 OS で動作するかの方が移行に影響があるでしょう。
PHP
IT交差点という無償冊子でも書きましたが、PHPに関しては ISAPI 式のセットアップ方法に慣れている方が多いと思いますが、現在は FastCGI 式での利用をオススメしています。Vista SP1、2008 以降では FastCGI が最初から搭載されているので PHPのランタイムを入手すれば設定は簡単と言っていいです。
IIS6のころに提供していた表
@ITさんのサイトの記事を書いたときに転記しておいたので以下の記事もぜひ読んでいただければと思います。
https://www.atmarkit.co.jp/fwin2k/winsv2008/04iis7_01/04iis7_01_02.html
最後に
A4 一枚程度の投稿ですが、これが基礎です。これを押さえていただければ移行に関して結構理解いただけたと思っていいと思います。概観はかわっていますが、色々な点で便利になっているので慣れれば便利さを体感いただけると思います。
Comments
- Anonymous
January 01, 2003
この投稿の内容は @ITさんのWebサイト向けに書かせていただいた記事 と重複しているところも多くありますが、更新された内容も書かれています。 Part I.  IIS, Yesterday