تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مجمعات الدوت نيت Dot net Assemblies
#1
كاتب الموضوع : samerselo

ما هو المجمع
المجمع هو وحدة توزيع ويكون في أغلب الحالات عبارة عن ملف وهو يمثل الكود المترجم للتطبيق فأي كود سوف تكتبه سيتم تخزينه في النهاية في ملف EXE إن كان تطبيقا أو ملف DLL إن كان مكتبة أو توسعا ويحتوي المجمع على كل ما يحتاجه الدوت نيت لتحميل وتشغيل التطبيق.
والمجمعات تكون عامة Public أو خاصة Private. فالمجمعات الخاصة تكون مصممة للاستخدام ضمن تطبيق مفرد فقط وإن لم يكن هناك أية مكتبات DLL فالمجمع التنفيذي EXE يكون التطبيق وتظهر المجمعات الخاصة في المجلد الخاص بها – مجلد التنصيب الخاص بالتطبيق أو المكتبة – ويمكنك تشغيل مجمعين خاصين بنفس الوقت بدون أن يزعج أحدهما الآخر ويكون هذا صحيحا طالما أن كل مجمع يستخدم نفس التركيبة من مجالات الأسماء والفئات من أجل العناصر المكودة فيه فإن امتلك تطبيقات مختلفان فئة باسم WindowsApplication1.Class1 فلن يحدث تداخل بينهما عندما يتم تشغيل كلا التطبيقين لأنهما خاصين فالخاص يعني خاص.
وصممت المجمعات العامة Public ليتم مشاركتها عبر عدة تطبيقات دوت نيت وتختلف المجمعات العامة عن الخاصة بنقطتين:
• المجمعات العامة تمتلك دوما أسماء قوية strong Names إضافة إلى توقيع رقمي مشفر مرتبط بالمجمع وذلك لضمان أنه أتى من ذلك الموزع أو المصدر المسمى كما يمكن للمجمعات الخاصة أن تمتلك اسما قويا ولكن ذلك ليس ضروريا ويبنى الاسم القوى من أجل نسخة المجمع ورقم الإصدار ومعلومات الثقافة والتوقيع الرقمي وتتضمن الفريموورك أداة لتوليد الأسماء القوية sn.exe تساعدنا في هذه العملية ويتضمن فيجول ستوديو خيارا يمكنك من إضافة التوقيع الرقمي خلال عملية الترجمة
• وتخزن المجمعات العامة في المخزن العام للمجمعات GAC عادة ولكن ذلك لا يمنعك من وضع نسخة من مكوناتك المشتركة في مجلد التنصيب الخاص بتطبيقك ولن تصبح هذه المجمعات مشتركة بحق عندما يتم وضعها داخل الـ GAC ويتواجد الـ GAC في مجلد مسمى assembly داخل مجلد الويندوز وطالما أنه تمت إضافة اسم قوي لمجمع الدوت نيت يمكنك إضافته إلى الـ GAC إما بنسخه للمجلد assembly أو باستخدام الأداة gacutil.exe
كما تسمح لك الدوت نيت بتنصيب عدة إصدارات من نفس المجمع في نفس النظام واستخدام جميع هذه الإصدارات بنفس الوقت من خلال عملية تدعى versioning وهذا ينطبق على التطبيقات EXE والمكتبات DLL والمجمعات الخاصة والمشتركة في الـ GAC ولمعاينة ذلك افتح مستكشف ويندوز وانتقل للمجلد assembly داخل مجلد الويندوز وبتصفح الملفات بعد فرزها حسب اسم المجمع – يظهر ذلك بشكل أوضح عند تنصيب الفريموورك 3.5 – فعند استعراض الملفات الموجودة هناك ستجد أن بعض الملفات مكررة أكثر من مرة كل مرة برقم إصدار مختلف.
ومع أنه في العادة هناك علاقة واحد إلى واحد بين الملفات والمجمعات إلا أنه هناك العديد من الحالات التي يكون فيها المجمع مكون من عدة ملفات وتقوم الدوت نيت بمراقبة هذه الملفات بشكل مستمر فإن طرأ أي تعديل عليها فسوف يتم إعلامك بذلك.

