النسخة الإنجليزية: http://dflying.dflying.net/1/archive/101_prefer_overrides_to_event_handlers_in_aspnet_page.html
هذه هي طريقة Page_Load() التي نعرفها. في الواقع، إنه معالج الأحداث، الذي يبدأ في التنفيذ عند تشغيل حدث التحميل المحدد في System.Web.UI.Page.
// استخدم معالج الأحداث
Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
{
// المنطق هنا
}
هذا هو تجاوز أسلوب OnLoad() في فئة System.Web.UI.Page. // استخدم التجاوز
تجاوز محمي باطل OnLoad (EventArgs e)
{
// المنطق هنا
base.OnLoad(e);
}
على الرغم من أن كلتا الطريقتين المذكورتين أعلاه يمكنهما إنجاز نفس الوظيفة، إلا أنني أوصي باستخدام طريقة التجاوز.
بادئ ذي بدء، يتم استخدام آلية معالجة الأحداث لتنفيذ الاتصال بين الكائنات المستقلة. على سبيل المثال، عند النقر فوق زر، يمكن للصفحة التعرف على هذه الرسالة من خلال آلية معالجة الحدث ومعالجتها. ولكن في هذا المثال، تم تعريف حدث التحميل في System.Web.UI.Page وهو في حد ذاته جزء من صفحتنا. سيكون من الغريب إرسال حدث من داخل الفصل ثم التعامل مع الحدث نفسه.
ثانيًا، من حيث الكفاءة، فإن التعامل مع الأحداث ليس بجودة التجاوز. يتم تحديد ذلك من خلال تطبيق .NET Framework ونحن جميعا نعرف ذلك.
أيضًا، يجب الحفاظ على مكانين عند استخدام الأحداث: إرفاق طريقة معالجة الحدث وتعريف وظيفة معالجة الحدث نفسها. على الرغم من أن ASP.NET 2.0 يوفر بالفعل بعض أسماء طرق معالجة الأحداث المحددة مسبقًا، إلا أنه لا يزال هناك العديد من المطورين الذين يستخدمون ASP.NET 1.1. عند استخدام التجاوز، ما عليك سوى الحفاظ على وظيفة التجاوز نفسها.
بالطبع، آلية معالجة الأحداث لها فوائدها الخاصة، على سبيل المثال، من السهل تحديد طرق معالجة الأحداث في وقت التشغيل، مما يسمح بتنفيذ طرق معالجة الأحداث المتعددة الموزعة في كل مكان بالتسلسل. لكننا لن نستخدم هذه الميزات في صفحات ASP.NET. سيكون لدينا دائمًا طريقة لتحديد سلوك الصفحة التي يتم تحميلها، ولن يكون لدينا طرق متعددة لـ Page_Load() تظهر على الصفحة.
لكي نكون أكثر عمومية، ليس فقط في صفحات ASP.NET، يجب علينا أيضًا استخدام Override بدلاً من Event في مواقف أخرى قدر الإمكان.
عند استخدام التجاوز، احرص على عدم نسيان استدعاء أسلوب الفئة الأساسية (سيقوم Visual Studio بذلك نيابةً عنك).
المصدر: مدونة Dflying Chen