ASP.NET 4の自動起動特性の概要

3166 ワード

外部クライアントがWebサーバにアクセスするのを待つことなく、Webアプリケーションを自動的に起動します.これにより、カスタムスクリプトを作成してサーバを予熱したり、データキャッシュを準備したりすることを避けるために、最初の訪問者により迅速な返信体験を提供できます.任意のタイプのASPに使用できます.NETアプリケーション、ASPベースを含む.NET Web FormsとASP.NET MVCの応用.
ASP.NET 4でのWebアプリケーションの自動起動
一部のウェブアプリケーションでは、ユーザーアクセスを処理する前に、多くのデータをロードしたり、大きな初期化処理をしたりする必要があります.今日はASPを使います.NETの開発者はアプリケーションのGlobalをよく使う.asaxファイルの「Application_Start」イベント処理関数は、これらの作業を行います(このイベントは、最初のリクエストの実行時にトリガーされます).カスタムスクリプトを設計したり、アプリケーションに偽のリクエストを周期的に送信したりして、顧客アクセスの前にこのコードを実行したり、不幸な最初の訪問者がこのロジックの実行を待ってからリクエストを処理したりします(これは、これらのユーザーに長い遅延をもたらすことができます).
ASP.NET 4には「自動起動(auto-start)」という新しい機能があり、IIS 7.5(Windows 7とWindows Server 2008 R 2のリリースに伴う)でASPを実行することができます.NET 4の場合に使用します.この自動起動特性は、ASPを初期化するアプリケーションワークプロセスを起動するための制御可能な方法を提供する.NETアプリケーションを適用し、HTTPリクエストを受け付けます.
ASPを1つNET 4アプリケーションは自動起動するように構成されている
ASPを使用するにはNET 4の自動起動機能では、まずIISアプリケーションプールのワークフローを構成し、実行中のアプリケーションをwebサーバが最初にマウントされたときに自動的に起動させます.構成方法は、IIS 7.5のアプリケーションホストを開く.configファイル(C:WindowsSystem 32inetsrvconfigapplicationHost.config)は、適切な<アプリケーションPools>にstartMode="AlwaysRunning"プロパティを追加します.

< applicationPools>  
   < add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />  
< /applicationPools> 

Windowsタスクマネージャを実行する場合は、「すべてのユーザーのプロセスを表示」チェックボックスをクリックし、アプリケーションホストを選択します.configファイルのstartModeプロパティを変更して保存すると、ファイル保存後の瞬間に新しい「w 3 wp.exe」ワークフローが起動します.
単一IISアプリケーションプールのワークフローは複数のASPをホストすることができる.NETアプリケーションでは、対応するアプリケーションの<アプリケーション>にserviceAutoStartEnabled="true"属性を追加して、ワークプロセスのマウント時に自動的に起動するアプリケーションを指定できます.

< sites>  
   < site name="MySite" id="1">  
     < application path="/" serviceAutoStartEnabled="true" serviceAutoStartProvider="PreWarmMyCache" /> 
   < /site>  
< /sites> 
< serviceAutoStartProviders>  
   < add name="PreWarmMyCache" type="PreWarmCache, MyAssembly" />  
< /serviceAutoStartProviders> 

上のserviceAutoProvider=「PreWarmMyCache」プロパティはconfigファイルのプロバイダ構成を参照し、アプリケーションをカプセル化するための任意の「ウォームアップ」ロジックに使用するカスタムクラスを構成できます.このクラスは、ワークプロセスおよびアプリケーションのプリロード時に(外部Webリクエストを受信する前に)自動的に呼び出され、リクエストを受信および処理する前に実行したい初期化またはキャッシュ・マウント・ロジックを実行するために使用できます.

public class PreWarmCache : System.Web.Hosting.IProcessHostPreloadClient { 
  public void Preload(string[] parameters) {  
    // Perform initialization and cache loading logic here...  
  }  
} 

IISはアプリケーションをこのような状態に起動し、この状態では、「ウォームアップ」ロジックが完了するまで要求を受け入れることができません.Preloadメソッドでの初期化コードの実行が完了すると、ASP.NETアプリケーションは処理可能なリクエストとしてマークされます.
新しい自動起動「warming up」機能をIIS 7アプリケーションリクエストガイド(Application Request Routing,ARR)拡張のロードバランシング機能と組み合わせて、アプリケーションの初期化が完了し、HTTPリクエストを受け入れた後、ロードバランサに信号を送ることもできます.このとき、サーバはweb farmを入れてリクエストを処理することができます.
終わりの言葉
ASP.NET 4とIIS 7.5の自動起動の新しい特性は、端末ユーザーがアプリケーションにアクセスする前に、コストのかかるアプリケーション起動とプリキャッシュロジックを実行することを明確に定義し、最初から「ウォームアップ」を適用し、一貫した高性能体験を提供することができます.
この文書は、自動起動の特性をより深く理解するのに役立つことを望んでいます.