.NET CLR ir izpildlaika vide, kas pārvalda un izpilda kodu, kas rakstīts jebkurā .NET programmēšanas valodā. CLR ir .NET ietvara virtuālās mašīnas komponents. Šīs valodas kompilators apkopo to lietojumprogrammu pirmkodu, kas izstrādātas, izmantojot .NET saderīgas valodas, CLR starpvalodā, ko sauc par MSIL, t.i., Microsoft starpvalodas kodā. Šis kods ir neatkarīgs no platformas. Tas ir salīdzināms ar baitu kodu Java. Metadati tiek ģenerēti arī kompilācijas un MSIL koda laikā un saglabāti failā, kas pazīstams kā manifesta fails. Šie metadati parasti attiecas uz dalībniekiem un veidiem, kas nepieciešami CLR, lai izpildītu MSIL kodu. CLR kompilatora komponents tieši laikā pārveido MSIL kodu par iekārtas vietējo kodu. Šis kods ir atkarīgs no platformas. CLR pārvalda atmiņu, pavedienus, izņēmumus, koda izpildi, koda drošību, verifikāciju un apkopošanu.
režģa izkārtojums
Nākamajā attēlā parādīta avota koda pārvēršana vietējā kodā.
Iepriekš minētais skaitlis pārvērš kodu vietējā kodā, ko CPU var izpildīt.
Galvenās CLR sastāvdaļas ir:
- Kopējā tipa sistēma
- Kopējā valodu specifikācija
- Atkritumu savācējs
- Just in Time Compiler
- Metadati un komplekti
1. Kopējā tipa sistēma:
CTS sniedz vadlīnijas datu tipu deklarēšanai, lietošanai un pārvaldīšanai izpildlaikā. Tā piedāvā starpvalodu saziņu. Piemēram, VB.NET ir veselu skaitļu datu tips, un C# ir int datu tips veselu skaitļu pārvaldībai. Pēc kompilācijas Int32 izmanto abi datu tipi. Tātad, CTS nodrošina datu tipus, izmantojot pārvaldīto kodu. Kopējā tipa sistēma palīdz rakstīt no valodas neatkarīgu kodu.
Tas nodrošina divas tipu kategorijas.
2. Vispārējās valodas specifikācija (CLS):
Common Language Specification (CLS) satur noteikumu kopumu, kas jāievēro visām NET atbalstītajām valodām. Kopējie noteikumi atvieglo valodas integrācijas ieviešanu un palīdz pārmantot vairākas valodas un atkļūdot. Katrai valodai, ko atbalsta NET Framework, ir savi sintakses noteikumi. Taču CLS nodrošina sadarbspēju starp lietojumprogrammām, kas izstrādātas, izmantojot NET valodas.
3. Atkritumu savākšana:
Atkritumu savācējs ir CLR sastāvdaļa, kas darbojas kā automātisks atmiņas pārvaldnieks. Tas palīdz pārvaldīt atmiņu, automātiski piešķirot atmiņu atbilstoši prasībām. Tas objektiem piešķir kaudzes atmiņu. Kad objekti netiek izmantoti, tas atgūst tiem piešķirto atmiņu turpmākai izmantošanai. Tas nodrošina arī objektu drošību, neļaujot vienam objektam izmantot cita objekta saturu.
4. Tieši laikā (JIT) kompilators:
JIT kompilators ir svarīga CLR sastāvdaļa. Tas pārvērš MSIL kodu vietējā kodā (t.i., mašīnai raksturīgā kodā). .NET programma tiek kompilēta tieši vai netieši. Izstrādātājs vai programmētājs izsauc konkrētu kompilatoru, lai kompilētu programmu tiešā kompilācijā. Netiešā kompilācijā programma tiek kompilēta divas reizes. Pirmā kompilācijas procesa laikā pirmkods tiek apkopots Microsoft Intermediate Language (MSIL). Otrajā kompilācijas procesā MSIL kods tiek pārveidots par vietējo kodu. Šo procesu sauc par JIT kompilāciju. Ir trīs JIT kompilatoru veidi - Pre, Econo un Normal. Pre JIT Compiler pirms izpildes apkopo visu MSIL kodu vietējā kodā. Econo JIT Compiler apkopo tikai tās MSIL koda daļas, kas nepieciešamas izpildes laikā, un noņem tās daļas, kuras vairs nav vajadzīgas. Parastais JIT kompilators arī apkopo tikai tās MSIL koda daļas, kas nepieciešamas izpildes laikā, bet ievieto tās kešatmiņā turpmākai lietošanai. Tam nav nepieciešama jau izmantoto daļu atkārtota kompilācija, jo tās ir ievietotas kešatmiņā.
5. Metadati:
Metadati ir bināra informācija par programmu, kas tiek saglabāta CLR Portable Executable failā (PE) kopā ar MSIL kodu vai atmiņā. MSIL izpildes laikā arī metadati tiek ielādēti atmiņā, lai pareizi interpretētu klases un saistītos. Kodā izmantotā informācija. Tātad metadati palīdz ieviest kodu valodai neitrāli vai panākt valodu sadarbspēju.
6. Montāžas:
Montāža ir fiziskā kodu grupēšanas pamatvienība. Tas sastāv no montāžas manifesta, metadatiem, MSIL koda un tādu resursu kopas kā attēlu faili. To uzskata arī par pamata izvietošanas vienību, versiju kontroli, atkārtotu izmantošanu, drošības atļaujām utt.
.NET CLR funkcijas
Tālāk ir norādītas CLR funkcijas.
- Tas pārvērš programmu vietējā kodā.
- Rokturi Izņēmumi
- Nodrošina tipa drošību
- Atmiņas pārvaldība
- Nodrošina drošību
- Uzlabota veiktspēja
- Neatkarīga no valodas
- Platformas neatkarīga
- Atkritumu kolekcija
- Nodrošina tādas valodas funkcijas kā mantošana, saskarnes un pārslodze objektorientētām programmām.
Kods, kas darbojas ar CLR, tiek saukts par pārvaldītu kodu, savukārt kods ārpus CLR tiek saukts par nepārvaldītu kodu. CLR nodrošina arī sadarbspējas slāni, kas ļauj sadarboties gan pārvaldītajiem, gan nepārvaldītajiem kodiem.
1. Pārvaldīts kods:
Jebkura valoda, kas ir rakstīta .NET ietvarā, ir pārvaldīts kods. Pārvaldītais kods izmanto CLR, kas rūpējas par jūsu lietojumprogrammām, pārvaldot atmiņu, apstrādājot drošību, ļaujot atkļūdot vairākas valodas utt. Pārvaldītā koda process ir parādīts attēlā:
2. Nepārvaldīts kods:
Kods, kas izstrādāts ārpus .NET ietvara, ir zināms kā nepārvaldīts kods. Lietojumprogrammas, kuras nedarbojas CLR kontrolē, tiek uzskatītas par nepārvaldītām. Dažas valodas, piemēram, C++, var izmantot šādu lietojumprogrammu rakstīšanai, piemēram, operētājsistēmas zema līmeņa piekļuves funkcijas. Fona saderība ar VB, ASP un COM ir nepārvaldīta koda piemēri. Šis kods tiek izpildīts ar iesaiņojuma klašu palīdzību. Nepārvaldīta koda process ir parādīts zemāk:
.NET CLR versijas
CLR laiku pa laikam atjaunina sevi, lai nodrošinātu labāku veiktspēju.
.NET versija | CLR versija |
---|---|
1.0 | 1.0 |
1.1 | 1.1 |
2.0 | 2.0 |
3.0 | 2.0 |
3.5 | 2.0 |
4 | 4 |
4.5 | 4 |
4.6 | 4 |
4.6 | 4 |
.NET CLR struktūra
Tālāk ir norādīta Common Language Runtime komponentu struktūra.
Pamatklases bibliotēkas atbalsts
Tā ir klašu bibliotēka, kas atbalsta klases .NET lietojumprogrammai.
Pavedienu atbalsts
Tas pārvalda vairāku pavedienu lietojumprogrammas paralēlu izpildi.
COM Marshaler
Tas nodrošina saziņu starp COM objektiem un lietojumprogrammu.
Drošības dzinējs
Tas ievieš drošības ierobežojumus.
Atkļūdošanas dzinējs
Tas ļauj atkļūdot dažāda veida lietojumprogrammas.
Tipa pārbaudītājs
Tā pārbauda lietojumprogrammā izmantotos tipus un pārbauda, vai tie atbilst CLR nodrošinātajiem standartiem.
Kodu pārvaldnieks
Tas pārvalda kodu izpildes laikā.
Atkritumu savācējs
Tas atbrīvo neizmantoto atmiņu un piešķir to jaunai lietojumprogrammai.
Izņēmumu apstrādātājs
Tas apstrādā izņēmumu izpildlaikā, lai izvairītos no lietojumprogrammas kļūmēm.
Classloader
To izmanto, lai ielādētu visas klases izpildes laikā.