C#-ın çalışma mühiti (runtime environment) ilə, yəni .Net Framework ilə özəl bir əlaqəsi vardır. Bu əlaqənin olmasına iki səbəbi göstərmək olar:
- C# Microsoft tərəfindən .Net Framework üçün kod inkişaf etdirmək məqsədi ilə yaradılmışdır.
- C# tərəfindən istifadə olunan kitabxanalar, .Net Framework tərəfindən təyin edilmiş kitabxanalardır.
Kitabxana (Library) — Hazır kompanentlərin və kod parçalarının saxlanıldığı yerlərdir. Məsələn BCL(Base Class Library) bu kitabxana tətbiqlər yaratmaq üçün lazım olan təməl sinifləri tərkibində saxlayar. Hazır komponentləri istifadə edərək kodlarınızı daha sürətli yaza bilərsiniz.
Common Language Runtime (CLR — Ortaq dil çalışma zamanı) .Net Framework üçün yazılan proqramların çalışmasını idarə edən sistemdir. Yazılan proqramlar proqramlaşdırma dillərindən C#, VB.NET, Digər .Net dillərilə (Other .Net Language) ola bilər. Bu kodlar birbasa maşın dilinə çevrilmir . Yazdığımız kodlar ilk öncə Microsoft İntermediate Language (MSIL-Microsoft Ara dili) olaraq adlandırılan aralıq dilinə(Assembly) çevrilir. Proqram çalışdığında Ara kodu(yəni MSIL — i) icra olunan(executable) bir koda çevirmək CLR — in işidir. CLR yüklü olan sistemlərdə proqram icra olunduqda avtomatik olaraq JIT(Just In Time- Tam vaxdında) kompilyatoru işləyərək kodları maşın dilinə .exe və ya .dll — ə çevrilib icra edir.
MSIL(Microsoft İntermediate Language ) — ə əlavə olaraq əldə edilən digər bir şeydə Metadata’dır. Metadata proqramımız tərəfindən istifadə edilən məlumatları təsvir edir. Metadata MSIL ilə eyni faylda yer alır.
Common Language Specification(CLS) və Common Type System (CTS).
Fərqli proqramlaşdırma dillərində yazılan proqramlar, redaktə olunmadan eyni bir mühitdə işləməsi üçün bəzi standartlara cavab verməlidir. Məsələn, böyük bir proyekt hazırladığımız zaman proyektin interfeys hissəsini C# -da, sistematik hissəsini C++ -da yazıb sonra bu hissələri birləşdirərək, yekun nəticəni ortaya çıxarmaq istəyirik. Bu zaman hissələri birləşdirmək üçün, C# -ın da, C++ -ın da eyni bir standarta cavab verməsi lazımdır. Bu standartlar daxildir: Common Language Specification(CLS- Ortaq Dil Xüsusiyyətləri) və Common Type System (CTS-Ortak Tip Sistemi).
Common Type System (CTS) — in məqsədi, .NET uyumlu dillərdə ortaq tip sistemini təmin etməkdir. Bu o deməkdir ki, məsələn, int tipi C# — da da, C++ -da da, VB.Net-də də eyni keyfiyyətlərə malik olsun, yəni bu dillər üçün int tipi yaddaşda 4 bayt yer ayırsın, tam ədədləri özündə saxlasın və s. Nə olsun ki, tam tip C# — da “int” açar sözü ilə, VB.Net— də “integer” açar sözü ilə təyin olunur? Əslində hamısı CTS — in bir parçası olan System.Int32 sinfindən törəmədirlər.
CLS (Ortaq Dil Xüsusiyyətləri) isə .NET uyumlu dillərin öz şəxsi kompilyatoru ilə kompilyasiya olunduqdan sonra, eyni bir dilə çevrilməsini təmin etməkdir. Bu dilə Aralıq Dil (MSIL — Microsoft Intermediate Language) deyilir. Beləliklə Bu dillərdə yazılan kodlar eyni bir MSIL kodla və nəticədə də eyni bir işləmə mühərriki (CLR — Common Language Runtime) vasitəsi ilə *.EXE — ə çevrilib icra olunur.
Nəzarət altına alınan və alınmayan kodlar
Bir C# proqramı yazdığımızda nəzarət altına alınan kod(managed code) yazmış oluruq. Nəzarət altına alınan kod, Common Language Runtime (CLR) ilə icra olunan koddur. Managed code CLR — ilə icra olunduğu üçün, müəyyən məhdudiyyətləri və avantajlarıda vardır. Məhdudiyyətləri: Kompilyator bir MSIL faylı yaratmalıdır(C# bunu gerçəkləşdirir) və .Net Framework kitabxanalarını istifadə etməlidir(C# bunuda gerçəkləşdirir). Nəzarət altına alınan kodların avantajları çoxdur: Müasir yaddaşdan istifadə, təhlükəsizlik və s.
Nəzarət altına alınmayan kod (unmanaged code) CLR ilə işləməz yəni .NET Framework’ün təkmilləşdirilməsindən əvvəl olan windows proqramlarının hamısı unmanaged code-ilə işləmişdir. Nəzarət altına alınan və alınmayan kodların bir arada çalışması mümkündür. Belə ki, C#-ın nəzarət altına alınan kod hissəsinin olması, öncədən mövcud olan proqramlarla birlikdə işləməsini məhdudlaşdırmaz.
Məqalənin davamını gələn məqaləmizdə oxuya bilərsiz. Əgər Kodera`nın sizin üçün faydalı olduğunu düşünürsünüzsə məqalələrimizi paylaşmağı və əl çalmağı unutmayın. Daha çox öyrənək, daha çox öyrədək…