logo

.NET Common Language Runtime (CLR)

.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ā.

Net Common Language Runtime

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
Net Common Language Runtime

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.

    Vērtības veids:Vērtības veids saglabā datus atmiņā, kas piešķirti stekā vai iekļauti struktūrā. Šī tipa kategorija satur datu direktoriju. Ja viena mainīgā vērtība tiek kopēta uz citu, abi mainīgie datus uzglabā neatkarīgi. Tam var būt iebūvēti, lietotāja definēti vai uzskaitījumu veidi. Iebūvētie veidi ir primitīvi datu tipi, piemēram, skaitļi, Būla, char un datums. Lietotāji avota kodā izveido lietotāja definētus veidus. Uzskaitījums attiecas uz uzskaitīto vērtību kopu, kas attēlotas ar etiķetēm, bet saglabātas kā ciparu veids.
    Net Common Language Runtime Atsauces veids:Atsauces veids saglabā atsauci uz atmiņas adreses vērtību un tiek piešķirts kaudzē. Kaudzes atmiņa tiek izmantota dinamiskai atmiņas piešķiršanai. Atsauces veids tieši nesatur faktiskos datus, bet satur datu adresi. Ikreiz, kad tiek izveidots atsauces tipa objekts, tas kopē adresi, nevis faktiskos datus. Tāpēc divi mainīgie attieksies uz tiem pašiem datiem. Ja tiek mainīti viena Atsauces tipa objekta dati, tas pats tiek atspoguļots arī otram objektam. Atsauces veidi var būt pašizrakstoši tipi, rādītāju veidi vai traucējumu veidi. Pašaprakstošie veidi var būt virkņu, masīvu un klašu veidi, kas glabā metadatus par sevi.

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ā:

Net Common Language Runtime

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 Common Language Runtime

.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.

Net Common Language Runtime

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ā.