تطبيق ASP.NET ودورة حياة الصفحة
⚡ ملخص ذكي
يصف دورة حياة تطبيق وصفحة ASP.NET المراحل المرتبة التي يمر بها الطلب، بدءًا من بدء تشغيل التطبيق وإنشاء الكائنات وصولًا إلى تهيئة الصفحة وتحميلها وعرضها وتفريغها.ping يضع المطورون التعليمات البرمجية في المكان الصحيح.

ما هي دورة حياة ASP.Net؟
عند تشغيل تطبيق ASP.Net، يتم تنفيذ سلسلة من الخطوات. تشكل هذه السلسلة من الخطوات دورة حياة التطبيق.
دعونا نلقي نظرة على المراحل المختلفة لدورة حياة نموذجية لتطبيق ويب ASP.Net.
دورة حياة ASP.Net
1) بدء التطبيق - دورة حياة الن ASP.NET يبدأ تشغيل التطبيق عند إرسال طلب من المستخدم إلى خادم الويب الخاص بتطبيق ASP.NET. يحدث هذا عادةً عند زيارة المستخدم الأول للصفحة الرئيسية للتطبيق. خلال هذه الزيارة، يقوم خادم الويب بتنفيذ دالة تُسمى Application_Start، حيث تُعاد عادةً جميع المتغيرات العامة إلى قيمها الافتراضية.
2) إنشاء الكائن – المرحلة التالية هي إنشاء خادم الويب لـ HttpContext وHttpRequest وHttpResponse. يُعدّ HttpContext مجرد حاوية لكائنات HttpRequest وHttpResponse. يحتوي كائن HttpRequest على معلومات حول الطلب الحالي، بما في ذلك ملفات تعريف الارتباط ومعلومات المتصفح. بينما يحتوي كائن HttpResponse على الاستجابة التي تُرسل إلى العميل.
3) إنشاء تطبيق HttpApplication – يتم إنشاء هذا الكائن بواسطة خادم الويب. وهو الكائن الذي يُستخدم لمعالجة كل طلب لاحق يُرسل إلى التطبيق. على سبيل المثال، لنفترض أن لدينا تطبيقين ويب: أحدهما متجر.ping تطبيق سلة التسوق، والآخر موقع إخباري. لكل تطبيق، سننشئ كائنين من نوع HttpApplication. ستتم معالجة أي طلبات إضافية إلى كل موقع بواسطة كل كائن HttpApplication على حدة.
4) التخلص – يتم استدعاء هذا الحدث قبل تدمير مثيل التطبيق. وخلال هذا الوقت، يمكن للمرء استخدام هذه الطريقة لتحرير أي موارد غير مُدارة يدويًا.
5) نهاية التطبيق – هذا هو الجزء الأخير من التطبيق. في هذا الجزء، يتم أخيرًا إلغاء تحميل التطبيق من الذاكرة.
ما هي دورة حياة صفحة ASP.Net؟
عند استدعاء صفحة ASP.NET، تمر بدورة حياة محددة. يتم ذلك قبل إرسال الاستجابة إلى المستخدم. تتضمن معالجة صفحة ASP.NET سلسلة من الخطوات.
دعونا نلقي نظرة على المراحل المختلفة لدورة حياة صفحة ويب ASP.Net.
دورة حياة صفحة ASP.Net
- طلب الصفحة – يحدث هذا عند طلب الصفحة لأول مرة من الخادم. عند طلب الصفحة، يتحقق الخادم مما إذا كانت هذه هي المرة الأولى التي يتم فيها طلبها. إذا كانت كذلك، فإنه يقوم بتجميع الصفحة، وتحليل الاستجابة، وإرسالها إلى المستخدم. أما إذا لم تكن هذه هي المرة الأولى التي يتم فيها طلب الصفحة، فيتم التحقق من ذاكرة التخزين المؤقت لمعرفة ما إذا كانت مخرجات الصفحة موجودة. إذا كانت موجودة، يتم إرسال تلك الاستجابة إلى المستخدم.
- بداية الصفحة خلال هذه العملية، يتم إنشاء كائنين، يُعرفان بكائن الطلب وكائن الاستجابة. يُستخدم كائن الطلب لتخزين جميع المعلومات التي تم إرسالها عند طلب الصفحة. أما كائن الاستجابة فيُستخدم لتخزين المعلومات التي يتم إرسالها إلى المستخدم.
- تهيئة الصفحة خلال هذه الفترة، يتم تهيئة جميع عناصر التحكم في صفحة الويب. لذا، إذا كان لديك أي تسمية أو مربع نص أو أي عناصر تحكم أخرى في نموذج الويب، فسيتم تهيئتها جميعًا.
- تحميل الصفحة – يحدث هذا عندما يتم تحميل الصفحة فعليًا بكل القيم الافتراضية. لذا، إذا كان من المفترض أن يحتوي مربع النص على قيمة افتراضية، فسيتم تحميل هذه القيمة أثناء وقت تحميل الصفحة.
- التحقق - في بعض الأحيان قد يكون هناك بعض التحقق من صحة النموذج. على سبيل المثال، قد يكون هناك تحقق من صحة ينص على أن مربع القائمة يجب أن يحتوي على مجموعة معينة من القيم. إذا كان الشرط خاطئًا، فيجب أن يكون هناك خطأ في تحميل الصفحة.
- التعامل مع أحداث إعادة النشر – يتم تفعيل هذا الحدث عند إعادة تحميل نفس الصفحة، وذلك استجابةً لحدث سابق. في بعض الأحيان، قد ينقر المستخدم على زر الإرسال في الصفحة، وفي هذه الحالة، تُعرض نفس الصفحة مرة أخرى، ويتم استدعاء معالج حدث إعادة الإرسال.
- عرض الصفحة - يحدث هذا قبل إرسال كافة معلومات الاستجابة إلى المستخدم. يتم حفظ جميع المعلومات الموجودة في النموذج، ويتم إرسال النتيجة إلى المستخدم كصفحة ويب كاملة.
- تفريغ - بمجرد إرسال مخرجات الصفحة إلى المستخدم، ليست هناك حاجة للاحتفاظ بها نموذج ويب ASP.net الكائنات في الذاكرة. لذا فإن عملية التفريغ تتضمن إزالة جميع الكائنات غير المرغوب فيها من الذاكرة.
أحداث دورة حياة صفحة ASP.NET
إضافةً إلى المراحل العامة المذكورة أعلاه، يُطلق ASP.NET سلسلةً محددةً من أحداث الصفحة التي يمكن للمطورين معالجتها برمجياً. معرفة الترتيب يساعدك على وضع المنطق في المكان المناسب ليعمل بشكل صحيح.
- التهيئة المسبقة - قم بتعيين الصفحات الرئيسية والقوالب، وقم بإنشاء عناصر تحكم ديناميكية.
- فيه – يتم تهيئة كل عنصر تحكم؛ استخدمه لقراءة أو تعيين خصائص عنصر التحكم.
- اكتمال التهيئة – يتم رفعها بعد الانتهاء من جميع عمليات التهيئة.
- التحميل المسبق يحدث ذلك قبل تحميل الصفحة، وعرض الحالة، وإرسال البيانات.
- حمل – يتم تحميل الصفحة وعناصر التحكم الخاصة بها؛ ويتم وضع معظم منطق الصفحة هنا.
- أحداث التحكم – يتم التعامل مع الأحداث الخاصة بالتحكم مثل النقر على زر.
- العرض المسبق – قم بإجراء التغييرات النهائية على الصفحة أو عناصر التحكم قبل الإخراج.
- حفظ الحالة مكتملة – يتم حفظ حالة العرض لجميع عناصر التحكم.
- تقديم – تقوم الصفحة بإنشاء مخرجات HTML التي يتم إرسالها إلى المتصفح.
- تفريغ – يتم إجراء عملية التنظيف وتحرير الكائنات من الذاكرة.
دورة حياة التطبيق مقابل دورة حياة الصفحة
تختلف دورة حياة التطبيق عن دورة حياة الصفحة في نطاقاتها. يوضح الجدول أدناه أوجه الاختلاف بينهما:
| البعد | دورة حياة التطبيق | دورة حياة الصفحة |
|---|---|---|
| مجال | تطبيق الويب بالكامل | طلب صفحة واحدة |
| يبدأ | عند الطلب الأول (بدء التطبيق) | في كل مرة يتم فيها طلب صفحة |
| الأحداث الرئيسية | بدء التطبيق، بدء الطلب، نهاية التطبيق | التهيئة، التحميل، العرض المسبق، التفريغ |
| تردد | مرة واحدة لكل تطبيق، بدء وانتهاء | طلب واحد لكل صفحة |
باختصار، تشمل دورة حياة التطبيق التطبيق بأكمله من بدء التشغيل إلى إيقاف التشغيل، بينما تعمل دورة حياة الصفحة في كل مرة يطلب فيها المستخدم صفحة ما.
لماذا يُعد فهم دورة حياة ASP.NET أمرًا مهمًا؟
يُعدّ فهم دورة حياة التطبيق أمرًا بالغ الأهمية، لأنّ ASP.NET يُشغّل التعليمات البرمجية في لحظات مُحدّدة، ووضع منطق برمجي في الحدث الخاطئ يُؤدّي إلى ظهور أخطاء يصعب اكتشافها. يساعدك الفهم الواضح للتسلسل على ما يلي:
- قم بإنشاء أو تكوين عناصر التحكم الديناميكية مبكراً، في PreInit أو Init.
- قم بتعيين قيم التحكم الافتراضية في حدث التحميل بحيث يتم عرضها بشكل صحيح.
- قم بتطبيق تغييرات العرض النهائية في PreRender، بعد ربط جميع البيانات.
- قم بتمييز طلبات التحميل الأولي عن طلبات إعادة الإرسال لتجنب معالجة البيانات مرتين.
- قم بتحرير الموارد وتنظيفها في عملية إلغاء التحميل لمنع تسرب الذاكرة.
إن إتقان هذه الأحداث يجعل إدارة الحالة والتحقق من الصحة وتصحيح الأخطاء أكثر قابلية للتنبؤ.


