معلومات: مثيلات التطبيق وأحداث التطبيق وحالة التطبيق في ASP.NET

ملخص

إخفاء كائن ASP.NET هتبابليكاتيون العديد من المفاهيم المعقدة لتبسيط طراز البرمجة. توضح هذه المقالة بعض هذه التعقيدات. وبالإضافة إلى ذلك، توضح هذه المقالة كيفية معالجة مشاكل التوافق مع كائن Microsoft صفحات الملقم النشطة (ASP) التطبيقات التقليدية في ASP.NET.

يتم تقسيم هذه المادة إلى المقاطع التالية:

مزيد من المعلومات

فئة التطبيق ومثيلات التطبيق

يتم تعريف فئة تطبيق في ملف Global.asax. التعليمات البرمجية في Global.asax بتعريف فئة جديدة مشتقة من System.Web.HttpApplication. نظراً لغياب ملف Global.asax، الفئة الأساسية، هتبابليكيشن، كفئة التطبيق.

وقت تشغيل ASP.NET بإنشاء العديد من مثيلات الفئات التطبيق حسب الحاجة لمعالجة طلبات في نفس الوقت. معظم التطبيقات، هذا الرقم يقتصر على عدد مؤشرات الترابط وتبقى في نطاق 1 إلى 100، اعتماداً على الأجهزة تحميل ملقم التكوين وهكذا. العديد من طلبات إعادة استخدام مثيلات التطبيق ويتم الاحتفاظ بقائمة مثيلات التطبيق حرة أثناء فترات التحميل المنخفض. يتم استخدام مثيلات التطبيق في طريقة مؤشر الترابط-الأمن، وهو طلب واحد في مرة الواحدة. وهذا آثار هامة:
  • ليس لديك إلى القلق بشأن التأمين عند الوصول إلى أعضاء الفئة التطبيق غير ثابت.
  • التعليمات البرمجية للتطبيق تخزين بيانات الطلب لكل طلب في أعضاء فئة التطبيق غير ثابتة (ليس بعد الحدث EndRequest لأن هذا الحدث قد الاحتفاظ بالطلب منذ فترة طويلة).
نظراً لعدم أعضاء ثابتة لأي فئة، بما في ذلك فئة تطبيق مؤشر الترابط-الأمن، يجب توفير التعليمات البرمجية للمستخدم الحصول على التأمين المناسب للوصول إلى أعضاء ثابتة. ينطبق هذا على أي عضو ثابت إضافة إلى فئة التطبيق.

استخدم الإرشادات التالية للوصول إلى مثيل التطبيق المقترن بالطلب الحالي:
  • من Global.asax، استخدم هذا أو كائن لي .
  • من صفحة، كل صفحة تحتوي على خاصية أبليكاتيونينستانسي مشددة.
  • الكائن httpcontext بشكل نموذجي ، من استخدام الخاصية HttpContext.ApplicationInstance (التي كتبت هتبابليكيشن).
ملاحظة: لأن التطبيق يشير إلى القاموس التطبيق العالمي في آسيا والمحيط الهادئ التقليدية، يستخدم ASP.NET أبليكاتيونينستانسي و التطبيق كاسم خاصية للإشارة إلى مثيل التطبيق يقوم بمعالجة الطلب الحالي.

أحداث التطبيق

عمر طلب يتكون من سلسلة من أحداث التطبيق (وبعض الخطوات الضمني ASP.NET ينفذ). يتم سرد هذه الأحداث أدناه بالترتيب الذي يتم تنفيذ:
  1. BeginRequest
  2. حدث أوثينتيكاتيريقويست
  3. حدث داخلي ديفاولتوثينتيكيشن
  4. حدث أوثوريزيريقويست
  5. حدث ريسولفيريقويستكاكهي
  6. الخطوة الداخلية إلى "معالج مخطط" (عند التحويل البرمجي، صفحة يتم إنشاء مثيل)
  7. حدث أكقويريريقويستستاتي
  8. حدث بريريقويسثاندليريكسيكوتي
  9. الخطوة الداخلية "لتنفيذ معالج" (عندما يتم تنفيذ التعليمات البرمجية للصفحة)
  10. حدث بوستريقوسثاندليريكسيكوتي
  11. حدث رليسيريقويستستاتي
  12. الخطوة داخلي لتصفية الأحداث أوبداتيريقويستكاكهي الاستجابات
  13. حدث أوبداتيريقويستكاكهي
  14. حدث EndRequest
