ASP.NET 2.0のWebイベント


ASP.NET 2.0はまた、全機能のアプリケーション監視と健康監視を提供しています.このシステムは,完全に拡張可能なイベントモデルと,イベントを複数の受信機に送信できるイベントエンジンから構成される.たとえば、ASPを構成できます.NETアプリケーションは、サーバが稼働しており、使用可能なメモリの数が含まれていることを示す毎日のEメールを送信します.同様に、例外を処理していない健康イベントにリンクを作成できます.例外コンテンツ、リクエスト・タイトル、および時間および日付は、エラー・ログ・データベースに送信できます.
ASP.NET 2.0には、ハートビート、アプリケーション生存期間イベント(起動/停止/コンパイル)、エラートラップイベント(未処理例外)など、内蔵されたイベントが含まれています.ただし、これらのベースクラスを簡単に構築して、アプリケーションから独自のイベントを再作成して開始できます.たとえば、100人目のユーザーが特定のリンクをクリックしたときを記録するカスタムイベントを作成できます.
ASP.NET 2.0健康監視システムの本当に強力な機能は、webを通じてです.义齿configファイルは完全に構成可能です.通常のXMLを使用すると、イベントを定義したり、プロバイダ(イベント受信機)を定義したり、特定のイベントを特定のプロバイダに送信したりできます.
イベントの作成
イベントは構造的に異常と類似している.つまり、メッセージコンテナとしてだけでなく、
eventクラス自体はほとんど機能していません.健康監視の面では、すべての事件は
Sytstem.Web.Management.WebBaseEvent継承.ただし、HTTPリクエストデータの収集や例外の処理など、専用の目的で使用される高度なベースクラスから派生することもできます.
リスト4.カスタムイベント
using System;
using System.Web.Management;
public class CustomEvent : WebBaseEvent
{
  public const int EventCode = WebEventCodes.WebExtendedBase + 10;
  public MyEvent(string message, object eventSource) 
                : base(message, eventSource, EventCode)
  { }
}

カスタムイベントを作成する最も重要な部分は、ユニークなEventCodeを提供することです.すべての組み込みイベントコードは
WebEventCodes列挙中.カスタムイベントには
WebEventCodes.WebExtendedBase+1から始まる数字.それ以外にカスタムイベントを作成する唯一の一般的なタスクは、イベントを正しく初期化することです.
イベントの使用
内蔵イベントは自動的に励起されますが、コードをアプリケーションに追加して、いつでもカスタムイベントを開始できます.
リスト5.事件を起こす
<script runat="server"> 
   void Page_Load(Object sender, EventArgs e) 
   { // Raise a custom event MyEvent myEvent = 
          new MyEvent("loading webevent sample page", this); myEvent.Raise(); } 
</script> 

ASP.からNETページがイベントを開始すると、イベントの新しいインスタンスを作成して実行するだけです.
Raise()メソッド.
Raise()メソッドは、イベントインスタンスを健康監視エンジンに自動的に渡します.その後、このエンジンはイベントをプロファイルとプロバイダにマッピングし、イベントを正しいプロバイダに渡します.プロバイダは最終的にイベントを正しい受信機に渡します.
健康監視の設定
健康監視はmachineです.ConfigまたはWeb.Configファイルの新しい領域構成です.部分を構成して、アプリケーションのステータスを周期的に報告するWeb検出信号を設定できます.アプリケーションを構成してイベントを生成し、そのイベントをさまざまなプロバイダで渡すこともできます.
イベントの設定
各イベントは、イベントマッピング領域で識別する必要があります.イベントは、一意の名前と完全なタイプで識別されます.イベント名は、ルール領域でリンクとして使用されます.
リスト6.イベントマッピング領域
<!-- Event mappings define the events that are monitored --> 
<eventMappings> 
     <add name="SampleWebRequests" 
          type="Samples.AspNet.SampleWebRequestEvent, SampleWebRequestEvent,
                Version=0.0.0.0, Culture=neutral, PublicKeyToken=f0c63b9a560d5e5a"/> 
</eventMappings> 

ASP.NET 2.0には、以下の名前で構成されたいくつかの組み込みイベントが付属しています.

すべてのイベント.すべてのイベント名を取得
WebBaseEvent.このイベントカテゴリは、健康監視システムによって捕獲された各イベントに対する広範なcatch−allである.

検出信号.検出信号イベント使用
WebHeartBeatEventは、Webアプリケーションのステータスに関する定期的な通知を提供します.

アプリケーション生存期間イベント.アプリケーション生存期間イベントには、アプリケーションの起動と停止、およびアプリケーションの一部または全部の再コンパイルが含まれます.これらのイベントは
WebApplicationLifetimeEventの
Lifetimeイベントが発生した場合、日付、時間、および現在のステータスがレポートされます.

