C#.NET

محیط کاری .NET  ( IDE ) :

به محیط توسعه C# گویند که خلاصه شده Integrated Development Environment است . این محیط کاری اعمال زیر را انجام می دهد .

1- فراهم کردن محیط برنامه نویسی شی گرا

2- فراهم کردن محیط اجرای کد که برخورد های استقرار و نسخه های مختلف نرم افزار را به حداقل می رساند .

3- فراهم کردن محیط اجرای کد ، که کد را به طور امن اجرا می نماید .

4- سازگار نمودن توسعه دهندگان در انواع مختلفی از کاربردها ، مثل کاربردهای تحت ویندوز و تحت وب .

محیط کاری .NET دو قطعه اصلی دارد .

1- زبان مشترک زمان اجرا ( CLR )

2- کتابخانه کلاس محیط کاری ( FCL )

 

CLR :

CLR اجرای برنامه های کاربردی .NET را اداره کرده سرویس های ضروری زمان اجرا را برای این کاربردها فراهم می کند وقتی CLR فراخوانی می شود عملیات مورد نیاز برای کامپایل ، تخصیص حافظه و مدیریت کد برنامه کاربردی فراخوان را فراهم می­کند. درواقع CLR مسئول کنترل و مدیریت اجرای تمام برنامه هایی است که با استفاده از کتابخانه کلاس .NET نوشته شده­اند. وظیفه ی CLR ، مدیریت حافظه ، Garbage Collection و Exception Handling است .

FCL :

کلکسیونی از کلاس ها و انواع داده دیگر ( نوع شمارشی ، ساختارها ، واسط ها ) است که برای تمام کدهای مدیریت شده­ی نوشته شده در هر زبانی با کد هدف CLR در دسترس هستند. این کتابخانه ها مختص کامپایلرهای خاصی نیستند. به عنوان یک توسعه دهنده شما می توانید با انواع داده موجود در کتابخانه ها آشنا شوید.  منابع به وسیله FCL از طریق گروه بندی های منطقی به نام فضای نام ( Namespace ) سازماندهی می شوند. این گروه بندی ها بر اساس محدوده عملکرد می باشد. FCL صدها اسمبلی DLL را در برمی گیرد. هر اسمبلی ممکن است چند فضای نام را شامل شود به علاوه ممکن است یک فضای نام چندین اسمبلی را به هم ببافد. برای ارئه این مطلب به داخل یک اسمبلی FCL نگاه کنید. شکل زیر بخشی از خروجی تولید شده با برنامه ILdasm.exe جهت کنترل محتوای اسمبلی mscorlib را نمایش می دهد.

Native Code :

یک برنامه که به زبان C# نوشته شده است قبل از اجرا باید به کدی تبدیل شود که برای سیستم عامل قابل فهم باشد به این کد ، کد محلی ( Native Code ) گویند تبدیل یک کد از هر زبانی به کد محلی که برای سیستم عامل قابل فهم باشد را کامپایل گویند .

زبان میانی میکروسافت ( MSIL یا IL ) :

CLR بر روی نمایش میانی کد اصلی که به یکی از زبان های .NET نوشته شده است ، عمل می کند این کد که MSIL نام دارد در فایلی به نام managed module قرار دارد . این زبان فرمتی مشابه با کد اسمبلی دارد اما مستقل از CPU یا محیط مقصد است . هنگامی که برنامه ای که در آن از توابع موجود در کتابخانه .NET استفاده شده است را کامپایل می کنید به زبان MSIL تبدیل می شود هنگام استفاده از Visual Studio برای نوشتن برنامه ، این مرحله از کامپایل توسط Visual Studio انجام می شود . هنگامی که یک برنامه را کامپایل می کنید ، کد MSIL تولید شده در فایل هایی به نام اسمبلی ذخیره می شوند .

کامپایلر Just-In-Time ( JIT ) :

کامپایلری است که کد MSIL را به Native Code کامپایل می کند .

فایل های اسمبلی :

این فایل ها می توانند شامل برنامه هایی باشند که بدون نیاز به برنامه ای دیگر بتوانند بر روی سیستم عامل اجرا شوند ( این گونه فایل ها دارای پسوند .exe هستند ) و یا شامل کتابخانه هایی از کلاس ها و توابع برای استفاده در دیگر برنامه ها باشند ( این گونه فایل ها دارای پسوند .dll هستند ) . فایل های اسمبلی علاوه بر کدهای MSIL ، شامل Metadata ( اطلاعاتی راجع به اطلاعات ذخیره شده در فایل اسمبلی ) و همچنین منابع اختیاری ( اطلاعات اضافی که به وسیله کدهای MSIL استفاده می شوند ، همانند فایل های صوتی و یا تصویری ) نیز هستند . Metadata باعث می شود که یک فایل اسمبلی بتواند اطلاعات داخل خود را به طور کامل توصیف کند .

مرحل اجرای برنامه در .NET :

نوشتن کد برنامه به زبان C# Å کامپایل شدن Å فایل اسمبلی Å کامپایل شدن با JIT Å کد محلی Å کنترل اجرای برنامه تحت CLR

Global Assembly Cache ( GAC ) :

در چاچوب .NET شما می توانید یک فایل DLL را یک بار نوشته و در برنامه های دیگر استفاده کنید این امکان برای فایل های اسمبلی عمومی یا GAC به گونه ای است که شما می توانید این فایل ها را در پوشه مشخص شده برای GAC کپی کنید زیرا برنامه ها می­توانند علاوه بر اسمبلی های خود به همه اسمبلی های موجود در این پوشه نیز دسترسی داشته باشند . این فولدر در XP در مسیر C:\WINDOWS\assembly و در windows 2000 در آدرس C:\ WinNT\Asswmbly قرار دارد .اما برای قرار دادن یک کتابخانه ی کلاس در این قسمت نباید آن را همانند فایل های عادی در این فولدر کپی کرد بلکه باید از ابزار خاصی به نام gacutil استفاده کرد که در Class Library مورد بررسی قرار می گیرد .

Heap :

فضای آزاد حافظه را گویند .

مزایای garbage collection :

1- تضمین می کند که کلیه اشیا از بین می روند و حافظه تخصیص یافته به آن ها به پشته بر می گردد . به عنوان مثال هنگامی که یک برنامه خاتمه می یابد garbage collection تمام اشیا را از بین می برد .

2- هر شیء زمانی که هیچ مرجعی به آن اشاره نکند از بین خواهد رفت .

3- هر شیء فقط یک بار از بین می رود .

در داخل RAM دو ساختار به نام stack و heap وجود دارد وقتی یک شیء به یک کلاس نسبت داده می شود ( car c; ) آن شیء در داخل stack قرار می گیرد و زمانی که به شیء حافظه اختصاص داده می شود ( c = new car(); ) محلی در heap برای شیء در نظر گرفته می شود و از داخل stack به آن محل اشاره می شود  حال اگر از stack هیچ لینکی به شیء داخل heap نباشد garbage collection آن شیء را از بین می برد .

/ 0 نظر / 18 بازدید