영어 버전: http://dflying.dflying.net/1/archive/101_prefer_overrides_to_event_handlers_in_aspnet_page.html
이것은 우리에게 익숙한 Page_Load() 메서드입니다. 실제로는 System.Web.UI.Page에 정의된 Load 이벤트가 트리거될 때 실행을 시작하는 이벤트 핸들러입니다.
// 이벤트 핸들러 사용
protected void Page_Load(개체 전송자, EventArgs e)
{
// 여기서 논리
}
이는 System.Web.UI.Page 클래스의 OnLoad() 메서드를 재정의하는 것입니다. // 재정의 사용
보호된 재정의 무효 OnLoad(EventArgs e)
{
// 여기서 논리
베이스.온로드(e);
}
위의 두 가지 방법 모두 동일한 기능을 수행할 수 있지만 Override 방법을 사용하는 것이 좋습니다.
먼저, 독립된 객체들 간의 통신을 구현하기 위해 이벤트 핸들링 메커니즘을 사용합니다. 예를 들어 버튼을 클릭하면 페이지는 이벤트 처리 메커니즘을 통해 이 메시지를 학습하고 처리할 수 있습니다. 하지만 이 예에서는 Load 이벤트가 System.Web.UI.Page에 정의되어 있으며 그 자체가 페이지의 일부입니다. 클래스 내에서 이벤트를 발생시킨 다음 이벤트 자체를 처리하는 것은 이상할 것입니다.
둘째, 효율성 측면에서 이벤트 처리는 Override만큼 좋지 않습니다. 이는 .NET Framework의 구현에 따라 결정되며 우리 모두는 이를 알고 있습니다.
또한 이벤트를 사용할 때 이벤트 처리 방법을 첨부하는 부분과 이벤트 처리 함수 자체를 정의하는 부분 두 곳을 유지해야 합니다. ASP.NET 2.0은 이미 미리 정의된 일부 이벤트 처리 메서드 이름을 제공하지만 여전히 ASP.NET 1.1을 사용하는 개발자가 많습니다. Override를 사용할 때에는 Override 기능 자체만 유지하면 됩니다.
물론 이벤트 처리 메커니즘에는 고유한 이점이 있습니다. 예를 들어, 런타임에 이벤트 처리 방법을 쉽게 지정하여 어디에나 분산되어 있는 여러 이벤트 처리 방법을 순서대로 실행할 수 있습니다. 그러나 ASP.NET 페이지에서는 이러한 기능을 사용하지 않습니다. 우리는 항상 로드되는 페이지의 동작을 정의하는 메서드를 갖게 되며 페이지에 여러 Page_Load() 메서드가 표시되지는 않습니다.
보다 일반적으로 ASP.NET 페이지뿐만 아니라 다른 상황에서도 가능한 한 이벤트 대신 재정의를 사용해야 합니다.
재정의를 사용할 때는 기본 클래스 메서드를 호출하는 것을 잊지 않도록 주의하세요(Visual Studio가 자동으로 수행함).
출처: Dflying Chen 블로그