يعد ASP.NET نظامًا أساسيًا قويًا جدًا لبناء تطبيقات الويب، فهو يوفر مرونة وقدرات كبيرة بحيث يمكنك استخدامه لإنشاء جميع أنواع تطبيقات الويب.
معظم الأشخاص على دراية بأطر العمل عالية المستوى فقط مثل WebForms وWebServices - وهي موجودة في الجزء العلوي من التسلسل الهرمي لـ ASP.NET.
يتم جمع المعلومات الواردة في هذه المقالة وتصنيفها من مستندات Microsoft العامة المختلفة. ومن خلال مقارنة عمليات معالجة الطلبات للأجيال الثلاثة من IIS وIIS5 وIIS6 وIIS7، يمكننا التعرف على الآلية الأساسية لـ ASP.NET وفهم كيفية القيام بذلك. تتم معالجة الطلبات من الويب، ويتصل الخادم بوقت تشغيل ASP.NET. من خلال فهم الآلية الأساسية، يمكننا الحصول على فهم أعمق لـ ASP.net.
عملية معالجة طلب ASP.net في IIS 5الميزة البارزة في IIS 5.x هي الفصل بين خادم الويب وتطبيق ASP.NET الحقيقي. باعتباره خادم ويب، يعمل IIS على عملية تسمى InetInfo.exe. InetInfo.exe هو برنامج تنفيذي أصلي وليس برنامجًا مُدارًا. يعمل تطبيق ASP.NET الحقيقي الخاص بنا على عملية عاملة تسمى aspnet_wp أعلاه، ويتم تحميل CLR تمت تهيئة العملية، لذا فهذه بيئة مُدارة.
ISAPI: يشير إلى التطبيقات التي يمكنها التعامل مع اللواحق المختلفة. ISAPI هو اختصار للكلمات التالية: واجهة برمجة تطبيقات خادم الإنترنت، واجهة برمجة تطبيقات خادم الإنترنت.
ميزات وضع IIS 5:1. أولاً، يمكن تشغيل عملية aspnet_wp واحدة فقط على نفس المضيف في نفس الوقت، ويتوافق كل تطبيق ASP.NET يعتمد على الدليل الظاهري مع مجال التطبيق، مما يعني أن كل تطبيق يعمل على نفس الشيء في عملية العمل، يعتمد العزل بين التطبيقات على مجال التطبيق، وليس العملية.
2. ثانيًا، ASP.NET ISAPI ليس مسؤولاً فقط عن إنشاء عملية عامل aspnet_wp، ولكن أيضًا عن مراقبة العملية. إذا تم اكتشاف انخفاض أداء aspnet_wp إلى حد أدنى معين، فسيكون ASP.NET ISAPI مسؤولاً. لإنهاء العملية. عند انتهاء aspnet_wp، سيؤدي الطلب اللاحق إلى قيام ASP.NET ISAPI بإعادة إنشاء عملية عاملة aspnet_wp جديدة.
3. أخيرًا، بما أن IIS والتطبيق يعملان في عملياتهما الخاصة، يجب أن يستخدم الاتصال بينهما آلية اتصال محددة. بشكل أساسي، الاتصال بين عملية InetInfo حيث يوجد IIS والعملية العاملة هو الاتصال بين العمليات المختلفة على نفس الجهاز (الاتصالات الداخلية بين العمليات، لاعتبارات الأداء، يتم استخدام آلية اتصال تعتمد على توجيه الإخراج المسمى بينهما). يتم تنفيذ الاتصال بين ASP.NET ISAPI وWorker Process من خلال مجموعة من الأنابيب بينهما. ولأسباب تتعلق بالأداء أيضًا، يرسل ASP.NET ISAPI الطلب إلى العملية العاملة بطريقة غير متزامنة ويحصل على الاستجابة، لكن العملية العاملة تحصل على بعض المتغيرات المستندة إلى الخادم من ASP.NET ISAPI بطريقة متزامنة.
عملية معالجة طلب ASP.net لـ IIS6يقوم IIS 5.x بمراقبة الطلب من خلال InetInfo.exe وتوزيع الطلب على عملية العمل. وبعبارة أخرى، فإن مراقبة الطلبات وتوزيعها في IIS 5. : http.sys هو المسؤول.
ملاحظة: لمنع تطبيقات المستخدم من الوصول إلى بيانات نظام التشغيل الهامة أو تعديلها، يوفر Windows وضعين للوصول إلى المعالج: وضع المستخدم ووضع Kernel. بشكل عام، تعمل برامج المستخدم في وضع المستخدم، بينما تعمل تعليمات نظام التشغيل في وضع Kernel. يسمح رمز Kernel Mode بالوصول إلى كافة ذاكرة النظام وجميع تعليمات وحدة المعالجة المركزية.
في وضع المستخدم، يتلقى http.sys طلب http يستند إلى aspx، ثم سيتحقق من تجمع التطبيقات الذي ينتمي إليه التطبيق بناءً على الطلب وفقًا لقاعدة التعريف في IIS. إذا لم يكن تجمع التطبيقات موجودًا، فقم بإنشائه. وإلا، فسيتم إرسال الطلب مباشرة إلى قائمة الانتظار المقابلة لمجمع التطبيقات.
يتوافق كل تجمع تطبيقات مع عملية عاملة: w3wp.exe، والتي تعمل بلا شك في وضع المستخدم. تتم المحافظة على تعيين تجمع التطبيقات والعملية المنفذة في قاعدة تعريف IIS. بناءً على هذا التعيين، تقوم WAS (خدمة إدارة الويب) بتمرير الطلب الموجود في قائمة انتظار تجمع التطبيقات إلى العملية المنفذة المقابلة (إذا لم يكن الأمر كذلك، فقم بإنشاء مثل هذه العملية). عند تهيئة العملية المنفذة، يتم تحميل ASP.NET ISAPI، ثم يقوم ASP.NET ISAPI بتحميل CLR. العملية النهائية هي نفس IIS 5.x: قم بإنشاء مجال تطبيق للتطبيق من خلال طريقة إنشاء AppManagerAppDomainFactory؛ وقم بمعالجة الطلب من خلال ProcessRequest الخاص بـ ISAPIRuntime، ثم أدخل العملية في خط أنابيب ASP.NET Http Runtime.
عملية معالجة طلب ASP.net لـ IIS 7