ملاحظة: إذا كنت تستخدم Server.Transfer أو Response.Redirect(string)، مقاطعة الطلب الحالي فعال وبعض الأحداث المذكورة أعلاه عدم زيادة. ومع ذلك، يتم رفع حدث EndRequest في هذا السيناريو.


معالجة أحداث هذه العناصر التالية:
  • إطار صفحة ASP.NET الداخلية (على سبيل المثال، الخطوات 6 و 9 و 12 في القائمة السابقة).
  • الوحدات النمطية ل HTTP التي تم تكوينها للتطبيق. يتم تعريف قائمة افتراضية من الوحدات النمطية HTTP في الملف Machine.config.
  • التعليمات البرمجية في Global.asax الذي يتم التوصيل من خلال الأسلوب الذي EventName [على] أو الذي يتم التوصيل بشكل صريح عندما تقوم بإضافة معالجات الأحداث لاسم معالج بديل.
يمكن أن يكون كل حدث المشتركين المتزامن وغير المتزامن. المشتركين غير متزامنة يتم تنفيذها أولاً. ليست كافة الأحداث يتم تنفيذها دوماً; الحدث فقط التي يتم تنفيذها دوماً هو EndRequest. وكنتيجة لذلك، إجراء تنظيف الطلب بعد انتهاء كافة في الحدث EndRequest .

ملاحظة: في معظم الحالات، يتم إرسال الاستجابة الفعلية للعميل بعد إنهاء مثيل التطبيق مع الاستجابة (وبعد EndRequest).

Application_OnStart و Application_OnEnd

يقدم ASP.NET الفريد Application_OnStart و Application_OnEnd "الأحداث" للتوافق مع ASP الكلاسيكية. يتم تنفيذ هذه "الأحداث" مرة واحدة فقط في عمر التطبيق وليس لكل مثيل التطبيق. إذا غيرت الأعضاء غير ثابت في هذه الأساليب، التي تؤثر مثيل تطبيق واحد فقط وليس كافة المثيلات. يمكنك تهيئة مثيل التطبيق في المنشئ أو بتجاوز أسلوب Init .

Application_OnStart هو المرادف منطقي لمنشئ الفئة فئة التطبيق، ولكنها توفر ميزة واحدة: الرمز حق الوصول إلى HttpContext للطلب الأول للتطبيق.

حالة التطبيق

حالة التطبيق هي قاموس كائنات متأخراً، مما يقدم ASP الكلاسيكية للتعويض عن غياب المتغيرات العمومية في Microsoft Visual Basic Scripting Edition (VBScript) عمومية. في ASP.NET، يمكنك الوصول إلى حالة التطبيق من خلال أحد الإجراءات التالية:
  • خاصية التطبيق (الذي يتم تعريفه في الفئات كلا من هتبابليكيشن و الصفحة )
  • HttpContext.Application
يتضمن ASP.NET حالة التطبيق أساسا للتوافق مع ASP الكلاسيكية بحيث يسهل على ترحيل التطبيقات الموجودة إلى ASP.NET. من المستحسن تخزين البيانات في أعضاء ثابتة من فئة التطبيق بدلاً من كائن التطبيق . يؤدي ذلك إلى زيادة الأداء لأنه يمكنك الوصول إلى متغير ثابت أسرع مما يمكنك الوصول إلى عنصر في تطبيق القاموس.

للوصول إلى الأعضاء التطبيق الثابت من الصفحات في Microsoft Visual C#.NET و Microsoft Visual Basic.NET، يجب استخدام سمة اسم الفئة في Global.asax لتسمية فئة التطبيق الخاص بك. على سبيل المثال:
<%@ Application Language="C# | VB" ClassName="MyClass" %>
إذا تم تسمية عضو ثابت ميستاتيكميمبير في ملف Global.asax، يمكنك استخدام MyClass.MyStaticMember للوصول إليها من الصفحة الخاصة بك.
خصائص

رقم الموضوع: 312607 - آخر مراجعة: 09‏/01‏/2017 - المراجعة: 1

تعليقات