すべてのエラー.すべてのエラーカテゴリ収集システムで検出された異常またはエラー.これらのイベントは
WebBaseErrorEventの.

インフラストラクチャエラー.使用
WebErrorEventキャプチャとASP.NETライブラリまたはIIS関連エラーを実行します.これらのイベントは、すべてのエラーカテゴリのサブクラスであり、主にアプリケーション開発者ではなくシステム管理者に関連しています.

要求処理エラー.リクエスト中に発生したエラーまたは例外が1つトリガーされます.
WebRequestErrorEvent.このイベントは、入力されたリクエストと、そのリクエストの処理に関連するエラーを記録します.リクエスト処理エラーも、すべてのエラーカテゴリのサブセットです.

すべてのレビュー.健康監視システムを使用して
WebAuditEventは監査の試行を提供します.このイベントは、Webアプリケーションでアクティブなユーザーの操作を自動的に記録します.シミュレーションを使用している場合は、監査イベントがアプリケーションを使用している人と、追跡を維持する方法を支援します.

レビューに失敗しました.
WebFailureAuditEventは、無効なユーザー名またはパスワードを使用してWebサイトにログインしようとするとトリガーされる特殊な監査イベントタイプです.このイベントは、指定したリソース・ユーザーに対して検証できない場合にも発生します.

レビューに成功しました.
WebSuccessAuditEventは、ユーザーが他の監査レコードが必要な操作を検証または実行している限り、失敗したイベントに対応します.
カスタムイベントは簡単に作成できますが、アプリケーションにコードを追加してイベントを開始する必要があります.
プロバイダの構成
各プロバイダは、プロファイルに登録する必要があります.プロバイダを登録するには、アプリケーションの一意の名前とタイプが必要です.このタイプには実際の
providerクラスの完全な強い名前(strong name).プロバイダの名前は、ルール領域のリンクとして使用されます.
リスト7.プロバイダ
<healthMonitoring Enabled="true" heartBeatInterval="0"> 
 <!-- Providers link health events to various targets such as WMI or SMTP email --> 
   <providers> 
      <add name="WmiEventProvider" type="System.Web.Management.WebWmiEventProvider,
          System.Web,Version=1.2.3400.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
  </providers> 

ASP.NET 2.0には、WMI、Windowsイベントモニタ、SMTP電子メール、SQL Serverデータベースのプロバイダが付属しています.適切なベースクラスを拡張することで、カスタムプロバイダを作成して他のイベント受信機に接続できます.
プロバイダへのイベントのマッピング
健康監視を構成する最後のステップは、イベントをプロバイダにルールで接続することです.ルールは、良いイベント名、イベントクラス、プロバイダ、イベントプロファイル、またはカテゴリ間のリンクを提供します.ルールを使用して、特定のイベントを開始する最短時間間隔を定義することもできます.
リスト8.ルール#ルール#
<!-- Rules link events to providers and profiles, and define intervals for event checking --> 
<rules> 
    <add name="Custom Database Events" eventName="CustomDBEvents" 
         provider="WmiEventProvider" profile="Database" minInterval="00:01:00" /> 
    <add name="Standard Web Requests" eventName="All Events" 
         provider="SqlEventProvider" profile="Default" minInterval="00:01:00" /> </rules> 
</healthMonitoring> 
 

ルールは、異なるプロパティで構成されたいくつかの異なるタスクを実行します.

name.ルール名は友好的な名前で、イベントが受信機に送信されると表示されます.

eventName.
eventNameは、ゾーン内で構成されたイベントにマッピングされます.

provider.プロバイダは、領域で構成されたプロバイダへのリンクです.このルールに一致するイベントは、このプロバイダによってサポートされるターゲットに渡されます.例えば、
System.Web.Management.SqlWebEventProviderは、SQL Serverデータベースにイベントを自動的に書き込みます.

profile.異なるプロバイダは、プロファイルプロパティをイベントを表示するフィルタとして使用します.たとえば、Eメールプロバイダは、「緊急」プロファイルのあるイベントに対してすぐにメッセージを送信することができますが、その日の「通常」プロファイルイベントのアセンブリを持つ日常的なEメールのみを送信することもできます.

minInterval.検出信号のようないくつかのイベントは、最短時間間隔で励起されなければならない.このプロパティを使用して、最小イベント間隔を設定できます.
この構成領域では、さまざまな健康関連イベントを設定し、さまざまなプロバイダにイベントをマッピングできます.たとえば、WMIイベントを10分ごとに送信する検出信号を設定できます.同様に、取得されていない例外に対して電子メール・アラートを設定できます.
関連記事:
[url]http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B893664[/url]
[url]http://blog.csdn.net/dshpsky/archive/2006/06/18/810893.aspx[/url]
自由、革新、研究、探求......