ماذا يوجد داخل المجمع
الملف EXE أو DLL للمجمع هو ملف تنفيذ محمول PE وهذه الملفات تمتلك نفس الصيغة للملفات ذات نفس النوع والغير معتمدة على الفريموورك وما يجعل ملفات PE مختلفة هي تلك الأشياء الإضافية التي تجدها بداخلها وككلمة عامة فالمجمع هو تجميع عدة أجزاء مختلفة في وحدة واحدة وتلك الأجزاء المختلفة في مجمعات الدوت نيت هي مصممة للدوت نيت خصيصا ويتكون ملف PE من ثلاثة أقسام رئيسية:
• الترويسة PE Header: وهي مطلوبة لجميع ملفات PE حيث يحدد هذا القسم موقع الأقسام الأخرى للملف
• قسم MSIL: وهو الكود الفعلي المرتبط بالمجمع مخزن بشكل نصف مترجم بحيث يصبح بلغة مايكروسوفت الوسيطة MSIL ولسوء الحظ فمعالجات Intel و AMD في حاسوبك لا تستطيع معالجة كود MSIL مباشرة ولهذا أتت الفريموورك متضمنة مترجم تماما في الوقت JIT Compiler الذي يقوم بترجمة لغة MSIL إلى كود يفهمه المعالج بشكل لحظي
• قسم Metadata كل تلك التفاصيل الإضافية التي يحتاجها الدوت نيت لمعرفة مجمعك تخزن في هذا القسم الأساسي حيث أن بعض هذه العناصر عند جمعها تشكل Assembly Manifest وهي نوع من الوثائق تصف المجمع بشكل عام للعالم حيث تحتوي الـ Metadata على العناصر التالية: - اسم المجمع – رقم الإصدار – محتويات الاسم القوي – إعدادات الثقافة واللغة – سرد أسماء ملفات المجمع – معلومات الأنواع المصدرة – المراجع المرتبطة – معلومات الأنواع الداخلية –
والـ Masinfest هي الجزء الأهم من الـ Metadata وهي التعبير العام عن المجمع فعندما تنظر إلى الـ Mainfest ستعلم بلمحة على ماذا يحتوي المجمع وما هي متطلباته قبل أن تقوم بتحميله وتشغيله.
وحتى قبل وجود الدوت نيت كانت المكتبات والملفات التنفيذية تحتوي على بعض الـ Metadata ولكنها لم تكن تستخدم لتنسيق الوصول بين مختلف أقسام التطبيق ولا تقوم بتنظيم المعلومات الأساسية والموسعة وجاءت الـ Metadata في الدوت نيت لتضم جميع هذه العناصر ووجود كلا من الـ MSIL و الـ Metadata في كل مجمع يجعل هذه الملفات قابلة للقراءة والفهم باستخدام الأدوات المناسبة الأمر الذي ولد مشكلة فالشركات تستثمر الكثير من الوقت والمال في مجهود تطوير التطبيقات ولا ترغب بحصول أي نوع من الهندسة العكسية على ملفاتهم واستخلاص أكوادهم وأسرارهم. ولمنع القراءة العشوائية لمجمعات الدوت نيت قدمت مايكروسوفت وشركاءها الآخرين برمجيات obfuscator التي تقوم بخلط محتويات المجمع الأمر الذي يصعب على البشر القراءة والفهم ولكن ذلك لا يشكل أية صعوبة بالنسبة للدوت نيت فريموورك.




مترجم بتصرف
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مقال منقول] مشروع Mono : شغل الدوت نت على اللينكس أو أي نظام تشغيل تحلم به الشاكي لله 6 5,448 13-03-14, 02:02 AM
آخر رد: الشاكي لله
  بشرى! دوت نت عربي- DotNetArabi لقاءات صوتية مع مبرمجين محترفين في الدوت نت RaggiTech 0 2,035 27-10-12, 04:50 PM
آخر رد: RaggiTech
  كيف تحصل علي إصدار الدوت الموجود علي جهاز الكمبيوتر RaggiTech 2 2,415 27-10-12, 04:31 PM
آخر رد: RaggiTech
  كيف تحصل علي إصدار الدوت الموجود علي جهاز الكمبيوتر RaggiTech 0 1,793 09-10-12, 05:47 PM
آخر رد: RaggiTech
  كيفيه اداره الاحداث فى بيئه الدوت نت الجزء الثالث how To Handle Events in.net Part 3 RaggiTech 0 1,955 09-10-12, 05:22 PM
آخر رد: RaggiTech
  كيفيه اداره الاحداث فى بيئه الدوت نت الجزء الثانى how To Handle Events in .net Part 2 RaggiTech 0 1,963 09-10-12, 05:21 PM
آخر رد: RaggiTech
  كيفيه اداره الاحداث فى بيئه الدوت نت الجزء الاول part 1 how to Handle Events in .net RaggiTech 0 1,848 09-10-12, 05:20 PM
آخر رد: RaggiTech
  مقال- التوثيق في الدوت نت Documenting In .NET RaggiTech 4 3,214 09-10-12, 11:40 AM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم