نماذج الويب ASP.NET
ASP.NET Web Forms هو إطار عمل لتطبيقات الويب ، وهو أحد نماذج البرمجة العديدة التي تدعمها تقنية Microsoft ASP.NET . يمكن كتابة تطبيقات Web Forms بأي لغة برمجة تدعم بيئة التشغيل المشتركة (CLAN) ، مثل C# أو Visual Basic . تُعدّ عناصر التحكم بالخادم اللبنات الأساسية لصفحات Web Forms ، وهي مكونات قابلة لإعادة الاستخدام مسؤولة عن عرض ترميز HTML والاستجابة للأحداث. [ 1 ] تُستخدم تقنية تُسمى حالة العرض (View State) للاحتفاظ بحالة عناصر التحكم بالخادم بين طلبات HTTP التي لا تحتفظ عادةً بحالة. [ 2 ]
تم تضمين Web Forms في الإصدار الأصلي من .NET Framework 1.0 عام 2002 (انظر تاريخ إصدارات .NET Framework وتاريخ إصدارات ASP.NET )، كأول نموذج برمجي متاح في ASP.NET. على عكس مكونات ASP.NET الأحدث، فإن Web Forms غير مدعوم من قبل ASP.NET Core . [ 3 ]
صفات
كانت صفحات الويب ASP.NET، المعروفة رسميًا باسم نماذج الويب، [ 4 ] اللبنات الأساسية لتطوير التطبيقات في ASP.NET قبل ظهور نمط MVC. [ 5 ] توجد منهجيتان أساسيتان لنماذج الويب: صيغة تطبيقات الويب وصيغة مواقع الويب. [ 6 ] تتطلب تطبيقات الويب تجميعها قبل النشر، بينما تسمح مواقع الويب للمستخدم بنسخ الملفات مباشرةً إلى الخادم دون تجميع مسبق. تُخزَّن نماذج الويب في ملفات بامتداد ".aspx"؛ وتحتوي هذه الملفات عادةً على ترميز HTML ثابت ( X ) أو ترميز مكونات. يمكن أن يتضمن ترميز المكونات عناصر تحكم الويب من جانب الخادم وعناصر تحكم المستخدم المُعرَّفة في إطار العمل أو صفحة الويب. على سبيل المثال، يمكن تعريف مكون مربع نص على صفحة كـ <textarea> ، والذي يُعرض في مربع إدخال HTML. بالإضافة إلى ذلك، يمكن وضع التعليمات البرمجية الديناميكية، التي تعمل على الخادم، في صفحة ضمن كتلة <textarea> ، وهو ما يُشابه تقنيات تطوير الويب الأخرى مثل PHP و JSP و ASP . مع إصدار ASP.NET Framework 2.0 ، قدمت مايكروسوفت نموذجًا جديدًا للبرمجة الخلفية يسمح ببقاء النص الثابت على صفحة .aspx بينما يتم وضع التعليمات البرمجية الديناميكية في ملف .aspx.vb أو .aspx.cs أو .aspx.fs (بحسب لغة البرمجة المستخدمة). [ 7 ]<asp:textboxid="myid"runat="server"><%--dynamiccode--%>
نموذج الكود الخلفي
توصي مايكروسوفت بالتعامل مع كود البرنامج الديناميكي باستخدام نموذج الكود الخلفي، الذي يضع هذا الكود في ملف منفصل أو ضمن وسم برمجي مخصص. عادةً ما تحمل ملفات الكود الخلفي أسماءً مثل " MyPage.aspx.cs" أو " MyPage.aspx.vb" ، بينما يكون اسم ملف الصفحة MyPage.aspx (وهو نفس اسم ملف الصفحة (ASPX)، ولكن مع إضافة الامتداد الأخير الذي يشير إلى لغة الصفحة). هذه الممارسة تلقائية في Visual Studio وبيئات التطوير المتكاملة الأخرى ، مع إمكانية تغيير المستخدم لاسم صفحة الكود الخلفي. كذلك، في تنسيق تطبيقات الويب، يُعدّ الملف pagename.aspx.cs فئة جزئية مرتبطة بالملف pagename.designer.cs. ملف المصمم هو ملف يتم إنشاؤه تلقائيًا من صفحة ASPX ويسمح للمبرمج بالإشارة إلى المكونات في صفحة ASPX من صفحة الكود الخلفي دون الحاجة إلى تعريفها يدويًا، كما كان ضروريًا في إصدارات ASP.NET قبل الإصدار 2. [ 8 ] عند استخدام هذا النمط من البرمجة، يكتب المطور التعليمات البرمجية للاستجابة لأحداث مختلفة، مثل تحميل الصفحة، أو النقر على عنصر تحكم، بدلاً من اتباع مسار إجرائي للمستند.
يمثل نموذج الكود الخلفي في ASP.NET نقلة نوعية عن ASP الكلاسيكي، إذ يشجع المطورين على بناء تطبيقات تفصل بين العرض والمحتوى . نظريًا، يسمح هذا لمصمم الويب، على سبيل المثال، بالتركيز على تصميم الصفحة مع تقليل احتمالية التأثير على كود البرمجة. يشبه هذا فصل المتحكم عن العرض في أطر عمل نموذج-عرض-متحكم (MVC).
التوجيهات
التوجيه هو تعليمات خاصة حول كيفية معالجة ASP.NET للصفحة. [ 9 ] التوجيه الأكثر شيوعًا هو ، والذي يمكنه تحديد العديد من السمات التي يستخدمها محلل ومترجم صفحات ASP.NET.<%@Page%>
عناصر تحكم المستخدم
عناصر التحكم الخاصة بالمستخدم هي عبارة عن تغليف لأقسام من أقسام الصفحة التي يتم تسجيلها واستخدامها كعناصر تحكم في ASP.NET.
عناصر تحكم مخصصة
يستطيع المبرمجون أيضًا إنشاء عناصر تحكم مخصصة لتطبيقات ASP.NET. على عكس عناصر التحكم الخاصة بالمستخدم، لا تحتوي هذه العناصر على ملف ترميز ASCX، حيث يتم تجميع جميع التعليمات البرمجية الخاصة بها في ملف مكتبة ارتباط ديناميكي (DLL) . يمكن استخدام عناصر التحكم المخصصة هذه في تطبيقات ويب متعددة ومشاريع Visual Studio 2013 .
تقنية العرض
تستخدم بيئة .NET تقنية عرض "العناصر المركبة المُزارة". أثناء عملية الترجمة، يُترجم ملف القالب (.aspx) إلى كود تهيئة يُنشئ شجرة تحكم (العنصر المركب) تُمثل القالب الأصلي. يُوضع النص الحرفي في مثيلات من فئة التحكم Literal، بينما تُمثل عناصر تحكم الخادم بمثيلات من فئة تحكم مُحددة. يُدمج كود التهيئة مع كود يكتبه المستخدم (عادةً من خلال تجميع عدة فئات جزئية) لينتج عنه فئة خاصة بالصفحة. وتُعتبر الصفحة أيضًا بمثابة جذر شجرة التحكم.
تُعالَج الطلبات الفعلية للصفحة عبر عدة خطوات. أولًا، خلال خطوات التهيئة، يُنشأ مثيل لفئة الصفحة ويُنفَّذ رمز التهيئة. ينتج عن ذلك شجرة التحكم الأولية، والتي تُعالَج عادةً بواسطة أساليب الصفحة في الخطوات التالية. بما أن كل عقدة في الشجرة هي عنصر تحكم ممثل كمثيل لفئة، فقد يُغيِّر الرمز بنية الشجرة، بالإضافة إلى تعديل خصائص/أساليب العقد الفردية. أخيرًا، خلال خطوة العرض، يُستخدم زائر لزيارة كل عقدة في الشجرة، ويطلب من كل عقدة عرض نفسها باستخدام أساليب الزائر. يُرسَل ناتج HTML الناتج إلى العميل.
بعد معالجة الطلب، يتم حذف نسخة فئة الصفحة، ومعها شجرة التحكم بأكملها. يُعدّ هذا الأمر مصدرًا للارتباك لدى مبرمجي ASP.NET المبتدئين الذين يعتمدون على عناصر نسخة الفئة التي تُفقد مع كل دورة طلب/استجابة للصفحة.
إدارة الدولة
تُستضاف تطبيقات ASP.NET على خادم ويب ويتم الوصول إليها باستخدام بروتوكول HTTP عديم الحالة . لذلك، إذا كان التطبيق يستخدم تفاعلًا يعتمد على الحالة، فعليه إدارة حالته بنفسه. يوفر ASP.NET وظائف متنوعة لإدارة الحالة. من الناحية النظرية، تُعامل مايكروسوفت "الحالة" على أنها حالة واجهة المستخدم الرسومية . قد تنشأ مشاكل إذا كان على التطبيق تتبع "حالة البيانات"؛ على سبيل المثال، آلة ذات حالات محدودة قد تكون في حالة عابرة بين الطلبات ( التقييم الكسول ) أو تستغرق وقتًا طويلاً للتهيئة. إدارة الحالة في صفحات ASP.NET مع المصادقة قد تجعل استخراج البيانات من الويب صعبًا أو مستحيلاً.
طلب
تُخزَّن حالة التطبيق بواسطة مجموعة من المتغيرات المشتركة التي يُعرّفها المستخدم. تُضبط هذه المتغيرات وتُهيأ عند Application_OnStartتشغيل الحدث أثناء تحميل أول نسخة من التطبيق، وتبقى متاحة حتى خروج آخر نسخة. يُمكن الوصول إلى متغيرات حالة التطبيق باستخدام Applicationsالمجموعة، التي تُوفّر غلافًا لحالة التطبيق. تُعرَّف متغيرات حالة التطبيق بالاسم. [ 10 ] إدارة حالة التطبيق.
حالة الجلسة
تُحفظ حالة جلسة المستخدم على جانب الخادم بواسطة مجموعة من متغيرات الجلسة التي يُحددها المستخدم، والتي تبقى ثابتة طوال مدة الجلسة. هذه المتغيرات، التي يُمكن الوصول إليها باستخدام Sessionالمجموعة، فريدة لكل جلسة. يُمكن ضبط المتغيرات بحيث تُحذف تلقائيًا بعد فترة زمنية محددة من عدم النشاط، حتى لو لم تنتهِ الجلسة. أما جلسة المستخدم على جانب العميل، فتُحفظ إما بواسطة ملف تعريف ارتباط أو عن طريق تضمين مُعرّف الجلسة في عنوان URL نفسه. [ 10 ]
يدعم ASP.NET ثلاثة أوضاع للاستمرارية لمتغيرات جلسة جانب الخادم: [ 10 ]
- وضع المعالجة
- يتم الاحتفاظ بمتغيرات الجلسة داخل عملية ASP.NET . هذه هي أسرع طريقة؛ ومع ذلك، في هذا الوضع، يتم حذف المتغيرات عند إعادة تدوير عملية ASP.NET أو إيقافها.
- وضع خادم الحالة
- يُشغّل ASP.NET خدمة Windows منفصلة تُدير متغيرات الحالة. ولأن إدارة الحالة تتم خارج عملية ASP.NET، ولأن محرك ASP.NET يصل إلى البيانات باستخدام .NET Remoting، فإن ASPState أبطأ من In-Process. يسمح هذا الوضع بموازنة أحمال تطبيق ASP.NET وتوسيع نطاقه عبر خوادم متعددة. ولأن خدمة إدارة الحالة تعمل بشكل مستقل عن ASP.NET، يمكن لمتغيرات الجلسة أن تبقى محفوظة حتى بعد إيقاف تشغيل عملية ASP.NET. مع ذلك، ولأن خادم حالة الجلسة يعمل كنسخة واحدة، فإنه يظل نقطة ضعف لحالة الجلسة. لا يمكن موازنة أحمال خدمة حالة الجلسة، وهناك قيود على أنواع البيانات التي يمكن تخزينها في متغير الجلسة.
- وضع خادم SQL
- تُخزَّن متغيرات الحالة في قاعدة بيانات ، مما يسمح باستمرار متغيرات الجلسة حتى بعد إيقاف تشغيل عمليات ASP.NET. وتتمثل الميزة الرئيسية لهذا الوضع في أنه يُتيح للتطبيق موازنة الحمل على مجموعة الخوادم، من خلال مشاركة الجلسات بين الخوادم. وتُعد هذه الطريقة الأبطأ لإدارة حالة الجلسة في ASP.NET.
تتيح لك حالة جلسة ASP.NET تخزين واسترجاع قيم المستخدم أثناء تصفحه صفحات ASP.NET في تطبيق ويب. بروتوكول HTTP هو بروتوكول عديم الحالة، ما يعني أن خادم الويب يتعامل مع كل طلب HTTP لصفحة ما كطلب مستقل، ولا يحتفظ بأي معلومات عن قيم المتغيرات المستخدمة في الطلبات السابقة. تُعرّف حالة جلسة ASP.NET الطلبات الواردة من نفس المتصفح خلال فترة زمنية محددة كجلسة، وتوفر طريقة لحفظ قيم المتغيرات طوال مدة تلك الجلسة. بشكل افتراضي، تكون حالة جلسة ASP.NET مُفعّلة لجميع تطبيقات ASP.NET.
تشمل البدائل لحالة الجلسة ما يلي:
- حالة التطبيق، التي تخزن المتغيرات التي يمكن الوصول إليها من قبل جميع مستخدمي تطبيق ASP.NET.
- خصائص الملف الشخصي، التي تحفظ قيم المستخدم في مخزن البيانات دون انتهاء صلاحيتها.
- التخزين المؤقت في ASP.NET، والذي يخزن القيم في الذاكرة المتاحة لجميع تطبيقات ASP.NET.
- حالة العرض، التي تحتفظ بالقيم في الصفحة.
- ملفات تعريف الارتباط.
- سلسلة الاستعلام والحقول الموجودة في نموذج HTML والتي يمكن الوصول إليها من خلال طلب HTTP.
عرض الحالة
يشير مصطلح "حالة العرض" إلى آلية إدارة الحالة على مستوى الصفحة، والتي تستخدمها صفحات HTML الصادرة عن تطبيقات ASP.NET للحفاظ على حالة عناصر التحكم في نماذج الويب والويدجت . تُشفّر حالة عناصر التحكم وتُرسل إلى الخادم عند كل عملية إرسال نموذج في حقل مخفي يُعرف باسم `viewstate` __VIEWSTATE. يُعيد الخادم المتغير `viewstate` بحيث تُعرض عناصر التحكم بحالتها الأخيرة عند إعادة عرض الصفحة. على جانب الخادم، قد يُغيّر التطبيق حالة العرض إذا تطلّبت المعالجة تغيير حالة أي عنصر تحكم. تُفكّ شفرة حالات عناصر التحكم الفردية على الخادم، وتكون متاحة للاستخدام في صفحات ASP.NET باستخدام ViewStateالمجموعة `viewstate`. [ 11 ]
يُستخدم هذا بشكل أساسي للحفاظ على معلومات النموذج عند إعادة تحميل الصفحة. يتم تفعيل خاصية "عرض الحالة" افتراضيًا، وتقوم عادةً بتسلسل البيانات في كل عنصر تحكم على الصفحة بغض النظر عما إذا كانت تُستخدم فعليًا أثناء إعادة التحميل. مع ذلك، يمكن (بل ينبغي) تعديل هذا السلوك، حيث يمكن تعطيل "عرض الحالة" على مستوى عنصر التحكم، أو الصفحة، أو على مستوى الخادم ككل.
يجب على المطورين توخي الحذر عند تخزين المعلومات الحساسة أو الخاصة في حالة العرض لصفحة أو عنصر تحكم، حيث يمكن فك تشفير سلسلة Base64__VIEWSTATE التي تحتوي على بيانات حالة العرض بسهولة. لا تقوم حالة العرض بتشفير القيمة افتراضيًا. يمكن تفعيل التشفير على مستوى الخادم (أو على مستوى الخادم المحدد)، مما يسمح بالحفاظ على مستوى معين من الأمان. [ 12 ]
التخزين المؤقت من جانب الخادم
توفر ASP.NET كائن "Cache" الذي تتم مشاركته عبر التطبيق ويمكن استخدامه أيضًا لتخزين كائنات متنوعة. يحتفظ كائن "Cache" بالبيانات لفترة زمنية محددة فقط.
آخر
ومن الوسائل الأخرى لإدارة الحالة التي يدعمها ASP.NET ملفات تعريف الارتباط والتخزين المؤقت وسلسلة الاستعلام .
محرك القوالب
عند إطلاق ASP.NET لأول مرة، افتقرت إلى محرك قوالب . ولأن إطار عمل .NET كائني التوجه ويسمح بالوراثة ، كان العديد من المطورين يُعرّفون فئة أساسية جديدة ترث من فئة أخرى System.Web.UI.Page، ويكتبون فيها دوالًا لعرض HTML، ثم يجعلون صفحات تطبيقاتهم ترث من هذه الفئة الجديدة. مع أن هذا يسمح بإعادة استخدام العناصر المشتركة في الموقع، إلا أنه يُضيف تعقيدًا ويخلط بين شفرة المصدر ولغة الترميز . علاوة على ذلك، لا يمكن اختبار هذه الطريقة إلا بصريًا بتشغيل التطبيق، وليس أثناء تصميمه. وقد استخدم مطورون آخرون ملفات التضمين وحيلًا أخرى لتجنب تكرار عناصر التنقل وغيرها في كل صفحة.
قدّمت ASP.NET 2.0 مفهوم الصفحات الرئيسية ، التي تتيح تطوير الصفحات باستخدام القوالب . يمكن أن يحتوي تطبيق الويب على صفحة رئيسية واحدة أو أكثر، والتي يمكن تداخلها بدءًا من ASP.NET 2.0. [ 13 ] تحتوي القوالب الرئيسية على عناصر تحكم نائبة، تُسمى ContentPlaceHolders ، لتحديد مكان المحتوى الديناميكي، بالإضافة إلى أكواد HTML و JavaScript المشتركة بين الصفحات الفرعية.
تستخدم الصفحات الفرعية عناصر تحكم ContentPlaceHolder، والتي يجب ربطها بعنصر نائب الصفحة الرئيسية الذي تُملأ به صفحة المحتوى. أما باقي الصفحة فيتم تحديده بواسطة الأجزاء المشتركة من الصفحة الرئيسية، تمامًا كما هو الحال في دمج المراسلات في معالج النصوص . يجب وضع جميع عناصر الترميز وعناصر تحكم الخادم في صفحة المحتوى داخل عنصر تحكم ContentPlaceHolder.
عندما يتم تقديم طلب لصفحة محتوى، يقوم ASP.NET بدمج مخرجات صفحة المحتوى مع مخرجات الصفحة الرئيسية، ويرسل المخرجات إلى المستخدم.
تظل الصفحة الرئيسية متاحة بالكامل لصفحة المحتوى. وهذا يعني أن صفحة المحتوى لا تزال قادرة على تعديل العناوين، وتغيير العناوين، وتكوين التخزين المؤقت، وما إلى ذلك. وإذا كانت الصفحة الرئيسية تعرض خصائص أو طرقًا عامة (مثلًا، لتعيين إشعارات حقوق النشر)، فيمكن لصفحة المحتوى استخدامها أيضًا.
ملفات أخرى
تتضمن امتدادات الملفات الأخرى المرتبطة بإصدارات مختلفة من ASP.NET ما يلي:
| امتداد | تم تقديمه في الإصدار | وصف |
|---|---|---|
| أساكس | 1.0 | هذا هو ملف التطبيق العام. يمكنك استخدام هذا الملف لتعريف المتغيرات العامة (المتغيرات التي يمكن الوصول إليها من أي صفحة ويب في تطبيق الويب). يُستخدم في الغالب لتعريف أحداث التطبيق العامة المتعلقة بكائن التطبيق والجلسة. أما ملف Global.asax ، فيُستخدم لمنطق مستوى التطبيق [ 14 ]. |
| ascx | 1.0 | عنصر تحكم المستخدم، المستخدم لمنطق ملفات التحكم في المستخدم [ 15 ] |
| ashx | 1.0 | لا تحتوي معالجات HTTP المخصصة على واجهة مستخدم. |
| asmx | 1.0 | صفحات خدمة الويب . بدءًا من الإصدار 2.0، يتم وضع صفحة الكود الخلفي لملف asmx في مجلد app_code. |
| aspx | 1.0 | صفحة ويب ASP.NET Web Forms يمكنها احتواء عناصر تحكم الويب ومنطق العرض ومنطق الأعمال. http://msdn.microsoft.com/en-us/library/2wawkw1c.aspx |
| أكسد | 1.0 | عند تفعيل هذا الخيار في ملف web.config، يُخرج ملف trace.axd بيانات التتبع على مستوى التطبيق . كما يُستخدم أيضًا مع معالج webresource.axd الخاص، الذي يسمح لمطوري عناصر التحكم/المكونات بتجميع مكون/عنصر تحكم كامل مع الصور، والنصوص البرمجية، وCSS، وما إلى ذلك، لنشره في ملف واحد (مجموعة). |
| متصفح | 2.0 | ملفات إمكانيات المتصفحات المخزنة بصيغة XML ؛ أُضيفت في الإصدار 2.0. يتضمن ASP.NET 2 العديد منها افتراضيًا لدعم متصفحات الويب الشائعة. تُحدد هذه الملفات إمكانيات كل متصفح، مما يسمح لـ ASP.NET 2 بتخصيص مخرجاته وتحسينها تلقائيًا وفقًا لذلك. تتوفر ملفات .browser خاصة للتنزيل مجانًا للتعامل مع، على سبيل المثال، مدقق W3C، لعرض الصفحات المتوافقة مع المعايير بشكل صحيح. يحل هذا محل قسم BrowserCaps الأكثر تعقيدًا الذي كان موجودًا في ملف machine.config، والذي كان من الممكن تعديله في ملف web.config في ASP.NET 1.x. |
| التكوين | 1.0 | يُعد ملف web.config الملف الوحيد في تطبيق ويب مُحدد الذي يستخدم هذا الامتداد افتراضيًا (يؤثر ملف machine.config بالمثل على خادم الويب بأكمله وجميع التطبيقات الموجودة عليه)، ومع ذلك، يوفر ASP.NET إمكانية إنشاء واستخدام ملفات تكوين أخرى. تُخزن هذه الملفات بتنسيق XML . |
| cs/vb/fs | 1.0 | ملفات التعليمات البرمجية (يشير cs إلى C#، وvb إلى Visual Basic، وfs إلى F#). ملفات التعليمات البرمجية الخلفية (انظر أعلاه) تحمل في الغالب الامتداد " .aspx.cs" أو " .aspx.vb" للغتين الأكثر شيوعًا. قد توجد أيضًا ملفات تعليمات برمجية أخرى (تحتوي غالبًا على فئات "مكتبة" شائعة) في مجلدات الويب بامتداد cs/vb. في ASP.NET 2، يجب وضع هذه الملفات داخل مجلد App_Code حيث يتم تجميعها ديناميكيًا وتكون متاحة للتطبيق بأكمله. |
| cshtml | 4.1 | طرق العرض (مزيج من لغة C# و HTML باستخدام صيغة Razor ) |
| dbml | 3.5 | ملف فئات بيانات LINQ to SQL |
| edmx | 3.5 | نموذج ADO.NET Entity Framework |
| يتقن | 2.0 | ملف الصفحة الرئيسية. اسم الملف الافتراضي هو Master1.master |
| resx | 1.0 | ملفات الموارد الخاصة بالتدويل والترجمة . يمكن أن تكون ملفات الموارد عامة (مثل الرسائل) أو محلية ، مما يعني أنها خاصة بملف aspx أو ascx واحد. |
| خريطة الموقع | 2.0 | ملفات تكوين خريطة الموقع. اسم الملف الافتراضي هو web.sitemap |
| جلد | 2.0 | ملفات تصميم القالب. |
| خدمة | 3.0 | ملف خدمة Windows Communication Foundation |
| vbhtml | 4.1 | طرق العرض (مزيج من VB و HTML باستخدام صيغة Razor ) |
هيكل الدليل
بشكل عام، يمكن تحديد بنية مجلدات ASP.NET وفقًا لتفضيلات المطور. باستثناء بعض أسماء المجلدات المحجوزة، يمكن للموقع أن يمتد على أي عدد من المجلدات. وتنعكس هذه البنية عادةً بشكل مباشر في عناوين URL. على الرغم من أن ASP.NET يوفر وسائل لاعتراض الطلب في أي مرحلة من مراحل المعالجة، إلا أن المطور غير مُلزم بتوجيه الطلبات عبر تطبيق مركزي أو وحدة تحكم أمامية.
أسماء الدلائل الخاصة (من ASP.NET 2.0 فصاعدًا) هي: [ 16 ]
- رمز التطبيق
- هذا هو مجلد "الرمز الخام". يقوم خادم ASP.NET تلقائيًا بتجميع الملفات (والمجلدات الفرعية) الموجودة في هذا المجلد إلى ملف تجميعي يمكن الوصول إليه في رمز كل صفحة من صفحات الموقع. يُستخدم مجلد App_Code عادةً لرمز تجريد الوصول إلى البيانات، ورمز النموذج، ورمز الأعمال. كما تُوضع فيه أيضًا أي معالجات HTTP ووحدات نمطية خاصة بالموقع، بالإضافة إلى تنفيذ خدمة الويب. وكبديل لاستخدام App_Code، يمكن للمطور اختيار توفير ملف تجميعي منفصل يحتوي على رمز مُجمَّع مسبقًا.
- بيانات التطبيق
- يُعدّ مجلد App_Data الخاص بـ ASP.NET المجلد الافتراضي لأي قاعدة بيانات يستخدمها موقع ASP.NET الإلكتروني. قد تتضمن قواعد البيانات هذه ملفات Access (mdb) أو ملفات SQL Server (mdf). يُعدّ App_Data المجلد الوحيد الذي يُمنح صلاحية الكتابة إليه لتطبيق ASP.NET الإلكتروني. [ 17 ]
- App_GlobalResources
- يحتوي هذا المجلد على ملفات resx التي تتضمن موارد مترجمة متاحة لكل صفحة من صفحات الموقع. عادةً ما يقوم مطورو ASP.NET بتخزين الرسائل المترجمة، وما إلى ذلك، المستخدمة في أكثر من صفحة.
- App_LocalResources
- على سبيل المثال، يحتوي ملف يُسمى CheckOut.aspx.fr-FR.resx على موارد مُترجمة للنسخة الفرنسية من صفحة CheckOut.aspx. عندما يتم ضبط لغة واجهة المستخدم على الفرنسية، يقوم ASP.NET تلقائيًا بالعثور على هذا الملف واستخدامه للترجمة.
- App_Offline.htm
- ملف (وليس مجلدًا) يقوم بتعطيل التطبيق عن طريق إرجاع محتويات الملف لأي طلب من التطبيق.
- سمات التطبيق
- يضيف مجلدًا يحتوي على ملفات متعلقة بالسمات، وهي ميزة جديدة في ASP.NET تساعد على ضمان مظهر متسق في جميع أنحاء موقع الويب وتسهل تغيير مظهر موقع الويب عند الضرورة.
- App_WebReferences
- يحتوي على ملفات الاكتشاف وملفات WSDL للإشارة إلى خدمات الويب التي سيتم استخدامها في الموقع.
- سلة المهملات
- يحتوي هذا المجلد على ملفات DLL ( ملفات .dll ) لعناصر التحكم والمكونات أو أي كود آخر ترغب في استخدامه في تطبيقك. يتم تلقائيًا استخدام أي فئات ممثلة بالكود الموجود في مجلد Bin في تطبيقك.
أداء
يهدف ASP.NET إلى تحقيق أداء أفضل من التقنيات الأخرى القائمة على البرمجة النصية (بما في ذلك ASP الكلاسيكي) من خلال تجميع كود جانب الخادم عند استخدامه لأول مرة في ملف DLL واحد أو أكثر على خادم الويب . تحتوي ملفات DLL هذه على لغة وسيطة من مايكروسوفت (MSIL) للتشغيل ضمن بيئة تشغيل اللغة المشتركة ؛ مما يوفر تحسينًا ملحوظًا في الأداء مقارنةً باللغات النصية البحتة، وهو مشابه للنهج المستخدم في بايثون، ولا يختلف كثيرًا عن صفحات JavaServer . [ 18 ] يتم هذا التجميع تلقائيًا عند طلب الصفحة لأول مرة (مما يعني أن المطور ليس بحاجة إلى تنفيذ خطوة تجميع منفصلة للصفحات).
تُتيح هذه الميزة سهولة التطوير التي توفرها لغات البرمجة النصية مع مزايا الأداء التي يوفرها البرنامج المُجمَّع. مع ذلك، قد يتسبب التجميع في تأخير ملحوظ ولكنه قصير للمستخدم عند طلب الصفحة المُعدَّلة حديثًا من خادم الويب لأول مرة، ولكن لن يتكرر ذلك إلا إذا تم تحديث الصفحة المطلوبة لاحقًا.
يتم وضع ملفات ASPX وغيرها من ملفات الموارد في مضيف افتراضي على خادم خدمات معلومات الإنترنت (أو خوادم ASP.NET متوافقة أخرى؛ انظر قسم "تطبيقات أخرى" أدناه). عند طلب العميل لصفحة لأول مرة، يقوم إطار عمل .NET بتحليل الملفات وتجميعها في مكتبة .NET وإرسال الاستجابة؛ وتُلبى الطلبات اللاحقة من ملفات DLL. افتراضيًا، يقوم ASP.NET بتجميع الموقع بالكامل على دفعات من 1000 ملف عند الطلب الأول. إذا تسبب تأخير التجميع في مشاكل، يمكن تعديل حجم الدفعة أو استراتيجية التجميع.
يمكن للمطورين أيضًا اختيار تجميع ملفات "الرمز البرمجي" مسبقًا قبل النشر، باستخدام Microsoft Visual Studio، مما يُغني عن الحاجة إلى التجميع الفوري في بيئة الإنتاج. [ 19 ] وهذا يُغني أيضًا عن الحاجة إلى وجود شفرة المصدر على خادم الويب. كما يدعم تجميع النصوص مسبقًا.
مقارنة بين ASP.NET و Classic ASP
تُسهّل ASP.NET WebForms انتقال المطورين من تطوير تطبيقات ويندوز إلى تطوير الويب، إذ تُتيح لهم إنشاء صفحات تتألف من عناصر تحكم تُشبه واجهة مستخدم ويندوز . يعمل عنصر تحكم الويب، مثل الزر أو التسمية ، بنفس طريقة نظيره في ويندوز: حيث يُمكن للبرنامج تعيين خصائصه والاستجابة لأحداثه. كما تُدرك عناصر التحكم كيفية عرض نفسها: فبينما ترسم عناصر تحكم ويندوز نفسها على الشاشة، تُنتج عناصر تحكم الويب أجزاءً من HTML و JavaScript تُشكّل أجزاءً من الصفحة الناتجة التي تُرسل إلى متصفح المستخدم النهائي.
يشجع إطار عمل ASP.NET WebForms المبرمجين على تطوير التطبيقات باستخدام نموذج واجهة المستخدم الرسومية القائم على الأحداث ، بدلاً من بيئات برمجة الويب التقليدية مثل ASP و PHP . يجمع هذا الإطار بين التقنيات الحالية مثل JavaScript ومكونات داخلية مثل " ViewState " لتوفير حالة مستمرة (بين الطلبات) لبيئة الويب التي تفتقر بطبيعتها إلى الحالة.
ومن الاختلافات الأخرى مقارنةً بـ Classic ASP ما يلي:
- يعني الكود المُجمّع أن التطبيقات تعمل بشكل أسرع مع اكتشاف المزيد من أخطاء وقت التصميم في مرحلة التطوير.
- تم تحسين معالجة الأخطاء أثناء التشغيل بشكل كبير، وذلك باستخدام معالجة الاستثناءات باستخدام كتل try-catch.
- استعارات مشابهة لتطبيقات مايكروسوفت ويندوز مثل عناصر التحكم والأحداث.
- تتيح مجموعة واسعة من عناصر التحكم ومكتبات الفئات، بالإضافة إلى عناصر التحكم المُعرّفة من قِبل المستخدم، بناء التطبيقات بسرعة. كما أن تصميم هذه العناصر على الصفحة أسهل لأن معظمها يُمكن تنفيذه بصريًا في معظم المحررات.
- يستخدم ASP.NET إمكانيات اللغات المتعددة لـ .NET Common Language Runtime ، مما يسمح ببرمجة صفحات الويب بلغات VB.NET و C# و F# و Delphi.NET وما إلى ذلك.
- إمكانية تخزين الصفحة بأكملها مؤقتًا أو أجزاء منها فقط لتحسين الأداء.
- القدرة على استخدام نموذج تطوير الكود الخلفي لفصل منطق الأعمال عن العرض.
- القدرة على استخدام تصميم كائني التوجه حقيقي لبرمجة الصفحات وعناصر التحكم
- إذا تسبب تطبيق ASP.NET في تسريب الذاكرة ، فإن وقت تشغيل ASP.NET يقوم بإلغاء تحميل AppDomain الذي يستضيف التطبيق المخطئ وإعادة تحميل التطبيق في AppDomain جديد.
- يمكن حفظ حالة الجلسة في ASP.NET في قاعدة بيانات Microsoft SQL Server أو في عملية منفصلة تعمل على نفس جهاز خادم الويب أو على جهاز مختلف. وبهذه الطريقة، لا تُفقد قيم الجلسة عند إعادة تشغيل خادم الويب أو إعادة تدوير عملية ASP.NET العاملة.
- تعرضت إصدارات ASP.NET السابقة للإصدار 2.0 لانتقادات بسبب افتقارها إلى التوافق مع المعايير. لم تكن أكواد HTML وJavaScript المُرسلة إلى متصفح العميل متوافقة دائمًا مع معايير W3C / ECMA . إضافةً إلى ذلك، كانت ميزة الكشف عن المتصفح في إطار العمل تُصنّف أحيانًا متصفحات الويب الأخرى غير Internet Explorer من Microsoft على أنها "قديمة"، وتُعيد أكواد HTML/JavaScript إلى هذه المتصفحات مع حذف بعض الميزات، أو أحيانًا معطلة أو غير مكتملة. أما في الإصدار 2.0، فتُنتج جميع عناصر التحكم أكواد HTML 4.0 أو XHTML 1.0 (الافتراضي) أو XHTML 1.1 صالحة، وذلك حسب إعدادات الموقع. كما أصبح الكشف عن متصفحات الويب المتوافقة مع المعايير أكثر دقة، ودعم CSS ( أوراق الأنماط المتتالية) أوسع نطاقًا.
- عناصر تحكم خادم الويب: هي عناصر تحكم تُقدمها ASP.NET WebForms لتوفير واجهة المستخدم لنموذج الويب. هذه العناصر مُدارة حسب الحالة، وهي عناصر تحكم WYSIWYG .
مثال
<%@ Page Language = "C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat= "server" > protected void Page_Load ( object sender , EventArgs e ) { Label1 . Text = DateTime . Now . ToLongDateString (); } </script> <html xmlns= "http://www.w3.org/1999/xhtml" > <head runat= "server" > <title> صفحة نموذجية </title> </head> <body> <form id= "form1" runat= "server" > <div> الوقت الحالي هو : <asp:Label runat= "server" id= "Label1" /> </div> </form> </body> </html>مراجع
الاقتباسات
- ↑ "ما هي نماذج الويب" . docs.microsoft.com . 15 يونيو 2023.
- ↑ "نظرة عامة على حالة عرض ASP.NET" . msdn.microsoft.com . 4 ديسمبر 2014.
- ↑ "اختر بين ASP.NET و ASP.NET Core" . docs.microsoft.com . 10 أبريل 2024.
- ↑ فريق العمل (نوفمبر 2001). "نظرة عامة على ASP.NET ونماذج الويب" . مايكروسوفت . تم الاسترجاع في 5 يونيو 2011 .
- ^ ( ماكدونالد وسزبوستا 2005 ، ص 63)
- ↑ "مشاريع تطبيقات الويب مقابل مشاريع مواقع الويب في Visual Studio" . 26 أغسطس 2013.
- ↑ "البرمجة الخلفية مقابل البرمجة المضمنة" . إطار عمل مايكروسوفت دوت نت . مايكروسوفت . مؤرشف من الأصل في 11 نوفمبر 2010. تم الاسترجاع في 22 نوفمبر 2010 .
- ↑ "aspx.designer.cs كيف يعمل؟" . StackOverflow . 10 سبتمبر 2015.
- ↑ "نظرة عامة على بنية صفحات الويب ASP.NET" . إطار عمل Microsoft .NET . Microsoft . تم الاطلاع عليه بتاريخ 22-11-2010 .
- 1 2 3 "معلومات: نظرة عامة على إدارة الحالة في ASP.NET" . تم الاسترجاع في 23-10-2007 .
- ↑ "ViewState في ASP.NET" . مؤرشف من الأصل بتاريخ 14 أكتوبر 2007. تم الاطلاع عليه بتاريخ 23 أكتوبر 2007 .
- ↑ "تشفير حالة العرض في ASP.NET" . تم الاطلاع عليه بتاريخ 19-07-2009 .
- ↑ "صفحات ASP.NET الرئيسية" . microsoft.com . مايكروسوفت. 4 ديسمبر 2014.
- ↑ "Global.asax Syntax" . microsoft.com . Microsoft.
- ↑ "تحويل عنصر تحكم المستخدم بصيغة .ascx إلى عنصر تحكم مخصص قابل لإعادة التوزيع" . microsoft.com . مايكروسوفت. 24 يونيو 2011.
- ↑ "بنية مجلد مشروع ASP.NET للويب" . microsoft.com . مايكروسوفت. 4 ديسمبر 2014.
- ↑ "بنية دليل ASP.NET" . aspnet4.com . مؤرشف من الأصل بتاريخ 27-10-2011 . تم الاطلاع عليه بتاريخ 16-06-2018 .
- ^ ( ماكدونالد و Szpuszta 2005 ، ص. 7-8)
- ↑ "نظرة عامة على التجميع المسبق لمشروع موقع ويب ASP.NET: تنفيذ التجميع المسبق" . شبكة مطوري مايكروسوفت . 4 ديسمبر 2014. تم الاطلاع عليه في 13 يناير 2016 .
- ↑ pygments/tests/examplefiles/aspx-cs/aspx-cs_example.aspx على GitHub
مصادر
- ماكدونالد، ماثيو. سبوشتا، ماريو (2005). Pro ASP.NET 2.0 في C# 2005 (الطبعة الأولى ). Apress. رقم ISBN 978-1-59059-496-4.
روابط خارجية
- الوثائق الرسمية
- نماذج الويب على www.asp.net
- مقدمة إلى ASP.NET ونماذج الويب (وثيقة صدرت في أوائل عام 2001)
- ASP.NET
- واجهات برمجة تطبيقات مايكروسوفت
- برامج مايكروسوفت المجانية
- مايكروسوفت فيجوال ستوديو
- محركات القوالب
- أطر عمل الويب
- برنامج 2002
- برنامج مجاني يعمل بنظام ويندوز فقط
