連載

ASP→ASP.NET移行テクニック

第2回 移行インパクトのツボを探る

山田 祥寛
2004/05/22
Page1 Page2 Page3 Page4

そのほかの構成要素の変更点

 次に、レガシーASPのそのほかの構成要素に関する変更点を見てみよう。ASP/ASP .NETは開発者に対して容易なコーディングを可能にするためにいくつかのプログラム要素を提供している。

○ディレクティブ構文の変更点

 ディレクティブとは、当該ページの処理方法を宣言するためのプログラム要素だ。レガシーASPにおいては、ページの先頭に1回だけディレクティブを記述することができた。

<%@ Language="VBScript" EnableSessionState="False" %>

 ASP.NETでは大幅に新しいディレクティブが追加されているが、上記の記法は引き続き使用することができる(Language属性の値は「VBScript」から「VB」などに変更しなければならないにせよ)。

 レガシーASPがサポートする5つのディレクティブ(CodePage、EnableSessionState、Language、LCID、Transaction)は、ASP.NETでは@Pageディレクティブに組み込まれたが、移行のために@Pageディレクティブでは省略記法を提供しているからだ。つまり、以下の2つのディレクティブ構文は「.aspx」ファイルにおいて、まったく同じ意味である。

<%@ Page Language="VB" EnableSessionState="False" %>

<%@ Language="VB" EnableSessionState="False" %>

○Global.asaxの変更点

 Global.asaxは「ASP.NETアプリケーション・ファイル」とも呼ばれ、ASP.NETにおいてアプリケーション・レベルの各種イベントを処理したり、アプリケーション(またはセッション)共通で利用可能なオブジェクトの宣言を行ったりするためのものだ。これは、レガシーASPにおいては、Global.asaという名前で提供されているものであり、ファイル名が変更になったほかは、ほとんど完全な互換性を保証している。

 対応するアプリケーション・イベントは従来の4つから18へと大幅に増強されているが、あくまで既存のものに対する追加であるので、言語そのもの(VBScriptやJScript)としての変更点を除けば、移行に当たっての留意点はないといってよいだろう。

 従来のGlobal.asa同様、アプリケーション・ルートの直下に1つだけ配置することができ、省略も可能である(省略時は一切のアプリケーション・イベントは未定義であると見なされる)。

分類 イベント イベント発生のタイミング
条件付きイベント Application_OnStart* アプリケーションの初回起動時
Session_OnStart* ユーザーセッションの初回起動時
Session_OnEnd* ユーザーセッションの終了時
Application_OnEnd* アプリケーションの終了時
Application_OnDisposed アプリケーションをメモリから破棄するタイミング
Application_OnError アプリケーション内で処理されない例外が発生したタイミング
リクエスト・イベント Application_OnBeginRequest リクエスト処理を開始する直前
Application_OnAuthenticateRequest 認証処理が行われる直前
Application_OnAuthorizeRequest 認証処理が完了した直後
Application_OnResolveRequestCache キャッシュ処理のタイミング
Application_OnAcquireRequestState セッション状態などを取得するタイミング
Application_OnPreRequestHandlerExecute ページの実行を開始する直前
Application_OnPostRequestHandlerExecute ページの実行を完了した直後
Application_OnReleaseRequestState すべての処理完了後
Application_OnUpdateRequestCache 出力キャッシュを更新のタイミング
Application_OnEndRequest すべてのリクエスト処理が完了した直後
Application_OnPreSendRequestHeaders HTTPヘッダを送信する直前
Application_OnPreSendRequestContent HTTPコンテンツを送信する直前
Global.asaxが対応するイベント
*はGlobal.asaも対応しているイベント。

○構成ファイルの変更点

 構成ファイルとは、ASP.NETから導入された概念だ。その名のとおり、サーバ・マシンやアプリケーションの構成・配置を設定するためのXMLファイルで、サーバ上に唯一存在する「マシン構成ファイル(machine.config)」とアプリケーション・ルート配下の個別の(サブ)フォルダに配置可能な「アプリケーション構成ファイル(web.config)」とに大別される。

ASP.NETの構成ファイル
サーバ上に唯一存在する「マシン構成ファイル(machine.config)」とアプリケーション・ルート配下の個別の(サブ)フォルダに配置可能な「アプリケーション構成ファイル(web.config)」とに大別される。

 旧来のASP 3.0においては、こうしたサーバやアプリケーションの設定をIIS上で行わなければならなかった。IISで設定された設定情報は「メタベース」と呼ばれる独自の形式で保存されるため、アプリケーションを移行するなどの状況が発生した場合にもコピーする手段は存在せず、運用管理者がその都度IISに対して設定を行わなければならなかった。

 しかし、ASP.NETではテキスト・ファイルとしてアプリケーション・フォルダ内に配置することができるので、こうした不具合はすべて解消される。ほかのサーバに移行する場合にも、アプリケーション・ルートを丸ごとコピー(XCopy)すれば、設定もすべて引き継がれる。IISに対して行わなければならないことは、ただ仮想ディレクトリを設置することだけだ。

 もっとも、構成ファイルの設置は任意であるため、レガシーASPからASP.NETへの移行に際しても、必ずしも構成ファイルを「設置しなければならない」ということではない。IIS上での設定についても引き続き有効である。しかし、これまでもしもIIS上で設定を施していた項目があるとするならば、移行に際しては「構成ファイル化」することを強くお勧めしたい。どうせ同じ手間をかけるならば、後につながらないIISへの設定に時間を費やすよりもはるかに有意義だろう。

 構成ファイルで設定可能な主要項目は、以下のとおりだ。

要素名 概要
<authentication> 認証方法の設定
<authorization> 認定対象・リソースの設定
<customErrors> カスタム・エラー・ページの設定
<globalization> 文字エンコーディング・ロケールの設定
<httpHandlers> HTTPリクエストを処理するハンドラ・クラスの設定
<httpModules> HTTPリクエストをフィルタリング処理するモジュール・クラスの設定
<httpRuntime> HTTPランタイムのパラメータ値を設定
<pages> ページ固有の処理パラメータ設定
<processModel> IISにおけるASP.NETプロセスの設定
<sessionState> セッション状態の設定
<trace> トレース・サービスの設定
構成ファイルで設定可能な主要項目
 

 INDEX
  ASP→ASP.NET移行テクニック
  第2回 移行インパクトのツボを探る
    1.変更・廃止されたオブジェクト/メソッド
    2.推奨されないメソッド/プロパティ
  3.ディレクティブ構文/Global.asax/構成ファイルの変更点
    4.SSI/Server.Executeメソッドについて
 
インデックス・ページヘ  「ASP→ASP.NET移行テクニック」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間