ASP.NET 2.0은 또한 모든 기능을 갖춘 응용 프로그램 모니터링 및 상태 모니터링을 제공합니다. 시스템은 완전히 확장 가능한 이벤트 모델과 다양한 수신자에게 이벤트를 보낼 수 있는 이벤트 엔진으로 구성됩니다. 예를 들어 서버가 실행 중임을 알리고 사용 가능한 메모리 양을 포함하는 전자 메일을 매일 보내도록 ASP.NET 응용 프로그램을 구성할 수 있습니다. 마찬가지로, 처리되지 않은 예외에 연결된 상태 이벤트를 만들 수 있습니다. 예외 내용, 요청 헤더, 시간 및 날짜는 모두 오류 로깅 데이터베이스로 전송될 수 있습니다.
ASP.NET 2.0에는 하트비트, 응용 프로그램 수명 이벤트(시작/중지/컴파일) 및 오류 트랩 이벤트(처리되지 않은 예외)를 비롯한 기본 제공 이벤트가 포함되어 있습니다. 그러나 이러한 기본 클래스를 기반으로 쉽게 빌드하여 애플리케이션에서 고유한 이벤트를 다시 생성하고 발생시킬 수 있습니다. 예를 들어, 100번째 사용자가 특정 링크를 클릭할 때 기록하는 맞춤 이벤트를 만들 수 있습니다.
ASP.NET 2.0 상태 모니터링 시스템의 가장 강력한 기능은 web.config 및 machine.config 파일을 통해 완벽하게 구성할 수 있다는 것입니다. 일반 XML을 사용하면 이벤트를 정의하고, 공급자(이벤트 수신기)를 정의하고, 특정 이벤트를 특정 공급자에게 보낼 수 있습니다.
이벤트 생성 이벤트는 예외 구조와 유사합니다. 즉, 이벤트 클래스 자체에는 메시지 컨테이너 외에는 기능이 거의 없습니다. 상태 모니터링 측면에서 모든 이벤트는 System.Web.Management.WebBaseEvent에서 상속됩니다. 그러나 HTTP 요청 데이터 수집 또는 예외 처리와 같은 특수한 목적으로 사용되는 상위 수준 기본 클래스에서 파생될 수도 있습니다.
목록 4.시스템을 사용한
사용자 정의 이벤트
.
System.Web.Management
공용 클래스 CustomEvent 사용: WebBaseEvent
{
공개 const int EventCode = WebEventCodes.WebExtendedBase + 10;
공개 MyEvent(문자열 메시지, 개체 eventSource)
: 베이스(메시지, 이벤트소스, 이벤트코드)
{ }
}
사용자 정의 이벤트 생성에서 가장 중요한 부분은 고유한 EventCode를 제공하는 것입니다. 모든 내장 이벤트 코드는 WebEventCodes 열거에 있습니다. 사용자 정의 이벤트에는 WebEventCodes.WebExtendedBase + 1부터 시작하는 번호가 있어야 합니다. 그 외에 사용자 정의 이벤트를 생성할 때 일반적으로 수행하는 유일한 작업은 이벤트를 올바르게 초기화하는 것입니다.
이벤트 사용 내장 이벤트가 자동으로 실행되지만 언제든지 사용자 정의 이벤트를 실행하도록 애플리케이션에 코드를 추가할 수 있습니다.
목록 5. 이벤트 발생
<script runat="server">
void Page_Load(객체 전송자, EventArgs e)
{ // 맞춤 이벤트 발생 MyEvent myEvent =
new MyEvent("webevent 샘플 페이지 로드 중", this);
</script>
ASP.NET 페이지에서 이벤트를 발생시키는 경우 해당 이벤트의 새 인스턴스를 만든 다음 raise() 메서드를 실행하기만 하면 됩니다. raise() 메서드는 이벤트 인스턴스를 상태 모니터링 엔진에 자동으로 전달합니다. 그런 다음 엔진은 이벤트를 프로필 및 공급자에 매핑하고 해당 이벤트를 올바른 공급자에게 전달합니다. 공급자는 궁극적으로 이벤트를 올바른 수신자에게 전달합니다.
상태 모니터링 구성 상태 모니터링은 machine.Config 또는 Web.Config 파일의 새 영역에서 구성됩니다. 애플리케이션의 상태를 주기적으로 보고하는 웹 하트비트를 설정하도록 섹션을 구성할 수 있습니다. 또한 이벤트를 생성하고 다양한 공급자를 통해 이벤트를 전달하도록 애플리케이션을 구성할 수도 있습니다.
이벤트를 구성하려면 이벤트 매핑 영역에서 각 이벤트를 식별해야 합니다. 이벤트는 고유한 이름과 전체 유형으로 식별됩니다. 이벤트 이름은 규칙 영역에서 링크로 사용됩니다.
목록 6. 이벤트 매핑 영역
<!-- 이벤트 매핑은 모니터링되는 이벤트를 정의합니다 -->
<이벤트 매핑>
<이름 추가="SampleWebRequests"
유형="Samples.AspNet.SampleWebRequestEvent, SampleWebRequestEvent,
버전=0.0.0.0, 문화=중립, PublicKeyToken=f0c63b9a560d5e5a"/>
</eventMappings>
ASP.NET 2.0에는 다음과 같은 이름으로 구성된 여러 내장 이벤트가 포함되어 있습니다.
• 모든 이벤트. 모든 이벤트 이름은 WebBaseEvent를 캡처합니다. 이 이벤트 클래스는 상태 모니터링 시스템에서 캡처한 모든 이벤트에 대한 광범위한 포괄적인 내용입니다.
• 하트비트. 하트비트 이벤트는 WebHeartBeatEvent를 사용하여 웹 응용 프로그램의 상태에 대한 정기적인 알림을 제공합니다.
• 애플리케이션 수명 이벤트. 애플리케이션 수명 이벤트에는 애플리케이션 시작 및 중지, 애플리케이션 전체 또는 일부 재컴파일이 포함됩니다. 이러한 이벤트는 WebApplicationLifetimeEvent를 기반으로 하며 수명 이벤트가 발생할 때 날짜, 시간 및 현재 상태를 보고합니다.
• 모든 오류. 모든 오류 범주는 시스템에서 감지된 모든 이상 또는 오류를 수집합니다. 이러한 이벤트는 WebBaseErrorEvent를 기반으로 합니다.
• 인프라 오류. WebErrorEvent를 사용하여 ASP.NET 런타임 또는 IIS와 관련된 오류를 포착합니다. 이러한 이벤트는 모든 오류 범주의 하위 클래스이며 주로 응용 프로그램 개발자보다는 시스템 관리자와 관련이 있습니다.
• 요청 처리 오류입니다. 요청 중에 발생하는 오류나 예외는 WebRequestErrorEvent를 트리거합니다. 이 이벤트는 들어오는 요청과 요청 처리와 관련된 오류를 기록합니다. 요청 처리 오류도 모든 오류 범주의 하위 집합입니다.
• 모든 리뷰. 상태 모니터링 시스템을 사용하여 WebAuditEvents를 통해 감사 시도를 제공할 수 있습니다. 이 이벤트는 웹 애플리케이션에서 활성 사용자의 작업을 자동으로 기록합니다. 가장을 사용하는 경우 감사 이벤트를 통해 애플리케이션을 사용하는 사람과 해당 애플리케이션이 어떻게 사용되는지 추적할 수 있습니다.
• 실패 감사. WebFailureAuditEvent는 사용자가 잘못된 사용자 이름이나 비밀번호로 웹 사이트에 로그인을 시도할 때 트리거되는 특수 감사 이벤트 유형입니다. 이 이벤트는 지정된 리소스에 대해 사용자를 인증할 수 없는 경우에도 발생합니다.
• 성공적인 검토. WebSuccessAuditEvent는 사용자가 감사 로깅이 필요한 다른 작업을 인증하거나 수행할 때마다 발생하는 실패 이벤트에 해당합니다.
사용자 지정 이벤트는 쉽게 만들 수 있지만 이벤트를 발생시키려면 애플리케이션에 코드를 추가해야 합니다.
공급자 구성 각 공급자는 구성 파일에 등록되어야 합니다. 공급자를 등록하려면 애플리케이션의 고유한 이름과 유형이 필요합니다. 이 유형에는 실제 공급자 클래스의 전체 강력한 이름이 포함됩니다. 공급자 이름은 규칙 영역에서 링크로 사용됩니다.
목록 7. 공급자
<healthMonitoring Enabled="true" heartBeatInterval="0">
<!-- 공급자는 상태 이벤트를 WMI 또는 SMTP 이메일과 같은 다양한 대상에 연결합니다 -->
<공급자>
<추가 이름="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. 규칙
<!-- 규칙은 이벤트를 공급자 및 프로필에 연결하고 이벤트 확인 간격을 정의합니다 -->
<규칙>
<add name="사용자 정의 데이터베이스 이벤트" eventName="CustomDBEvents"
공급자="WmiEventProvider" profile="Database" minInterval="00:01:00" />
<add name="표준 웹 요청" eventName="모든 이벤트"
공급자="SqlEventProvider" profile="Default" minInterval="00:01:00" /> </rules>
</healthMonitoring>
규칙은 다양한 속성으로 구성된 다양한 작업을 수행합니다.
• 이름. 규칙 이름은 이벤트가 수신자에게 전송될 때 표시되는 친숙한 이름입니다.
• 이벤트 이름. eventName은 영역에 구성된 이벤트에 매핑됩니다.
• 공급자. 공급자는 영역에 구성된 공급자에 대한 링크입니다. 이 규칙과 일치하는 모든 이벤트는 이 공급자를 통해 이 공급자가 지원하는 대상으로 전달됩니다. 예를 들어 System.Web.Management.SqlWebEventProvider는 자동으로 SQL Server 데이터베이스에 이벤트를 기록합니다.
• 프로필. 다양한 공급자는 프로필 속성을 이벤트 표시용 필터로 사용합니다. 예를 들어, 이메일 공급자는 "긴급" 프로필이 있는 모든 이벤트에 대해 즉각적인 메시지를 보낼 수 있지만 해당 날짜의 "일상적인" 프로필 이벤트를 편집하여 매일 이메일만 보낼 수도 있습니다.
• 최소 간격. 하트비트와 같은 일부 이벤트는 가능한 가장 짧은 시간 간격 내에 실행되어야 합니다. 이 속성을 사용하여 최소 이벤트 간격을 설정할 수 있습니다.
이 구성 영역에서는 다양한 건강 관련 이벤트를 설정하고 이벤트를 다양한 공급자에 매핑할 수 있습니다. 예를 들어 10분마다 WMI 이벤트를 보내는 하트비트를 설정할 수 있습니다. 마찬가지로, 포착되지 않은 예외에 대해 이메일 알림을 설정할 수 있습니다.
관련 기사:
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B893664
http://blog.csdn.net/dshpsky/archive/2006/06/18/810893.aspx