![]() |
![]() |
|
|||||||
![]() |
|
|
أدوات الموضوع | انواع عرض الموضوع |
|
|
#1 | ||||||
|
أكاديمي متميّز
|
السلام عليكم ورحمة الله وبركاته ![]() كمطور دوت نت عليك أن تفهم جيداً البيئة التي تقوم بعمل تطبيقاتك عليها, قد ترددت كثيراً في طرح هذا الموضوع ولكن وجدته في النهاية هام جداً لذلك قرّرت أن أطرحه لأنه بمعرفتك الجيدة لهذه البيئة ستدرك ماذا تعني لك وماذا يمكن أن تقدمه لك. في هذا الموضوع سأحاول مناقشة مفاهيم بيئة الدوت نت الأساسية وأهم مكوناتها: · ماهي الدوت نت؟ما هي الدوت نت؟ اختلفت التعابير ولم أجد كلمة واحدة تفي بالغرض ولكن ما يمكن قوله هو أنها منصة عمل Platform لكتابة برامج تطبيقات سطح المكتب وتطبيقات الويب, وهي تعتبر جزء هام من بيئات التطوير ومكوّن أساسي في أنظمة التشغيل الحديثة مثل الفيستا و Windows 7,. وهي مدعمّة بمجموعة ضخمة من الفئات تسمى Class Library وبيئة لتشغيل البرامج المكتوبة باللغات التي تدعهما وتسمى هذه البيئة بـ Common Language Runtime. عندما نعود إلى بيئات التطوير الأخرى IDEs البعيدة عن الدوت نت ودرسنا العملية التقليدية لتكوين الملف التنفيذي لبرنامجك, فإننا نجد أن هذا الملف عبارة عن ملف تنفيذي ثنائي Binary Executable File و يحتوي على شفرات الأسمبلي التي تفهمها الآلة, بحيث يمكن لنظام التشغيل تحميله في الذاكرة ثم تشغيله. المخطط التالي يوضّح الكيفية التقليدية تكوين الملف التنفيذي: بينما في البيئة المدارة للدوت نت فإن الملف الناتج عن مترجمات لغات الدوت نت .NET Languages Compilers لا يكون ثنائياً كما رأينا سابقاً, بل يكون تجميعاً Assembly (لا تخلط بينه وبين لغة التجميع) ويحتوي هذا التجميع على بيانات تعريف يطلق عليها MetaData وهي تحمل معلومات حول الكود الموجود في التجميع كما يحتوي التجميع أيضاً على شفرات لغة مايكروسوفت الوسيطة Microsoft Intermediate Language (والتي يرمز لها اختصاراُ MSIL أو CIL أو IL ) بدلاً من شفرات الأسمبلي, والمخطط التالي يوضح عملية تكوين الملف التنفيذي في الدوت نت: ![]() الشكل التالي عبارة عن مخطط مبسّط للتجميع وما يمكن أن يحتويه طبعاً هناك ميزات أخرى تجعل هناك فرقاً بين التجميع (وأحياناً أخرى يطلق عليه "المجمع") والملف التنفيذيالعادي هذه الميزات لها علاقة بالتحزيم والنشر والأمان ولكنها خارج موضوعنا. The Common Language Runtime عندما تقوم بترجمة شفرات برنامجك المصدرية إلى ملف تنفيذي كما ذكرنا سابقاً فإنه يتم تحويل تلك الشفرات إلى كود IL وهنا يأتي دور CLR بحيث يقوم بتشغيل تلك الشفرات بعد تحويلها إلى اللغة التي تفهمها الآلة ( Native Code ) , ولكن ما أهمية CLR؟ في السابق وفي الكثير من لغات البرمجة, كان يجب على المطوّر أن يتعامل مع مستويات النظام المنخفضة ليحقق الدعم الكافي والخدمات المطلوبة لبرنامجه من قبل النظام حتى يشتغل برنامجه بالشكل المطلوب, مثل الأمان ومعالجة الأخطاء وإدارة الذاكرة. ويختلف مستوى الوصول إلى تلك الخدمات حسب لغات البرمجة, فمثلاً مطوّرو Visual Basic يمتلكون نظام لإدارة الذاكرة ومعالجة الاستثناءات Exceptions ولكنهم محرومون من بعض الخدمات الموجودة في COM+ لتحقيق بعض الخدمات الإصافية, في حين أن مبرمجي C++ لديهم الحق كاملاُ في الوصول إلى COM+ ولكن في المقابل إدارة الذاكرة ومعالجة الاستثناءات تعتبر أمر شاق بالنسبة لهم. هنا يأتي دور CLR للتوفيق بين الميزات الموجودة لدى مبرمجي C++ وكذا المتاحة لمبرمجي Visual Basic فهو يمكّن من الوصول إلى كافة الخدمات المتاحة لكل لغات البرمجة, فبفضله يمكن لجميع لغات الدوت نت مثلاً الوصول إلى مكتبة فئات الدوت نت Class Library (والتي سنتحدث عنها لاحقاً), كما يتيح ميزات إضافية مثل : * التنقيح Debugging يجعل من السهل تنقيح كودك واكتشاف الأخطاء الموجودة به.بالإضافة إلى الميزات السابقة فإن الميزة الأساسية للـ CLR هي إدارة وتوجيه برنامجك أثناء عمله, سندرس فيما يلي عمل CLR منذ لحظة تشغيل برنامجك إلى غاية إنهائه. عندما تقوم أنت أو أي إجراء آخر بتشغيل برنامجك, فإن CLR يقوم بعمليات معيّنة لتشغيل برنامجك, كما هو موضح في المخطط التالي: ![]() في البداية يكون نظام التشغيل جاهزاً لتشغيل أي, بينما CLR يبقى خاملاً حتى يطلب نظام التشغيل منه العمل, عند تشغيل الملف التنفيذي يقوم نظام التشغيل من فحص الهيدر Header الخاص بهذا الملف ليتحقق إن كان من خلال الهيدر إذا كان الملف تجميع دوت نت أم لا, إذا لم يكن كذلك فإن نظام التشغيل سيتابع تشغيل بشكل اعتيادي. أما إذا كان الملف تجميعاً خاصاً بالدوت نت فإن نظام التشغيل سيستدعي في هذه الحالة CLR ويقوم بتمرير التطبيق له ليقوم هذا الأخير بتشغيله نيابة عن نظام التشغيل , فيقوم عندها CLR بتحميل التجميع ويقوم بالبحث عن نقطة الإدخال الرئيسية EntryPoint داخل لتجميع ثم يبدأ بتشغيل أجزاء البرنامج. من الممكن أن يرتبط التجميع بتجميعات أخرى , مثل مكتبات الارتباط الحيوي DLLs سيقوم CLR بتحميلهم أيضاُ, ولكن هذه المرة على أساس الحاجة فقط, يعني أن التجميع المرتبط بالتجميع الأساسي لا يتم تحميله إلا إذا احتاج CLR لتشغيل الكود الموجود به, فمن الممكن أن لا يكون هناك أي حاجة للكود الموجودة بالتجميع المرتبط بالتجميع الأساسي لذلك ليس هناك حاجة لإهدار المزيد من موارد النظام إلا إذا كان هناك ضرورة قصوى. كما ذكرنا سابقاً فإن مترجمات لغات الدوت نت تقوم بتحويل الشفرة المصدرية إلى كود IL , كجزء من التجميع (الملف التنفيذي) , ولتشغيل كود IL هذا يجب على CLR تحويله إلى كود ثنائي Binary Code والذي يفهمه نظام التشغيل وهنا يأتي دور المترجم JIT (اختصار Just In-Time Compiler ) وكما يشير اسمه ( JIT ) فإن هذا الأخير يعمل على تحويل كود IL إلى لغة الآلة قبل تشغيله أول مرة, بعد ذلك يقوم CLR بخزن كود الآلة الناتج داخل Working Set, عند الحاجة لاستخدامه مجدداً يقوم CLR بالتحقق من وجوده أولاً فإن كان موجوداً داخل ال Working Set يقوم بتشغيله مباشرةً. ويعمل JIT على مستوى الإجراء بحيث عندما يبدأ CLR العمل يقوم JIT بتحويل الإجراء الرئيسي (غالباً الدالة Main) وكل إجراء داخل الإجراء الرئيسي يتم أيضا تحويله إلى لغة الآلة قبل تشغيله, وإذا كان الإجراء الرئيسي يحتوي على استدعاء لإجراء فرعي داخل تجميع آخر (ملف DLL) يقوم CLR بتحميل ذلك التجميع (إذا لم يكن محمّلاً سابقاً). هذه العملية تستمر إلى غاية إنهاء البرنامج. المهم في الموضوع بالنسبة لك هو كيفية تصميم تطبيقك وكيفية جعله أحسن أداءاً, على سبيل المثال إذا كان برنامجك يحتاج إلى كود معيّن ولكن يتم استدعاؤه نادراّ فمن الأفضل فصله في ملف DLL آخر حتى لا يضطر CLR إلى تحميله دون الحاجة إلى ذلك, وكذلك تقسيم سير برنامجك إلى مجموعة من الإجراءات المنفصلة يجعلك تتأكد من أن الإجراء لا يتم تحويله من طرف JIT حتى يتم استدعاؤه من طرف CLR. قد تبدو هذه الأمور غير مهمّة بالنسبة لك ولكن يجب لا بد من الانتباه لها.
|
||||||
|
|
|
|
|
#2 | ||||||
|
أكاديمي متميّز
|
The Framework Class Library
تحتوي منصة الدوت نت على مكتبة غنية بآلاف الفئات والأنواع القابلة لإعادة الاستخدام في برامجنا, والتي يتم تنظيمها داخل مجالات أسماء Namespaces, تدعم هذه المكتبة جميع تقنيات الدوت نت مثل: Windows Forms, Windows Presentation Foundation, ASP.NET, ADO.NET, Windows Workflow, و Windows Communication Foundation. وكما ذكرنا سابقاً فإن FCL (والتي يشار إليها أحياناً BCL) مدعومة من قبل CLR, لذلك فجزء من فئاتها مخصص لمعالجة الاستثناءات, الأمان, وتعدد المسارات. (ملاحظة: المصطلح "نوع" أو "Type" مصطلح عام يطلق عادة على الفئات Classes و الواجهات Interfaces, والتراكيب Structures, والتراقيم Enumerations...) مجالات الاسم الشائعة الاستخدام وهي : Systemالقائمة هذه هي جزء فقط من مجالات الأسماء الموجودة داخل مكتبة فئات الدوت نت, وهي تعبر بشكل عام عن الفئات والأنواع الموجودة بداخلها, على سبيل المثال ستجد مكتبات التعامل مع نظام الملفات داخل المجال System.IO, مجال الأسماء هذه يمكن أن تحتوي على اكثر من مستوى وليس فقط مستويين كما في الأمثلة السابقة , فمثلاً, للوصول إلى النماذج والأدوات نحتاج إلى مجال الأسماء System.Windows.Forms والمجال الذي يحتوي على النماذج والأدوات موجود في المستوى الثالث Forms. وعادة ما تكون الأنواع والفئات المشتركة بين أكثر من مجال اسم واحد فرعي موجودة في المستويات العليا كما هو الحال في مجال الاسم System.Data حيث يحتوي على الأنواع المشتركة التي تستخدمها كل من الفئات الموجودة داخل المستوى الثالث أيSQLClient و OLEDB وهكذا... وبطبيعة الحال يمكنك برمجياً إنشاء مجالات الاسم وتنظيم الأنواع الخاصة بك بداخلها. وما يجب عليك تذكره هو أن FCL تحتوي على كائنات جاهزة للاستخدام مباشرة في تطبيقك, فباستخدامها تصبح أكثر إنتاجية فهي توفر عليك الوقت والمجهود اللازم بدلاً من إعادة كتابتها من جديد كما كان يحدث سابقاً.
|
||||||
|
|
|
|
|
#3 | ||||||
|
أكاديمي متميّز
|
لغات البرمجة التي تستهدف الدوت نت
التعديل الأخير تم بواسطة IslamDotNet ; 10/11/09 الساعة 06:31 PM
تدعم الدوت نت استخدام العديد من لغات البرمجة والتي تدعمها كل من CLR و FCL, بحيث تستهدف هذه اللغات منصة الدوت نت كنقطة انطلاق لها في سوق لغات البرمجة, والقائمة التالية تعطي أمثلة عن اللغات يمكن استخدامها لبرمجة منصة الدوت نت: A#طبعاً هذه القائمة لا تسرد كافة اللغات الموجودة حالياً التي تدعم منصة الدوت نت, فهي في تزايد مستمر مما يعني بالضرورة أن منصة الدوت نت ناجحة بكل المقاييس في دعمها لتعدد اللغات وكما علمنا سابقاً فإن مترجمات الدوت نت تقوم بتحويل الشفرات البرمجية إلى كود IL ويتولى CLR مهمة تشغيله, لهذا فجميع اللغات السالف ذكرها تقوم بنفس الشيء لذلك يمكن لأي أحد أن يقوم بإنشاء مترجم يقوم بإرسال كود IL ويقوم بتصنيفه ضمن لغات الدوت نت (لكن الموضوع ليس بتلك البساطة) The Common Type System حتى يمكن للغات البرمجة المتعددة التي تستهدف CLR واحد ويصبح لديها إمكانية استخدام مكتبة FCL فإنه يجب على كل لغات البرمجة أن تحتوي على أنواع متوافقة , هذه التوافقية يطلق عليها النظام المشترك للأنواع CTS . وهذا يعني أن المتغير من نوع int في السي شارب يجب أن يكون مطابقاً لمتغيّر من النوع Integer في الفيجوال بيسك دوت نت, والمكافئ لهما في مكتبة FCL هو النوع int32 والذي يعني عدد صحيح من النوع 32 بت, والموجودة ضمن مجال الاسم System. The Common Language Specifications بالرغم من أن CLR يمكن أن يتعامل مع جميع الأنواع الموجودة في CTS, فإنه ليست كل لغات البرمجة تدعم كافة الأنواع فلابد لكل لغة أن تحتفظ بخصوصياتها بحيث لا يمكن أن تفقد إحدى تلك الخصوصيات أو أن يتم إضافة خصوصيات جديدة لها دون أن تكون متوافقة مع تلك اللغة. ولكن تخيل أنك قمت ببناء مكوّن أو أداة بلغة من اختيارك ولتكن لغة السي شارب, وأردت بيع ذلك المكوّن, عندها ستدرك مدى أهمية أن تتقهم جميع لغات البرمجة التي تستهدف الدوت نت الشفرة التي كتب بها المكوّن الخاص بك, وأنه بدون CLR لا يمكن تحقيق ذلك. وحتى تتفاعل لغات البرمجة مع بعضها بشكل سلس وفعّال, يجب أن تلتزم كل لغة بمجموعة من المعايير التي يطلق عليها The Common Language Specifications فاستهداف CLR وحده ليس كافياً أبداً. أغلب مترجمات الدوت نت يمكن أن تولد شفرات متوافقة مع CLS أو غير متوافقة معه CLS-Compilant أو Non-CLS-Compilant على سبيل المثال: السي شارب يدعم الأنواع unsigned types وهي غير متوافقة مع CLS , وحتى نحقق التوافقية مع CLS في هذه الحالة لا زال في وسعنا استخدام تلك الأنواع في كودنا طالما ليس ظاهراً بشكل مباشر للغات الأخرى التي لا تدعم unsigned types. خاتمة كخلاصة للموضوع, فإن الدوت نت هي منصة مكونة من بيئة تشغيل تسمى CLR و مكتبة من الفئات والأنواع الجاهزة للاستخدام تسمى FCL, بحيث تدعم هذه المنصة عدة لغات, يقوم CLR بتوفير العدبد من الميزات التي تخلصك من القيام بالمهام المتعلقة بنظام التشغيل, بينما FCL هي مكتبة ضخمة من الفئات والأنواع التي تدعم تقنيات إضافية مثل WCF, WPFADO.NET و ASP.NET والكثير, وبفضل دعهما ل CLR و CLS يمكن للعديد من اللغات أن تدعم الدوت نت, وبذلك يمكنك استخدام كودك المكتوب بأي لغة من داخل لغة أخرى. فهم آلية عمل بيئة الدوت نت هام جداً, ولديه تأثير مباشر في كيفية تصميم البرامج الخاصة بك قد قمت باختصار جميع المفاهيم وتبسيطها قدر المستطاع حتى تتمكن من استيعابها بالشكل المطلوب, وأرجو أن أكون قد وفقت في ذلك. بالتوفيق والسلام عليكم ورحمة الله تعالى وبركاته.
|
||||||
|
|
|
|
|
#4 | ||||||
|
أكاديمي جديد
|
شكررررررررررررررررررررررررررررررررررررررررررررا على المعلومات
استفد منها كثير
|
||||||
|
|
|
|
|
#5 |
|
موضوع أكثر من رائع
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
مدونة النظام المحاسبي HTPOS في شكلها الجديد مكتبة أفضل مواضيعي بالأكاديمية ( متجددة ) عَنْ عَبْدِ اللَّهِ بْنِ عَمْرٍو رَضِيَ اللَّهُ عَنْهُ، قَالَ رَسُولُ اللَّهِ صَلَّى اللَّهُ عَلَيْهِ وَسَلَّمَ: "إِنَّ نَبِيَّ اللَّهِ نُوحًا صَلَّى اللَّهُ عَلَيْهِ وَسَلَّمَ لَمَّا حَضَرَتْهُ الْوَفَاةُ قَالَ لِابْنِهِ: إِنِّي قَاصٌّ عَلَيْكَ الْوَصِيَّةَ آمُرُكَ بِاثْنَتَيْنِ وَأَنْهَاكَ عَنْ اثْنَتَيْنِ، آمُرُكَ بِلَا إِلَهَ إِلَّا اللَّهُ فَإِنَّ السَّمَوَاتِ السَّبْعَ وَالْأَرْضِينَ السَّبْعَ لَوْ وُضِعَتْ فِي كِفَّةٍ وَوُضِعَتْ لَا إِلَهَ إِلَّا اللَّهُ فِي كِفَّةٍ رَجَحَتْ بِهِنَّ لَا إِلَهَ إِلَّا اللَّهُ وَلَوْ أَنَّ السَّمَوَاتِ السَّبْعَ وَالْأَرْضِينَ السَّبْعَ كُنَّ حَلْقَةً مُبْهَمَةً قَصَمَتْهُنَّ لَا إِلَهَ إِلَّا اللَّهُ وَسُبْحَانَ اللَّهِ وَبِحَمْدِهِ فَإِنَّهَا صَلَاةُ كُلِّ شَيْءٍ وَبِهَا يُرْزَقُ الْخَلْقُ وَأَنْهَاكَ عَنْ الشِّرْكِ وَالْكِبْرِ" قَالَ: قُلْتُ أَوْ قِيلَ: يَا رَسُولَ اللَّهِ هَذَا الشِّرْكُ قَدْ عَرَفْنَاهُ فَمَا الْكِبْرُ قَالَ: أَنْ يَكُونَ لِأَحَدِنَا نَعْلَانِ حَسَنَتَانِ لَهُمَا شِرَاكَانِ حَسَنَانِ؟ قَالَ: "لاَ" قَالَ هُوَ أَنْ يَكُونَ لِأَحَدِنَا حُلَّةٌ يَلْبَسُهَا؟ قَالَ: "لاَ" قَالَ: الْكِبْرُ هُوَ أَنْ يَكُونَ لِأَحَدِنَا دَابَّةٌ يَرْكَبُهَا؟ قَالَ: "لاَ" قَالَ أَفَهُوَ أَنْ يَكُونَ لِأَحَدِنَا أَصْحَابٌ يَجْلِسُونَ إِلَيْهِ قَالَ: "لاَ" قِيلَ: يَا رَسُولَ اللَّهِ فَمَا الْكِبْرُ؟ قَالَ: "سَفَهُ الْحَقِّ وَغَمْصُ النَّاسِ". رواه البخاري
|
|
|
|
|
![]() |
| مواقع النشر (المفضلة) |
| الكلمات الدلالية (Tags) |
| .net, ado.net, asp.net, assembly, cil, clr, cls, cts, framework, islamdotnet, metadata, wcf, wpf |
| الذين يشاهدون محتوى الموضوع الآن » 1 ( الأعضاء 0 والزوار 1) | |
| أدوات الموضوع | |
| انواع عرض الموضوع | |
|
|
المواضيع المتشابهه
|
||||
| الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
| ما لا يعرفه المحترفون عن Microsoft Access | Mr. Ahmed Negm | MS Access | 5 | 19/05/10 12:50 AM |
| ما الجديد في Microsoft Office Access 2007 | إبراهيم العبدلي | MS Access | 2 | 24/04/10 12:19 PM |
| التكامل مع Microsoft Word 2007 من خلال VB.Net | IslamDotNet | قسم لغة Visual Basic.NET | 6 | 04/03/10 03:35 PM |
| (معلومة عامة) : اصدارات نظام Microsoft Jet | إبراهيم العبدلي | دروس (قواعد البيانات + الاستعلامات) | 8 | 31/05/09 12:17 AM |
| Microsoft Office 2010 | GLAMOUR | مجتمع أعضاء الأكاديمية | 7 | 30/04/09 05:43 PM |