ما هو الفرق بين وضع أنابيب الكلاسيكية "الكلاسيكية" و "متكامل" في IIS7؟

StackOverflow https://stackoverflow.com/questions/716049

سؤال

كنت نشر تطبيق ASP.NET MVC الليلة الماضية، ووجدت أنه أقل عمل للنشر مع مجموعة IIS7 إلى الوضع المتكامل. سؤالي هو ما هو الفرق؟ وما هي الآثار المترتبة على استخدام واحد أو آخر؟

هل كانت مفيدة؟

المحلول

الوضع الكلاسيكي (الوضع الوحيد في IIS6 وما يلي) هو وضع حيث يعمل IIS فقط مع ملحقات ISAPI وفلاتر ISAPI مباشرة. في الواقع، في هذا الوضع، يعد ASP.NET مجرد ملحق ISAPI (ASPNENT_ISAPI.DLL) وترشيح ISAPI (ASPNENT_FILTER.DLL). يعامل IIS فقط ASP.NET كمساعد خارجي يتم تطبيقه في ISAPI ويعمل معه مثل صندوق أسود (وفقط عندما يحتاج إلى إعطاء الطلب إلى ASP.NET). في هذا الوضع، لا يختلف ASP.NET كثيرا عن PHP أو تكنولوجيات أخرى ل IIS.

الوضع المتكامل، من ناحية أخرى، هو وضع جديد في IIS7 حيث يتم دمج IIS خط أنابيب بإحكام (أي فقط هو نفسه) كأن خط أنابيب asp.net. ASP.NET يمكن أن نرى كل طلب يريد وتلاعب الأشياء على طول الطريق. لم تعد ASP.NET تعامل كمساعد خارجي. تمتزج تماما ومدمج في IIS. في هذا الوضع، ASP.NET HttpModuleفي الأساس لديها ما يقرب من القوة مثل مرشح ISAPI كان لديه و ASP.NET HttpHandlerيمكن أن يكون S قدرة مكافئة تقريبا حيث يمكن أن يكون امتداد ISAPI. في هذا الوضع، ASP.NET هو أساسا جزءا من IIS.

نصائح أخرى

وضع تجمع التطبيقات المتكاملة

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

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

وضع تجمع التطبيقات الكلاسيكية

عندما يكون تجمع التطبيقات في الوضع الكلاسيكي، فإن طلبات IIS 7.0 مقابض كما في وضع العزلة لعملية IIS 6.0. تطلب طلبات ASP.NET أولا من خلال خطوات معالجة أصلي في IIS ثم يتم توجيهها إلى ASPNET_ISAPI.DLL لمعالجة التعليمات البرمجية المدارة في وقت التشغيل المدار. أخيرا، يتم توجيه الطلب مرة أخرى من خلال IIS لإرسال الاستجابة.

ينتج عن هذا الانفصال من نماذج معالجة طلب IIS و ASP.NET في ازدواجية بعض خطوات المعالجة، مثل المصادقة والترخيص. بالإضافة إلى ذلك، تتوفر ميزات التعليمات البرمجية المدارة، مثل مصادقة النماذج، فقط لتطبيقات ASP.NET أو التطبيقات التي لديك برنامج نصي تم تعيينها جميع الطلبات التي سيتم التعامل معها بواسطة Aspnet_isapi.dll.

تأكد من اختبار طلباتك الحالية للتوافق في الوضع المتكامل قبل ترقية بيئة إنتاج إلى IIS 7.0 وتعيين التطبيقات إلى تجمعات التطبيقات في الوضع المتكامل. يجب عليك فقط إضافة تطبيق إلى تجمع تطبيقات في الوضع الكلاسيكي إذا فشل التطبيق في العمل في الوضع المتكامل. على سبيل المثال، قد يعتمد طلبك على رمز مصادقة مرت من IIS إلى وقت التشغيل المدار، وذلك بسبب الهندسة المعمارية الجديدة في IIS 7.0، فإن العملية تنفصل عن طلبك.

مأخوذ من: ما هو الفرق بين DefaultAppPool والكلاسيكي .NET AppPool في IIS7؟

المصدر الأصلي: مقدمة في الهندسة المعمارية IIS

IIS 6.0 والإصدارات السابقة:

asp.net متكاملة مع IIS عبر ملحق ISAPI، API API (API اللغوية المستندة إلى لغة البرمجة C) وتعرض نموذج معالجة الطلب والطلب الخاص به.

يتعرض هذا بشكل فعال لخطوط أنابيب خادم منفصلة (طلب / الاستجابة)، واحد من أجل مرشحات ISAPI الأصلية ومكونات الامتداد، وآخر لمكونات التطبيق المدارة. ستنفذ مكونات ASP.NET بالكامل داخل فقاعة ASP.NET ISAPI Extension و فقط للطلبات المعينة إلى ASP.NET في تكوين خريطة البرنامج النصي IIS.

طلبات أنواع محتوى غير ASP.NET: - تمت معالجة الصور والملفات النصية صفحات HTML وصفحات النصوص الأقل ل ASP بواسطة IIS أو غيرها من ملحقات ISAPI ولم تكن مرئية ل ASP.NET.

كان الحد الرئيسي لهذا النموذج هو أن الخدمات التي توفرها وحدات ASP.NET ولم تكن رمز تطبيق ASP.NET المخصص غير متوفر لطلبات غير ASP.NET

ما هي خريطة نصية؟

يتم استخدام خرائط البرنامج النصي لربط ملحقات الملفات باستخدام معالج ISAPI الذي ينفذ عند طلب نوع الملف هذا. تحتوي خريطة البرنامج النصي أيضا على إعداد اختياري يتحقق من وجود الملف الفعلي المرتبط بالطلب قبل السماح بطلب الطلب

مثال جيد يمكن أن يكون seen here

IIS 7 وما فوق

تم إعادة صياغة IIS 7.0 وما فوقها من الألف إلى الياء لتزويد ISAPI C ++ NEW C ++ API.

IIS 7.0 وما فوق يدمج وقت تشغيل ASP.NET بالوظائف الأساسية لخادم الويب، مما يوفر خط أنابيب معالجة موحد (فردي) يتعرض له كل من المكونات الأصلية والمدار يعرف باسم الوحدات النمطية (IHTTPModules)

ما يعنيه هذا هو أن IIS 7 يعالج طلبات تصل إلى أي نوع من المحتوى، مع كليهما NON ASP.NET Modules / native IIS modules و ASP.NET modules توفير معالجة الطلب في جميع المراحل هذا هو السبب في معالجة أنواع محتوى غير ASP.NET (.html، الملفات الثابتة) بواسطة وحدات .NET.

  • يمكنك بناء وحدات جديدة مدارة (IHttpModule) لديها القدرة على التنفيذ لجميع محتوى التطبيقات، وقدمت مجموعة محسنة من خدمات معالجة الطلب إلى طلبك.
  • أضف معالجات جديدة مدارة ( IHttpHandler)

في الوضع الكلاسيكي، يعمل IIS HSAPI ملحقات و فلاتر ISAPI مباشرة. ويستخدم خطين الأنابيب، واحد لرمز الأصلي وغيرها من التعليمات البرمجية المدارة. يمكنك ببساطة القول أنه في الوضع الكلاسيكي يعمل IIS 7.x تماما مثل IIS 6 ولا تحصل على فوائد إضافية خارج ميزات IIS 7.x.

في الوضع المتكامل IIS و ASP.NET مقترنة بإحكام إلى جانب ذلك، اعتمادا على اثنين من DLLs فقط على ASP.NET كما في حالة الوضع الكلاسيكي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top