السبت، 16 أكتوبر 2010

بعض المبادئ لنطرق باب الإحتراف, لمن يريد أن يتعلم الدوت نت(1)

بعون الله نبدأ الدرس الرابع عشر من سلسلة دروس هيا نتعلم بعض المبادء لنطرق باب الإحتراف
أتمنى من الله أن يمدكم بجلد لتقوموا بقراءة هذه الدروس بعناية

مجالات التطبيق والتجمعات - Application Domains and Assemblies
قبل أي تنفيذ للكود المتواجد داخل أي تجمع Assembly لا بد لنا من تحميل ذلك التجمع Assembly ضمن مجال تطبيق Application Domains لذلك ينتج عن تشغيل برنامج إنشاء مجال تطبيق Application Domains إفتراضي من قبل وقت التشغيل ويقوم بتحميل جميع التجمعات Assemblies التي يحتاجه التطبيق في ذلك المجال Application Domains.
ويستطيع البرنامج المسؤل عن الترجمة عند الطلب في وقت التشغيل Just-In-Time (JIT) Compiler أن يتخذ قرار بشأن مشاركة التجمع Assembly إذا كان مستخدم من قبل محموعة من مجالات التطبيق Application Domains داخل العملية Process الواحدة أو عن طريق إضافة احد الخصائص لتجمع Assembly لإعلام الترجمة عند الطلب في وقت التشغيل Just-In-Time (JIT) Compiler بأننا نريد مشاركة هذا التجمع Assembly مع بقية المجالات Application Domains المستخدمة ليقوم بإعداد الازم لهذه المشاركة بأن يقوم بتغير مؤشر الوظيفة إلى المؤشر الجديد الذي يتم إنشائه من قبله في جميع مجالات التطبيق Application Domains المتشاركة في العملية Process.
نستطيع تحميل التجمع Assembly ضمن مجال التطبيق بثلاثة طرق:
1. تحميل التجمع Assembly دون مشاركة. أي أن كل مجال تطبيق Application Domains سوف يقوم بتحميل نسخة الخاصة من التجمع Assembly . يتثنى من هذه الحالة التجمع Mscorlib Assembly لأنه يتم تحميله مقبل مضيف وقت التشغيل Runtime Host ويقوم بمشاركته في جميع مجالات التطبيق Application Domains .
2. تحميل التجمع Assembly مع مشاركته. يتم تحميل التطبيق في منطقة محايدة Domain-Neutral ليتم مشاركة مع جميع مجالات التطبيق Application Domains التي تقوم بتحميل نفس التجمع Assembly مع تماثل لخيارت التحميل.
3. جعل التجمع Assembly عام ومشاركته مع جميع مجالات Application Domains التطبيق وفي جميع العمليات Processes. ملاحظة يمكن لأحد التطبيقات إستثاء هذا الخيار و تحميل نسخته الخاصة من التجمع Assembly العام الذي يريده ليعمل بشكل سليم إذا كان هناك إختلاف في رقم الإصدار ولكن كما قلنا هذا الخيار يتعامل مع التجمعات التي تحمل اسم متين Strong-Named Assemblies .

المخطط يصف كيف تقوم التجمعات في وضع مؤشر للوظيفة المستدعاة في بدء تشغيله لأول مرة وهذا ينطبق على جميع التجمعات:



وعند وضع التجمع عام أو تنفيذ الكود لمره آخرة يقوم الترجمة عند الطلب في وقت التشغيل Just-In-Time (JIT) Compiler في تغير مؤشر الوظيفة إلى مكان الوظيفة الجديده التي تمت ترجمتها وهذا ينطبق على جميع التجمعات التي يتم مشاركتها:



يجب الإنتباه في حال إتخاذ قرار بإنشاء منطقة محايده Domain-Neutral لتجمع Assembly من أداء التجمع Assembly Performance والذاكرة المستهلكة من قبل التجمع Reducing Memory Use يجب عدم وضع بيانات ساكنه Static Data كبيرة الحجم لأنه يتم عمل نسخه من هذه البيانات لكل مجال تطبيق Application Domains ليتم تطبيق العزلة Isolate Assemblies على البيانات الساكنه Static Data داخل التجمع Assembly . ويجب تزويد جميع السماحيات Permissions لهذا التجمع Assembly ليتم تطبيق سياسة الأمن Security Policy التي يتبعها نظام التشغيل Operating System .

ليست هناك تعليقات: