-
Notifications
You must be signed in to change notification settings - Fork 0
MS_IISUpgradeASPMigration
- 戻る(各種、技術毎の移行性)
本ページでは、IISバージョンアップに伴う
ASP、ASP.NETの環境移行の作業範囲を扱います。
Active Server Pages(以下、ASP と略す)の場合は
IISバージョンアップに伴う環境移行に該当します。
ASP は IIS 6.0、IIS 7.x、IIS 8 でもサポートされます。
補足(Classic ASP は現在もサポートされている): 意外に思われるが、
Classic ASP は現在の IIS 10 / Windows Server 2022・2025 でも
「役割サービス」として提供されている。
状況 提供 IIS の機能として継続(既定では無効。追加で有効化する) サポート Windows のライフサイクルに準拠(IIS の一部として) 新機能 無い(メンテナンスのみ) つまり「明日動かなくなる」性質のものではない。
ただし後述のとおり、依存する COM 側が
先に問題になるのが実情である。
ASP は、VBSで実装されているため、COMに
処理を依存しているところが多々ありますが、
この VBSから呼び出される COM
(ActiveX Control、ActiveX EXE、VB COM)の
- 「開発環境のサポート期間切れ」に起因する移行対象範囲の拡大や、
- 「当該プラットフォーム上でのサポート無し」のため、
代替ライブラリの I/F 変更発生に起因する修正範囲拡大の可能性がありますので
注意が必要です。
補足(ここが最大の障壁): ASP 自体より、COM が移行を難しくする。
問題 内容 開発環境が無い VB 6.0 の IDE は 2008年サポート終了。改修できない 32bit しかない 64bit の IISからインプロセスで呼べない(64bit対応を参照) ソースが無い 退職・ベンダ廃業でソースが失われているケース 代替が無い サードパーティ製 COM の提供元が消滅 2 番目の対処として、アプリケーション プールの
「32 ビット アプリケーションの有効化」をTrueにする
という運用が広く行われている。
ただしこれはプール全体が 32bit になるため、
メモリ上限(約 2GB / 4GB)の制約を受ける点に注意が要る。
また、選択肢として、ASP.NETに移行する案も挙げられますが、
これについては ASP / ASP.NET のアーキテクチャの差異が大きく
コード コンバージョン + ポーティング移行などは不可能であるため、
マイグレーション・ツール等も用意されていません。
.asp → .aspx への機械的な変換は可能だが、
このような移植は、短時間で終了するものの、
ASP.NET Web コントロール、ADO.NET、
.NET Framework クラスなどの .NET の新機能を利用することはできません。
これよりも細かい移植作業には時間がかかるかもしれませんが、
完成した ASP.NET ページは可読性と保守可能性が高まり、
より高度な機能を利用することができます。
この移行方式は、.NET の新機能を利用できないため(.NET 化する)
意味があまりありませんので、この移行パスの事例は
知るかぎりで非常に少ないです。
このため、ASP から ASP.NETへの移行は、(通常、)
再構築に該当します。
補足(現在の移行先の選択): 「再構築」という結論は今も変わらない。
ただし再構築先の選択肢は変わっている。
移行先 評価 ASP.NET Web Forms 非推奨。.NET Core 以降に無い(今から選ばない) ASP.NET MVC(.NET Framework) 同上 ASP.NET Core(MVC / Razor Pages) 推奨。クロスプラットフォーム Blazor 画面単位・イベント ドリブンが近い ASP からの再構築なら、.NET Framework を経由せず
直接 ASP.NET Coreを目指すのが合理的である
(どうせ書き直すため)。
段階的に進めたい場合は、クラウド設計パターンの
ストラングラー パターンが有効である。
-
ただし、IIS 5.x、6.0 から IIS 7.0 へ移行する場合、
カスタム HTTP モジュールまたは HTTP ハンドラを使用する
ASP.NETアプリケーションを「統合モード」で実行する場合は
Web.configファイルに設定をする必要がある。- デフォルトは「統合モード」
- 「クラシック・モード」を利用するには、アプリケーション プールの設定を
[DefaultAppPool]から[Classic .NET AppPool]に切替える。
補足(統合モードとクラシック モードの違い): IIS 7 で導入された
この 2 モードは、ASP.NETのパイプラインが
IIS のパイプラインに統合されたかどうかの違いである。
クラシック モード 統合モード パイプライン IIS と ASP.NET が別々 1 本に統合 ASP.NET モジュール .aspxなどマップされた拡張子にのみ効く全ての要求に効く(静的ファイルにも) 設定場所 <system.web><httpModules><system.webServer><modules>認証 IIS と ASP.NET で二重 一本化 移行時の典型的なエラーは次のもので、
設定を旧セクションに書いたまま統合モードで動かしたときに出る。HTTP エラー 500.22 - Internal Server Error 統合マネージ パイプライン モードには適用されない ASP.NET 設定が検出されました。対処は「
<system.web>のhttpModules/httpHandlersを
<system.webServer>のmodules/handlersへ移す」ことである
(appcmd migrate configで機械的に変換もできる)。
Windows Server 2008 R2 以降の Server OS は、全て 64bit OS になります。
64bit対応については、こちらを参照下さい。
-
IIS で Classic ASP Web サイトを構築する
https://learn.microsoft.com/iis/application-frameworks/running-classic-asp-applications-on-iis-7-and-iis-8/classic-asp-not-installed-by-default-on-iis -
IIS 6.0 から IIS 7.0 への ASP.NET アプリケーションの移行
https://learn.microsoft.com/previous-versions/aspnet/bb515251(v=vs.100)
-
ASP→ASP.NET移行テクニック - Insider.NET
http://www.atmarkit.co.jp/fdotnet/aspmigrt/index/index.html -
柔軟性と機能性を大幅に高めたIIS 7.0
http://www.atmarkit.co.jp/fwin2k/winsv2008/04iis7_01/04iis7_01_01.html
Tags: 移行, Windows, IIS
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。