مجلد التعليمات البرمجية المشترك في موقع asp.net
إذا كان تطبيق الويب الخاص بك يتضمن تعليمات برمجية ترغب في مشاركتها بين صفحات متعددة، فيمكنك حفظ التعليمات البرمجية في ملف في مجلدين خاصين (مجلد Bin ومجلد App_Code) في الدليل الجذر لتطبيق الويب Clamped. عند إنشاء هذه المجلدات وتخزين أنواع معينة من الملفات فيها، يتعامل ASP.NET مع هذه الملفات بطريقة خاصة.
مجلد Bin يمكنك تخزين التجميعات المترجمة في مجلد Bin، وتشير التعليمات البرمجية الأخرى (مثل رمز الصفحة) في أي مكان في تطبيق الويب إلى المجلد تلقائيًا. والمثال النموذجي هو التعليمات البرمجية المترجمة لفئة مخصصة. يمكنك نسخ التجميع المترجم إلى المجلد Bin الخاص بتطبيق الويب الخاص بك حتى تتمكن كافة الصفحات من استخدام هذه الفئة.
لا يلزم تسجيل التجميعات الموجودة في المجلد Bin. طالما أن ملف .dll موجود في مجلد Bin، فسوف يتعرف عليه ASP.NET. إذا قمت بتغيير ملف .dll وكتبت إصدارًا جديدًا منه في مجلد Bin، فسيقوم ASP.NET باكتشاف التحديث واستخدام الإصدار الجديد من ملف .dll لطلبات الصفحات الجديدة اللاحقة.
أمان مجلد سلة المهملات يؤدي وضع التجميعات المترجمة في مجلد سلة المهملات إلى مخاطر أمنية. إذا قمت بكتابة التعليمات البرمجية وتجميعها بنفسك، فأنت تعرف ما يفعله الرمز. ومع ذلك، يجب عليك التعامل مع التعليمات البرمجية المترجمة في مجلد Bin مثل أي تعليمات برمجية قابلة للتنفيذ. كن حذرًا بشأن التعليمات البرمجية المترجمة حتى تقوم باختبارها وتكون واثقًا من أنك تفهم وظائفها.
يرجى ملاحظة الجوانب الأمنية التالية المتعلقة بوضع التعليمات البرمجية المترجمة في مجلد Bin أم لا:
يتم تحديد نطاق التجميعات الموجودة في المجلد Bin للتطبيق الحالي. ولذلك، لا يمكنهم الوصول إلى الموارد خارج تطبيق الويب الحالي أو رمز الاتصال خارج تطبيق الويب الحالي.
في وقت التشغيل، يتم تحديد مستوى الوصول للتجميع حسب مستوى الثقة المحدد على الكمبيوتر المحلي. لمزيد من المعلومات، راجع مستويات الثقة وملفات السياسة في ASP.NET.
إذا كنت تستخدم مصممًا مثل Visual Studio، فسيتم تشغيل التعليمات البرمجية الموجودة في مجلد Bin في سياق مختلف عن سياق تشغيله. على سبيل المثال، قد يتم تشغيل التعليمات البرمجية بثقة كاملة.
مجلد App_Code يمكنك تخزين التعليمات البرمجية المصدر في مجلد App_Code، والذي سيتم تجميعه تلقائيًا في وقت التشغيل. يمكن لأي كود آخر في تطبيق الويب الوصول إلى التجميع الناتج. لذلك، يعمل المجلد App_Code بشكل مشابه لمجلد Bin، فيما عدا أنه يمكنك تخزين التعليمات البرمجية المصدر فيه بدلاً من التعليمات البرمجية المترجمة. يتيح لك مجلد App_Code ومكانه الخاص في تطبيقات الويب ASP.NET إنشاء فئات مخصصة وملفات أخرى للتعليمات البرمجية المصدر فقط واستخدامها في تطبيق الويب الخاص بك دون الحاجة إلى تجميعها بشكل منفصل.
يمكن أن يحتوي المجلد App_Code على ملفات التعليمات البرمجية المصدر المكتوبة في شكل ملفات فئة تقليدية (أي ملفات ذات امتدادات .vb و.cs وما إلى ذلك). ومع ذلك، يمكن أن تحتوي أيضًا على ملفات لا يبدو أنها مكتوبة بلغة برمجة معينة بشكل واضح. تتضمن الأمثلة ملفات .wsdl (لغة وصف خدمات الويب) وملفات مخطط xml (.xsd). يمكن لـ ASP.NET تجميع هذه الملفات في التجميعات.
يمكن أن يحتوي المجلد App_Code على أي عدد تريده من الملفات والمجلدات الفرعية. يمكنك تنظيم التعليمات البرمجية المصدر الخاصة بك بأي طريقة تجدها مناسبة، وسيظل ASP.NET يجمع كل التعليمات البرمجية في تجميع واحد، ويمكن الوصول إلى هذا التجميع بواسطة تعليمات برمجية أخرى في أي مكان في تطبيق الويب.
يلاحظ
غير مسموح بعناصر تحكم المستخدم في مجلد App_Code. يتضمن ذلك عناصر تحكم المستخدم ذات الملف الفردي بالإضافة إلى عناصر تحكم المستخدم التي تستخدم نموذج الكود الخلفي. يؤدي وضع عنصر تحكم المستخدم في دليل App_Code إلى تجميع رمز تحكم المستخدم خارج الترتيب المطلوب، وبالتالي فهو غير مسموح به. لاحظ أنه ليست هناك حاجة لوضع عناصر تحكم المستخدم في المجلد App_Code؛ فعناصر التحكم هذه متاحة بالفعل للصفحات في أي مكان في التطبيق.
استنتج لغة البرمجة للمجلد App_Code
لم يتم وضع علامة صريحة على المجلد App_Code على أنه يحتوي على ملفات مكتوبة بأي من لغتي البرمجة. بدلاً من ذلك، يستنتج ASP.NET المترجم الذي يجب استدعاؤه لمجلد App_Code بناءً على الملفات التي يحتوي عليها. إذا كان المجلد App_Code يحتوي على ملفات .vb، فإن ASP.NET يستخدم برنامج التحويل البرمجي Visual Basic؛ وإذا كان يحتوي على ملفات .cs، فإن ASP.NET يستخدم برنامج التحويل البرمجي C#، وهكذا.
إذا كان المجلد App_Code يحتوي فقط على ملفات لا تشير بشكل صريح إلى لغة برمجة (مثل ملفات .wsdl)، فسيستخدم ASP.NET المترجم الافتراضي لتطبيق الويب، والذي يوجد في عنصر الترجمة لتطبيق الويب أو ملف تكوين الكمبيوتر بالتأكيد .
استخدام لغات برمجة متعددة في مجلد App_Code لأن التعليمات البرمجية المصدر في مجلد App_Code يتم تجميعها في تجميع واحد، يجب كتابة جميع الملفات الموجودة في مجلد App_Code بنفس لغة البرمجة. على سبيل المثال، لا يمكن أن يحتوي المجلد App_Code على تعليمات برمجية مصدرية مكتوبة بكل من Visual Basic وC#.
ومع ذلك، يمكنك تكوين تطبيق الويب الخاص بك للتعامل مع المجلدات الفرعية للمجلد App_Code كوحدات منفصلة قابلة للترجمة. بهذه الطريقة، يمكن أن يحتوي كل مجلد على كود مصدر مكتوب بلغة برمجة مختلفة. يمكنك تحديد هذا التكوين عن طريق إنشاء عنصر ترجمة في عنصر codeSubDirectories لملف Web.config ثم إضافة مرجع إلى المجلد الفرعي. يوضح المثال التالي كيفية تكوين المجلدات الفرعية المسماة VBCode وCSCode لتجميعها في تجميعات مختلفة:
نسخ الرمز
<تصحيح الأخطاء = "خطأ">
<كودسوبديركتوريز>
<أضف اسم الدليل = "VBCode" />
<أضف اسم الدليل = "CSCode" />
لا يلزم أن تتضمن المراجع إلى المجلدات الفرعية VBCode وCSCode أي معلومات حول لغات البرمجة الموجودة في المجلدات الفرعية. تمامًا كما هو الحال مع المجلد App_Code نفسه، يستنتج ASP.NET المترجم الذي سيتم استخدامه بناءً على الملفات الموجودة في المجلد الفرعي.
أمان المجلد App_Code
إن مشكلات الأمان المتعلقة بالتعليمات البرمجية الموجودة في مجلد App_Code هي في الأساس نفس مشكلات الأمان المتعلقة بالتعليمات البرمجية الموجودة في مجلد Bin - يتم تجميع التعليمات البرمجية في تجميع في وقت التشغيل. والأفضل من مجلد Bin هو أنه يمكنك قراءة الكود المصدري للملفات الموجودة في مجلد App_Code. ومع ذلك، لا تزال هناك مخاطر أمنية إذا لم تفهم الكود بشكل كامل. ولذلك، يجب التعامل مع التعليمات البرمجية المصدر في المجلد App_Code بنفس الحذر مثل التعليمات البرمجية المترجمة التي تم إنشاؤها من نفس التعليمات البرمجية المصدر.
مقتبس من: http://msdn2.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
-