البرامج التى يتم عمل Compilation لها تحت بيئة الدوت نيت لا يتم تحويلها
مباشره إلى Native Code بل يتم تحويلها إلى MSIL ( Microsoft Intermediate
Language ) تماماً مثل تطبيقات الجافا التى يتم تحويلها إلى Byte Code و
بالتالى هذا يجعل تطبيقات الدوت نيت قابله للعمل على اى نظام تشغيل يحتوى
على ال CLR بعد ذلك يتم تحويل كود ال MSIL إلى Native Code بواسطة مترجم
وقت التنفيذ (Just In Time Compiler ) تحويل الكود إلى MSIL شئ ممتع فهو
يجعلك تعمل تحت منصة الدوت نيت باستخدام لغتك المفضله (التى يجب ان تدعم
تحويل الكود إلى MSIL )
يبقى شئ يجب ان نوضحه هنا و هو ان الكود الذى يتم تنفيذه تحت بيئة الدوت
نيت يسمى managed code و يسمى كذلك لانه يستخدم ململم النفايات GC لتحرير
الذاكره من الكائنات الغير مستخدمه و ما غير ذلك فيسمى unmanaged code
دعنا نوضح النقطه السابقه الخاصه بكيفية تنفيذ ال managed code بشئ من التفصيل
كما ذكرنا فان ال CLR هى المسئوله عن تحميل المجمعات (Assemblies) و
الكائنات (Objects) الخاصه بتطبيقك فى الذاكره ... بعد ان يتم تحميل الكود
و يبدأ تنفيذه تستمر ال CLR فى العمل لمراقبة تنفيذ ال managed code خاصتك
لتقدم له الخدمات الموجوده بالشكل الموضح اعلاه
ايضاً لكى تتاكد من ان برنامجك يعمل فى بدون اى عوامل خارجيه تؤثر على عمله
ماذا بعد ان تنتهى دورة حياة تطبيقك ؟تقوم ال CLR بتحرير الذاكره من كائنات تطبيقك باستخدام ميكانيكيه داخليه
تسمى ال Garbage Collector او ململم النفايات (مثل تطبيقات جافا)
قبل ان يبدأ ال CLR فى هذه المكانيكيه فهو يقوم بتحميل نفسه فى ال Windows Hosting Process
دعنا نلقى نظره عن قرب من هذه العمليه
المترجمات التى تدعم ال managed code مثل VB.NET مثلاً تقوم باضافة ترويسة
(Header) تقوم بتوليد managed assembly file هذا الملف يجعل نظام التشغيل
ويندوز يقوم اوتوماتيكياً بتحميل ملف MSCOREE.DLL الذى يقوم ببدأ جلسة عمل
لل CLR لتطبيقك عن طريق تحميل ملف MSCORWKS.DLL
افترض ان تطبيقك ينتج ملف اسمه MyApp.exe و انظر إالى الصوره التاليه لتستوعب هذه الفكره باختصار شديد
هل معنى هذا ان تطبيقات الدوت نيت ستعمل على اى منصه مثل جافا ؟نظرياً نعم حيث انه من المفترض ان منصة الدوت نيت منفصله عن نظام التشغيل
و لكن تقنياً حتى الان لا تعمل تطبيقات الدوت نيت إلا من خلال منصة
الويندوز و إن كان هناك مجهودات مبذوله لنقل منصة الدوت نيت إلى لينكس من
خلال مشروع مونو
2- مكتبة فئات الدوت نيت DotNet Class Libraryتأتى بيئة الدوت نيت محمله بأكثر من 5 الآلاف فئه Class جاهزه تساعد
المطور فى إنشاء التطبيقات المختلفه بكل سلاسه فهى تقدم له كل الاكواد
التى يتكرر تنفيذها و لكن مغلفه مما يعطى امن للكود اثناء تنفيذه كما تجعل
ذهن الطور يتجه نحو ما هو المطلوب تاديته من البرنامج و يترك التفاصيل
الفرعيه لفئات الدوت نيت
هذه الفئات Classes تقع فى 7 مجموعات رئيسيه :
1- فئات التعامل مع هياكل البيانات Data Structures
2- فئات التعامل مع ادوات الادخال والاخراج IO management
3- فئات ادوات تطبيقات الويندوز و الويب Windows and Web Controls
4- فئات الوصول إلى البيانات Database access
5- فئات تعدد خيوط المعالجه Multithreading
6- Remoting
7- فئات الانعكاس Reflections
كل هذه الفئات يمكن الوصول إليها من اى لغة تدعم الدوت نيت اى ان المطور
الذى يستخدم الفيجوال بيسك دوت نيت سيستخدم هذه الفئات كما هو الحال مع
المطور الذى يستخدم ال #C مثل المطور الذى يستخدم Perl.NET مثل المطور
الذى يستخدم Delphi.Net
كل ال Implementaion الخاصه بإطار عمل الدوت نيت يتم شحنها مع مجموعه كبيره من الفئات المبنيه بداخلها (المدمجه معها)
مكتبة فئات إطار العمل FCL تحتوى على مجموعه كبيره من الفئات تتنوع فى
استخداماتها من دوال ال API التى تم تغليفها ووضعها فى صوره امنه للمبرمج
يستطيع التعامل معها داخل الدوت نيت - فئات للتعامل مع قواعد البيانات -
فئات للتعامل مع الواجهه الرسوميه للمستخدم - فئات للتعامل مع تنسيق النص
- فئات للتعامل مع المجموعات COLLECTIONS - فئات للتعامل مع ال Program
Security و هكذا ترى ان لديك مكتبه كبيره جداً من الفئات القابله للاستخدام
و لكن ليس كل الفئات قابله للاستخدام داخل كل انواع التطبيقات فقد نجد
فئات تستخدم فى تطبيقات الويندوز windows application و لكن لا تستخدم
بداخل تطبيقات الويب web application او ال mobile applications او العكس
يجب ان تحذر استخدام مكتبة الفئات إلا للمنصات التى تعمل عليها فقط اى لا
تحاول استخدام مكتبه للتعامل مع السيكيورتى مثلاًُ مع نظام لا يدعم
السيكيورتى
ليس ان تحوبل الكود فقط إلى MSIL يسمح لك بالعمل عبر المنصات المختلفه بل
ايضاً معرفتك باى مكتبه من الفئات قابله للعمل عبر تلك المنصات
التحديدات specification الخاصه بال CLI عرفت مجموعه من الفئات الاساسيه
التى يجب توافرها لاى DOT NET FrameWork Implementaion هذه الفئات تعرف
باسم Base Class Library او اختصاراً BCL
استخدامك لل BCL يضمن لك قابلية عمل تطبيقك على اى منصة عمل تستخدم إطار
عمل الدوت نيت و لكن استخدامك لاى فئه خارج اطار ال BCL قد يعرض برنامج
لعدم التوافقيه مع منصة العمل التى يجرى عليها تطبيقك