أولاً، دعونا نتحدث عن كيفية عمل Asp.net.
الوصف المحدد هو كما يلي: أولاً، يطلب العميل صفحة الويب. بعد ذلك، تبحث خدمة الويب عن ملف التعليمات (.aspx)، ويتم التعامل مع ذلك بواسطة مكتبة الارتباط الديناميكي aspnet_isapi.dll. يتم بعد ذلك إرسال كود Asp.net إلى وقت تشغيل اللغة العامة لتجميعه. يتم بعد ذلك إرجاع دفق HTML إلى المتصفح وترتيبه. وأخيرًا، يقوم المتصفح بمعالجة HTML ويعرض الصفحة.
ما هو ISAPI؟
في بداية عصر الإنترنت، كانت احتياجات العملاء محدودة جدًا؛ وكانت ملفات .htm هي كل ما يحتاجون إليه. ومع ذلك، بمرور الوقت، يحتاج العميل إلى توسيع نطاق الوظائف الموجودة في ملفات .htm أو الملفات الثابتة.
يحتاج المطورون إلى توسيع أو توسيع وظائف خادم الويب. لقد صمم بائعو خوادم الويب حلولاً مختلفة، ولكن جميعهم يتبعون نفس الموضوع المتمثل في إدخال مكونات معينة في خادم الويب. تسمح جميع التقنيات الإضافية لخادم الويب للمطورين ببناء المكونات وتوصيلها لتحسين وظائف خادم الويب. اقترحت Microsoft ISAPI (Internet Server API)، واقترحت Netscape NSAPI (Netscape Server API) وما إلى ذلك. ISAPI هي تقنية مهمة تسمح لنا بتحسين قدرات خوادم الويب المتوافقة مع ISAPI (IIS هو خادم ويب متوافق مع ISAPI). نستخدم المكونات التالية لتحقيق ذلك:
1. ملحق ISAPI: يتم تنفيذ ملحق ISAPI باستخدام مكتبة الارتباط الديناميكي Win32. يمكنك التفكير في امتداد ISAPI كتطبيق عادي. هدف المعالجة لملحق ISAPI هو طلب http.
2. عامل تصفية ISAPI: في كل مرة يقدم فيها العميل طلبًا إلى الخادم، يجب أن يمر الطلب عبر عامل التصفية. لا يحتاج العميل إلى تحديد عامل تصفية في الطلب، ولكنه ببساطة يرسل الطلب إلى خادم الويب، ويقوم خادم الويب بتمرير الطلب إلى عامل التصفية ذي الصلة. بعد ذلك، قد يقوم الفلتر بتعديل الطلب، وإجراء بعض عمليات تسجيل الدخول، وما إلى ذلك.
عملية معالجة طلب ASP.NET:
تعتمد عملية معالجة طلب ASP.NET على نموذج خط الأنابيب، حيث يقوم ASP.NET بتمرير طلبات http إلى كافة الوحدات النمطية في خط الأنابيب. تتلقى كل وحدة طلبات http وتتمتع بالتحكم الكامل. يمكن للوحدات التعامل مع الطلبات بأي طريقة تراها مناسبة. بمجرد مرور الطلب عبر جميع وحدات HTTP، تتم معالجته أخيرًا بواسطة معالج HTTP. يقوم معالج HTTP ببعض المعالجة على الطلب وستمر النتيجة مرة أخرى عبر وحدة HTTP في المسار.
مرشح ISAPI:
لا يدعم IIS نفسه الصفحات الديناميكية، مما يعني أنه يدعم فقط محتوى صفحات HTML الثابتة، على سبيل المثال، .asp، .aspx، .cgi، .php، وما إلى ذلك، لن يقوم IIS بمعالجة هذه العلامات، بل سيتعامل معها. حيث يتم إرسال النص التركيبي إلى العميل دون أي معالجة. من أجل حل هذه المشكلة. لدى IIS آلية تسمى عامل تصفية ISAPI، وهو مكون قياسي (مكون COM).
عندما تقوم خدمة Asp.net بالتسجيل مع IIS، فإنها ستقوم بتسجيل امتدادات الملفات التي يمكن لكل ملحق التعامل معها في IIS (مثل: *.ascx، *.aspx، وما إلى ذلك). بعد بدء الامتداد، يقوم بمعالجة الملفات التي لا يمكن معالجتها بواسطة IIS وفقًا للطريقة المحددة، ثم ينتقل بالتحكم إلى عملية تتعامل مع التعليمات البرمجية على وجه التحديد، مما يسمح لهذه العملية ببدء معالجة التعليمات البرمجية، وإنشاء تعليمات HTML البرمجية القياسية، ووضع هذه الرموز بعد الإنشاء، قم بإضافتها إلى HTML الأصلي، وأخيرًا قم بإرجاع Html الكامل إلى IIS، ثم يرسل IIS المحتوى إلى العميل.