پایان نامه مقطع کاردانی
رشته کامپیوتر
سال 1387
چارچوب .NET
چارچوب .NET چيست ؟
چارچوب .NET چگونه كار مي كند وچه چيزي باعث شده است كه به يك فريم ورك پر طرفدار تبديل شود ؟
با زبان C# چه برنامه هايي را مي توان نوشت ؟
چارچوب .NET چيست ؟
درتعريف .NET مي توانيم بگوييم كه : " چارچوب .NET يك پلتفرم جديد است كه توسط مايكروسافت براي طراحي و توسعه نرم افزار ايجاد شده است ."
نكته جالبي كه در اين تعريف وجود دارد ابهام زيادي است كه در اين تعريف به كار برده ام اما براي اين كار دليلخوبي وجود دارد . براي شروع، توجه كنيد كه در اين تعريف نگفته ام " طراحي و توسعه نرم افزار براي سيستمعامل ويندوز . " اگر چه مايكروسافت چارچوب .NET را براي اجرا روي سيستم عامل ويندوز منتشر كرده است، به زودي نسخه هاي ديگري از اين چارچوب را مشاهده خواهيد كرد كه بر روي سيستم عامل هاي ويندوز منتشركرده است ، به زودي نسخه هاي ديگري از اين چارچوب را مشاهده خواهيد كرد كه بر روي سيستم عامل هايديگر مانند لينوكس نيز اجرا مي شوند . يكي از اين نسخه ها مونو است. مونو يك نسخه متن باز از چارچوب .NET است(كه شامل كامپايلر C# نيز هست) كه براي سيستم عامل هاي گوناگوني مانند نسخه هاي مختلف لينوكس و مكينتاش منتشر شده است به علاوه ميتوانيد با استفاده از نسخه فشرده اينچارچوب به نام Microsoft .NET Compact Framework كه زير مجموعه اي از چارچوب .NET است . اگر به تعريفيكه در بالا براي چارچوب .NET آورده شده است مشاهده مي كنيد كه اين تعريف محدود به نوع خاصي از برنامه ها نيست . در حقيقت در مورد نوع برنامه هايي كه مي توان با .NET نوشت هيچ محدوديتي وجود ندارد كه بخواهيم آنرا ذكر كنيم از چارچوب .NET مي توانيد براي طراحي برنامه هاي تحت ويندوز برنامه هاي تحت وب ،سرويسهاي مبتني بر وب و ... استفاده كنيد .
چارچوب .NET يك چارچوب كلي است و محدود به زبان برنامه نويسي خاصي نيست. شما ميتوانيد برنامهخودتان را به هر زباني كه بخواهيد بنويسيد
چارچوب .NET از چه اجزايي تشكيل شده است ؟يكي از اجزاي اصلي چارچوب .NET كتابخانه كلاس عظيم آن است كه مي توانيد از آن در برنامه هاي خود استفاده كنيد كتابخانه كلاس يك مجموعه از توابع وكلاسها است كه براي انجام امور مختلف مورد استفاده قرار مي گيرد . براي مثال يك كتابخانه كلاس ، شامل توابعي براي كنترل ورودي و خروجي ، استفاده از امكانات چاپ ،كار با انواع مختلف شبكه و ... است . اين توابع وكلاسها كه با استفاده از تكنيكهاي برنامه نويسي شئ گرا نوشته شده اند ، در .NET به گروهها يا فضاي نامهاي مختلفي دسته بندي مي شوند .
در نوشتن يك برنامه مي توانيد هر كدام از فضاي نامها را كه نياز داشتيد به برنامه اضافه كنيد براي مثال يكي از اين فضاي نامها براي برنامه نويسي تحت ويندوز بكار مي رود ،يكي ديگر براي برنامه نويسي شبكه مورد استفاده قرار مي گيرد فضاي نام ديگري براي برنامه نويسي تحت وب به كار مي رود . بعضي از اين فضاي نامها خود به فضاي نامهاي كوچكتري تقسيم مي شوند كه براي كار برد خاصي در آن قسمت استفاده مي شود. براي مثال فضاي نام برنامه نويسي تحت وب شامل يك فضاي نام كوچكتر است كه براي نوشتن سرويسهاي تحت وب بكار مي رود .بايد توجه داشته باشيد كه تمام سيستم عامل ها،همه توابع موجود در اين فضاي نامها را پشتيباني نمي كنند. براي مثال يك دستيار ديجيتال شخصي از توابع اصلي چارچوب .NET پشتيباني مي كند ، اما يك سري از توابع كه در اين وسايل كاربردي ندارند به وسيله آنها پشتيباني نمي شود .
بخش ديگري از چارچوب .NET يك سري نوع هاي داده هاي ابتدايي را تعريف مي كند . نوع هاي داده اي براي نگهداري اطلاعات يك برنامه در طول اجراي آن مورد استفاده قرار مي گيرند.نوع هاي داده هاي كه در اين قسمت از .NET تعريف مي شوند به صورت بسيار پايه اي هستند (مانند "عدد صحيح علامتدار 32 بيتي ") . نوع هاي داده اي پيشرفته تري كه در زبانهاي برنامه نويسي مبتني .NET مانند C# و يا ويژوال بيسيك وجود دارند بايد بر اساس يكي از اين نوع هاي داده اي تعريف شده در اين قسمت از چارچوب .NET باشند . اين مورد باعث هماهنگي بين زبانهاي برنامه نويسي مي شود كه از چارچوب .NET استفاده مي كنند . اين قسمت از چارچوب .NET ، سيستم نوع داده اي عمومي و يا به اختصار CTS ناميده مي شود .
علاوه بر كتابخانه كلاسي كه ذكر شد چارچوب .NET شامل بخشي به نام زبان عمومي زمان اجرا و يا به اختصار CLR است.اين بخش از چارچوب .NET (كه مهمترين بخش آن نيز محسوب مي شود)مسئول كنترل ومديريت اجراي تمام برنامه هايي است كه با استفاده از كتابخانه كلاس نوشته شده اند .
JIT , MSIL :
هنگامي كه برنامه اي كه در آن از توابع موجود در كتابخانه كلاس .NET استفاده شده است را كامپايل مي كنيد ، بلافاصله كد قابل فهم براي سيستم عامل و يا كد محلي توليد نمي شود . در عوض كد شما به زباني به نام زبان سطح مياني مايكروسافت و يا به اختصار MSIL تبديل مي شود . اين كد براي سيستم عامل خاصي نيست و همچنين منحصر به زبان C# نيز نيست . به عبارت ديگر كد زبانهاي ديگر نيز مي تواند به MSIL تبديل شود .
كدهاي زبانهاي ديگر كه از چارچوب .NET استفاده مي كنند نيز (مانند ويژوال بيسيك)هنگام كامپايل ابتدا به زبان MSILتبديل مي شوند . هنگام استفاده از ويژوال استوديو براي نوشتن برنامه ، اين مرحله از كامپايل توسط ويژوال استوديو انجام مي شود. اما براي اجراي يك برنامه توسط سيستم عامل يك مرحله ديگر نيز مورد نياز است . اين مرحله وظيفه كامپايلر Just – in – Time يا به اختصار JIT كامپايلر است . اين كامپايلر كد MSIL يك برنامه را دريافت كرده و آن را به كدي تبديل مي كند كه بوسيله سيستم عامل قابل اجرا باشد . بعد از اينكه تبديل توسط JIT انجام شد سيستم عامل مي تواند برنامه را اجرا كند .همانطور كه از اسم اين قسمت نيز مشخص است (Just – in – Time)كدهاي زبان MSIL فقط هنگامي به زبان محلي قابل فهم براي سيستم عامل تبديل مي شوند كه بخواهند اجرا شوند. در گذشته براي اينكه بتوانيد برنامه خود را بر روي سيستم عامل هاي مختلف اجرا كنيد نياز داشتيد كه براي هر يك از نسخه هاي سيستم عامل ، آن كد را يك مرتبه به طور كامل كامپايل كنيد . اما در چارچوب .NET نيازي به اين كار نيست . زيرا براي هر نوع پردازنده و نيز هر نوع سيستم عامل يك نسخه از JIT وجود دارد . برنامه شما در هر سيستم عاملي كه اجرا شود ، كامپايلر JIT موجود در آن سيستم عامل ، كد MSIL برنامه شما را كه مستقل از سيستم عامل و نوع پردازنده است دريافت كرده و كد محلي مناسبي توليد مي كنند كه براي سيستم عامل قابل فهم باشد .
فايده استفاده از اين روش در اين است كه وظيفه برنامه نويس به شدت كاهش مي دهد . در حقيقت مي توان گفت كه به عنوان برنامه نويس ، هنگام نوشتن كد مي توانيد سيستم عاملي كه قرار است برنامه روي آن اجرا شود را فراموش كرده و فكر خود را بر روي كد و منطق برنامه متمركز كنيد .
كدهاي مديريت شده :
همانطور كه گفتم برنامه ي شما هنگام كامپايل ابتدا به كد MSIL تبديل مي شود ، سپس اين كد قبل از اجرا بوسيله JIT به كد محلي تبديل شده و كد محلي بوسيله سيستم عامل اجرا مي شود . تمام اين قسمتها بخشي از وظايف CLR است ، اما وظايف CLR به اين موارد ختم نمي شود . برنامه اي كه بوسيله .NET نوشته شده است
در طول زمان اجرا توسط CLR مديريت مي شود . به عبارت ديگر در طول اجراي برنامه هاي نوشته شده با .NET ، CLR مسئول كنترل امنيت آنها ، مديريت حافظه برنامه ها ، كنترل بخشهاي خطا يابي در برنامه ها و... است . به همين دليل به برنامه هاي كه با .NET نوشته شده اند ، برنامه هاي مديريت شده مي گويند . در مقابل برنامه هاي تحت كنترل CLR اجرا نمي شوند به برنامه هاي مديريت نشده معروف هستند و زبانهاي مشخصي مانند C++ مي توانند چنين برنامه هاي را توليد كنند . از كدهاي مديريت نشده بيشتر در مواقعي استفادهمي شود كه قابليت استفاده از كدهاي مديريت شده نباشند ، همانند فراخواني توابع سطح پايين سيستم عامل .
البته با استفاده از زبان C# نمي توان كدهاي مديريت نشده توليد كرد و تمام كدهاي توليد شده به وسيله كامپايلر C# تحت كنترل CLR اجرا مي شوند .
مديريت حافظه در .NET : يكي از مهمترين ويژه گيهاي كدهاي مديريت شده بخش مديريت حافظه در اين نو ع كدها است كه بوسيله سيستمي به نام Garbage Collection و يا به اختصار GC انجام مي شود . چارچوب .NET با استفاده از اين سيستم مي تواند اطمينان حاصل كند كه حافظه اي كه به يك برنامه اختصاص داده مي شود ، با پايان برنامه بطور كامل بازيابي مي شود . در زبانهاي برنامه نويسي قبل از .NET اين مورد بوسيله برنامه نويس كنترل مي شد و امكان داشت كه با يك اشتباه كوچك در كد برنامه، مقدار زيادي از فضاي غير قابل استفاده بماند و برنامه با كمبود حافظه مواجه شود . اين گونه مشكلات باعث كاهش سرعت برنامه ها و حتي در بعضي شرايط باعث توقف سيستم مي شد . نحوه كار GC در .NET به اين صورت است كه در زمانهاي مشخصي به بررسي حافظه مي پردازد و داده هايي را كه ديگر استفاده نمي شوند از حافظه پاك مي كند . البته بررسي حافظه توسط GC در فاصله زماني ثابت صورت نمي گيرد بلكه ممكن است در شرايطي در هر ثانيه چندين هزار بار اجرا شود و در شرايط ديگر در هر چند ثانيه يك بار اجرا مي شود.