يعمل IIS 5 و6 بشكل مختلف
عندما يأتي طلب، يقوم IIS بفحص خريطة البرنامج النصي (خريطة الامتداد) وتوجيه الطلب إلى aspnet_isapi.dll. يختلف تشغيل ملف DLL هذا وكيفية إدخال الطلبات إلى وقت تشغيل ASP.NET في IIS5 و6. ويبين الشكل 2 نظرة عامة تقريبية لهذه العملية.
في IIS5، تتم استضافة aspnet_isapi.dll مباشرة في عملية inetinfo.exe إذا قمت بتعيين مستوى عزل موقع الويب أو الدليل الظاهري إلى متوسط أو مرتفع، فسيتم استضافته في عملية عاملة منفصلة (معزولة) لـ IIS. عندما يأتي طلب ASP.NET الأول، سيبدأ ملف DLL (aspnet_isapi.dll) عملية جديدة أخرى aspnet_wp.exe ويقوم بتوجيه الطلب إلى هذه العملية للمعالجة. تقوم هذه العملية بدورها بتحميل واستضافة وقت تشغيل .NET. يتم توجيه كل طلب يتم إعادة توجيهه إلى ISAPI DLL إلى هذه العملية عبر استدعاء توجيه إخراج مسمى.
الشكل 2 - عرض عالي المستوى لتدفق الطلبات من IIS إلى وقت تشغيل ASP.NET ومن خلال مسار معالجة الطلب. يتفاعل IIS5 وIIS6 مع ASP.NET بطرق مختلفة، ولكن بمجرد وصول الطلب إلى مسار ASP.NET، يكون تدفق المعالجة بأكمله هو نفسه.
على عكس الإصدارات السابقة من الخادم، تم تحسين IIS6 بالكامل لـ ASP.NET.
IIS6 - تجمع التطبيقات طويل الأمد
يقوم IIS6 بإجراء تغييرات هامة على نموذج المعالجة، ولم يعد IIS يستضيف تعليمات برمجية خارجية قابلة للتنفيذ مباشرة مثل ملحقات ISAPI. يقوم IIS دائمًا بإنشاء مؤشر ترابط عامل منفصل - تجمع تطبيقات - وتتم كافة عمليات المعالجة في هذه العملية، بما في ذلك تنفيذ ملفات ISAPI dlls. يعد تجميع التطبيقات تحسينًا كبيرًا في IIS6 لأنه يسمح بالتحكم الدقيق جدًا في التعليمات البرمجية التي سيتم تنفيذها في مؤشر ترابط معين. يمكن تكوين تجمعات التطبيقات على كل مسار افتراضي أو على موقع الويب بأكمله، مما يسمح لك بعزل كل تطبيق ويب في عمليته الخاصة بحيث يتم توصيل كل تطبيق بتطبيقات الويب الأخرى التي تعمل على نفس الجهاز. إذا تعطلت إحدى العمليات، فلن يؤثر ذلك على العمليات الأخرى (على الأقل من وجهة نظر معالجة الويب).
ليس ذلك فحسب، بل إن تجمعات التطبيقات قابلة للتكوين بشكل كبير. يمكنك تكوين بيئة الأمان التي تعمل فيها التجمعات عن طريق تعيين مستوى انتحال التنفيذ الخاص بها، والذي يسمح لك بتخصيص الأذونات الممنوحة لتطبيق ويب (مرة أخرى، بدقة بالغة). أحد التحسينات الكبيرة لـ ASP.NET هو أن تجمع التطبيقات يتجاوز معظم الإعدادات في قسم ProcessModel في ملف Machine.config. من الصعب جدًا إدارة الإعدادات الموجودة في هذا القسم في IIS5 نظرًا لأن هذه الإعدادات عامة ولا يمكن تجاوزها في ملف web.config الخاص بالتطبيق. عند تشغيل IIS6، يتم تجاهل الإعدادات ذات الصلة بـ ProcessModel في الغالب ويتم قراءتها من تجمع التطبيقات بدلاً من ذلك. لاحظ أن معظمها مذكور هنا - لا تزال بعض الإعدادات، مثل حجم تجمع مؤشرات الترابط وإعدادات مؤشر ترابط الإدخال/الإخراج، قابلة للقراءة من Machine.config، لأنها لا تحتوي على عناصر مقابلة في إعدادات تجمع مؤشرات الترابط.
نظرًا لأن تجمعات التطبيقات عبارة عن ملفات تنفيذية خارجية، فيمكن مراقبة هذه الملفات التنفيذية وإدارتها بسهولة. يوفر IIS6 سلسلة من عمليات التحقق من حالة النظام وإعادة التشغيل وخيارات المهلة، والتي يمكن استخدامها بسهولة للتحقق من مشاكل البرنامج وحتى تصحيحها في كثير من الحالات.
أخيرًا، لا يعتمد تجمع تطبيقاتIIS6
على COM+ مثل وضع العزل الخاص بـ IIS5، مما يؤدي إلى تحسين الأداء والاستقرار (خاصة بالنسبة لبعض التطبيقات الداخلية التي تحتاج إلى استدعاء مكونات COM).
تم تحسينها بشكل كبير لعمليات HTTP، فهي تتواصل مباشرة مع برنامج تشغيل HTTP.SYS لوضع kernel. يتم توجيه الطلبات المستلمة مباشرة إلى تجمع التطبيقات المناسب. InetInfo هو في الأساس مجرد برنامج Hypervisor وخادم تكوين - معظم التفاعل يحدث فعليًا مباشرة بين HTTP.SYS وتجمع التطبيقات، وكل ذلك يجعل IIS6 بيئة أكثر استقرارًا وفعالية من IIS5. وينطبق هذا بشكل خاص على المحتوى الثابت وتطبيقات ASP.NET.
يتمتع تجمع تطبيقات IIS6 بفهم فطري لـ ASP.NET ويمكن لـ ASP.NET التفاعل معه في واجهة برمجة التطبيقات الأساسية. وهذا يسمح بالوصول المباشر إلى واجهة برمجة تطبيقات التخزين المؤقت لـ HTTP، مما يسمح بتسليم التخزين المؤقت على مستوى ASP.NET مباشرة إلى خادم الويب.
في IIS6، يتم تشغيل ملحقات ISAPI في العملية المنفذة لتجمع التطبيقات. يعمل وقت تشغيل .NET أيضًا في نفس العملية، لذا يحدث الاتصال بين ملحق ISAPI ووقت تشغيل .NET ضمن العملية، وهذا له ميزة أداء طبيعية مقارنة بالأنبوب المسمى الذي يستخدمه IIS5. على الرغم من أن نموذج استضافة IIS مختلف تمامًا، إلا أن الواجهة في التعليمات البرمجية المُدارة متشابهة بشكل مدهش - فقط عملية توجيه الرسائل مختلفة قليلاً.