القائمة الرئيسية

الصفحات

تعلم السي شارب دورة كاملة في #c

ماهي الـ c-sharp "سي شارب"؟

السي شارب (c# ) أحد لغات المرتبطة بتقنية الـ .NET الخاصة بتطوير البرامج، وهي من أنتاج شركة ميكروسوفت.

تم الاعلان عنها في اواسط العام 2000 تزامنا مع الاعلان عن بيئة ال.NET

و تتميز سي شارب بأنها تجمع بين سهولة الـVB وقوة الـ C++





لغة C هي اللغة الأم للـ C# ، وتعتبر من أقدم لغات البرمجة وأول لغة في جيل لغات البرمجة عالية المستوى (high level language) ، وما يميز هذه اللغة أنها من أسرعة وأكفأ لغات البرمجة الموجودة في العالم ولاتحتاج إلى قاعدة تستند عليها ويمكنها التواصل مع الحاسب بصورة مباشرة ولذلك تستخدم في إنشاء وبرمجة أنظمة التشغيل المختلفة والتطبيقات الضخمة ، وقد أنشأت اللغة في البداية في مختبرات شركة AT&T على أيدي أمهر المبرمجين لاستخدامها في بناء نظام التشغيل يونكس بدلاً من لغة الآلة البدائية ولكن مالبثت أن أصبحت المرتع الأساسي لمختلف البرمجيات وأنظمة التشغيل.

بعد ذلك أتت لغة C++ كتطوير للغة الأم حيث تحتوي على "مكتبات" ضخمة تساعد المبرمجين على إنشاء تطبيقات معقدة في أسرع وقت ، والجدير بالذكر أن هذه اللغة لاقت عناية خاصة من عملاق صناعة البرمجيات مايكروسوفت حيث تستخدمها الشركة في مختلف تطبيقاتها ومن ضمنها نظام التشغيل ويندوز وطقم سطح المكتب أوفس.

وبعد التطور الهائلة في صناعة البرمجيات وبعد طرح مايكوروسوفت لمنصة التطوير البرمجية دوت نت ولدت لغة C# تحت منصة الدوت النت مع المحافظة على قوتها وسرعتها لتكون بذلك الملجأ الأساسي لمختلف المبرمجين ( على حد زعم مايكروسوفت).


ما هو مفهوم بيئة عمل الـ Net Framework. - 

بيئة الدوت نيت هى الاساس القادم لتطوير تطبيقات تستطيع ربط نظم ومعلومات و اجهزه و مستخدمين فى إطار موحد و مخصص 

تقع منصة الدوت نيت فى نقاط اساسيه :

1- أدوات التطوير Developer Tools : الواجهه البرمجيه والادوات(لغات البرمجه) التى يستخدمها المطور لتصميم و إنشاء الحلول لبيئة الدوت نيت .... تدعم دوت نيت حوالى 24 لغه برمجه 
2- مجموعة من الخوادم Servers : السيرفرات التى تمثل البنية التحتيه لبناء وتطوير و تنفيذ الحلول لبيئة الدوت نيت مثل MS SQL Server او E-Commerce Server او BizTalk Server
3- خدمات الويب Xml Web Service : مجموعه من الخدمات المحدده للقيام بالعمليات الروتينيه و الوسائل التى تساعد المطور فى تطوير خدماته الخاصه
4- العملاء Clients : و المقصود بها الاجهزه التى تستخدم انظمة تشغيل مدمج معها إطار عمل الدوت نيت... هناك مشروع مونو لنقل الدوت نيت على اللينكس
5- خبرة المستخدمين User Experinece : البرمجيات التقليده والمدمجه مع خدمات الويب لتقدم كل ما يحتاجه المستخدم 

ربما تبدو هذه النقاط مقدمه نظريه لا فائده منها و لكنى تعلمت ان معرفة هيكلية (معمارية) بيئة العمل هامه جداً 
بيئة عمل الدوت نيت تقدم نموذج عمل بالبرمجه الكائنيه ( سنفهم معناها لاحقاً) و هو ما يضمن سلامة تنفيذ الكود باستخدام قواعد التحقق من الصحه وقت التنفيذ RunTime بمعنى انه لايمكن لبرنامجك ان يتخطى حدوده و يحاول الوصول إلى كائنات اخرى فى تطبيق اخر مالم يسمح له هذا التطبيق او ربما يحاول تطبيقك او ما سنسميه كائنك ان يقوم بعمليه لم تحددها له 

إطار عمل الدوت نيت Dot Net FrameWork 

إطار العمل هو بمثابة القلب النابض للدوت نيت و هو يحتوى على مكونين رئيسيين :
1- Common Langauge RunTime او (CLR)
2- DotNet Class Library 

1- Common Langauge RunTime او (CLR)
او ما يطلق عليه بيئة العمل المشتركه و هى البيئه التى يتم تنفيذ كل تطبيقات الدوت نيت فيها تقدم هذه البيئه الكثير للتطبيقات العامله بها 

البرامج التى يتم عمل 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 قد يعرض برنامج لعدم التوافقيه مع منصة العمل التى يجرى عليها تطبيقك 

ال Microsoft.VisualBasic يقوم بمهمتين رئيسيتين لمبرمجى الفيجوال بيسك دوت نيت
المهمه الاولى : تقدم وسائل المساعده التى تقوم بتحويل الكود إلى MSIL 
المهمه الثانيه : تقدم وصول مباشر للطرق و الثوابت التى تشبه تلك الموجوده فى الاجيال الاولى من الفيجوال بيسك 
و بالتالى فكما ترى ان هناك اعتماديه من مبرمجى فيجوال بيسك دوت نيت على هذا المجمع

مميزات بيئة عمل الدوت نيت 

هذه المزايا ساسردها من وجهة نظرى و لكن هناك العديد من المصادر التى تسهب فى هذا الجزء

1 - تكاملية بيئة الدوت نيت بما تحمله من دمج لنظام التشغيل و ادوات التطوير و السيرفرات المستخدمه 
حقيقة هذه احدى مزايا و عيوب مايكروسوفت فى نفس الوقت 

2 - لغة واحدة لجميع الاغراض 
الان يمكن فعلاً كتابة تطبيقات الويب و تطبيقات بيئة الخادم / العميل و التطبيقات المكتبية فى نفس الوقت بنفس اللغة بدون ان تحتاج شركتك لمبرمجين بلغات اخرى .... الم نواجه فى معظم الاحوال كمبرمجين الحاجة لاستخدام لغات اخرى لانشاء مشروعات ويب مثلاً فكنا نضطر لتعلم احدى اللغات مثل ASP او PHP او غيرها 
اما الان فيمكنك نقل خبرتك لاستخدام ASP.NET مباشرة باستخدام VB.NET او C# بدون الحاجة لتعلم لغات جديدة ( ترى هل سيوفر هذا على الشركات بدون الحاجة للحصول على مبرمجين جدد) 

3 - الامان Security 
كم من مرة واجهت فيها موقفاً يشبة الموقف التالى ..... قمت بتصميم برنامج يستخدمه مجموعة مختلفة من الاشخاص و انت تريد تحديد صلاحيات داخل برنامجك لكل مجموعة من الاشخاص 
قمت مرة بتخزين بيانات حساسة و اردت تشفيرها و لم تعرف كيف تقوم بذلك 
الان اصبح بالامكان استخدام Code Access Security و Evidence-based security و Role Based Security و Application Domain و استخدام التشفير Encryption بدون الحاجة للعديد من الاكواد المعقدة فى معظم الاحيان حيث توفر بيئة الدوت نيت العديد من الفئات داخل فضاءات الاسماء System.Security 
صفحات ال ASP.NET و العديد من الانماط لحماية المحتوى 

4 - السرعة فى ASP.NET 
تختلف ASP.NET عن سابقتها ASP فى كونها Compiled و ليست Interpreted هذا بالاضافة لامكانية استخدام ال Caching لصفحات معينة كما يمكن تحديد فترة زمنية لهذا التخزيم مما يزيد من كفائتها 

5 - انشاء خدمات ويب Web Services 
لا شك ان خدمات الويب اصبحت تلعب دوراً هاماً الان فى ال Business Logic و ال Code Reuse فركزت عليها مايكروسوفت فى بيئة الدوت نيت و اصبح بالامكان برمجة او استخدام خدمات الويب مباشرة من داخل تطبيقك 

6 - برمجة تطبيقات الاجهزة الذكية Mobile & Smart Applications 
ميزة جديدة مع الدوت نيت و إن كانت غير منتشرة مع انتشار تطبيقات جافا فى الاسواق ... ما زلنا ننتظر الجديد من مايكروسوفت لهذه السوق الجديدة
العديد من المميزات التى ربما لم اتطرق إليها هنا و لكن يمكن البحث عنها فى الانترنت ...... بيئة الدوت نيت رائعه و مليئة بالمزايا مهما كانت لغة برمجتك المفضلة لربما احببت ان تلقى نظرة للدوت نيت 

ماهو الفرق بين الـ C والـ C#؟

رغم أن لغة C هي الأصل، وتفتقر لميزة إنشاء المكونات أو العناصر أو ما يسمى بالإنجليزية objects، وتبرمج بها أنظمة التشغيل والبرامج بشكل عام، لكن افتقارها لميزة إنشاء العناصر يجعل برمجة بعض التطبيقات شيء صعب، لذلك تم إنشاء C++ التي وهي لغة قوية وتصلح لإنشاء تطبيقات كبيرة، ثم جائت مايكروسوفت بلغة C#، وأرادت بذلك الجمع بين سهولة VB وقوة C واللغة قوية فعلاً ومرنة، وتم تبنيها في لينكس أيضاً من خلال مشروع mono.

جميع اللغات السابقة تتشابه في طريقة كتابة الأوامر إلى حد كبير، ومن لديه معرفة بلغة php وجافاسكربت سيجد قواسم مشتركة في أسلوب كتابة الأوامر بين كل هذه اللغات، والأصل C. 


وتعتبر أفضل لغة تتعامل مع الدوت نت تستفيد من قدراتها كاملة و قد أصدر في أواخر العام 2005 الإصدار الثاني من اللغة C#2 

لتحميل الدروس
 



تعليقات

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