logo

.NET Common Language Runtime (CLR)

.NET CLR je izvajalno okolje, ki upravlja in izvaja kodo, napisano v katerem koli programskem jeziku .NET. CLR je komponenta navideznega stroja ogrodja .NET. Prevajalnik tega jezika prevede izvorno kodo aplikacij, razvitih z uporabo jezikov, združljivih z .NET, v vmesni jezik CLR, imenovan MSIL, tj. Microsoftovo vmesno jezikovno kodo. Ta koda je neodvisna od platforme. Primerljiva je z bajtno kodo v Javi. Metapodatki so ustvarjeni tudi med prevajanjem in kodo MSIL ter shranjeni v datoteki, imenovani datoteka manifesta. Ti metapodatki se na splošno nanašajo na člane in vrste, ki jih zahteva CLR za izvajanje kode MSIL. Komponenta pravočasnega prevajalnika CLR pretvori kodo MSIL v izvorno kodo stroja. Ta koda je odvisna od platforme. CLR upravlja pomnilnik, niti, izjeme, izvajanje kode, varnost kode, preverjanje in prevajanje.

java naključna matematika naključna

Naslednja slika prikazuje pretvorbo izvorne kode v izvorno kodo.

Net Common Language Runtime

Zgornja slika pretvori kodo v izvorno kodo, ki jo CPE lahko izvede.

Glavne komponente CLR so:

  • Sistem skupnega tipa
  • Speciacija skupnega jezika
  • Zbiralec smeti
  • Just in Time Compiler
  • Metapodatki in sklopi
Net Common Language Runtime

1. Sistem skupnega tipa:

CTS ponuja smernice za prijavo, uporabo in upravljanje tipov podatkov med izvajanjem. Ponuja medjezikovno komunikacijo. VB.NET ima na primer podatkovni tip integer, C# pa podatkovni tip int za upravljanje celih števil. Po prevajanju Int32 uporabljata oba tipa podatkov. Torej CTS zagotavlja vrste podatkov z uporabo upravljane kode. Sistem običajnih tipov pomaga pri pisanju kode, neodvisne od jezika.

Ponuja dve kategoriji vrst.

    Vrsta vrednosti:Vrednostni tip shrani podatke v pomnilnik, dodeljen na skladu ali v vrstici v strukturi. Ta kategorija vrste vsebuje podatkovni imenik. Če se vrednost ene spremenljivke kopira v drugo, obe spremenljivki shranjujeta podatke neodvisno. Lahko je vgrajenih vrst, uporabniško določenih ali številskih vrst. Vgrajeni tipi so primitivni tipi podatkov, kot so numerični, logični, char in datum. Uporabniki v izvorni kodi ustvarijo uporabniško določene vrste. Naštevanje se nanaša na nabor oštevilčenih vrednosti, ki so predstavljene z oznakami, vendar so shranjene kot številski tip.
    Net Common Language Runtime Vrsta reference:Referenčni tip shrani sklic na vrednost pomnilniškega naslova in je dodeljen kopici. Pomnilnik kopice se uporablja za dinamično dodeljevanje pomnilnika. Referenčni tip ne vsebuje neposredno dejanskih podatkov, ampak vsebuje naslov podatkov. Kadarkoli je izdelan predmet referenčnega tipa, kopira naslov in ne dejanskih podatkov. Zato se bosta dve spremenljivki nanašali na iste podatke. Če se spremenijo podatki enega objekta Reference Type, se to odraža tudi v drugem objektu. Referenčni tipi so lahko samoopisni tipi, tipi kazalcev ali tipi motenj. Samoopisni tipi so lahko nizi, nizi in razredi, ki shranjujejo metapodatke o sebi.

2. Specifikacija skupnega jezika (CLS):

Specifikacija skupnega jezika (CLS) vsebuje nabor pravil, ki jih morajo upoštevati vsi jeziki, ki jih podpira NET. Skupna pravila olajšajo implementacijo jezikovne integracije in pomagajo pri medjezičnem dedovanju in odpravljanju napak. Vsak jezik, ki ga podpira NET Framework, ima svoja sintaksna pravila. Toda CLS zagotavlja interoperabilnost med aplikacijami, razvitimi z uporabo jezikov NET.

3. Odvoz smeti:

Garbage Collector je komponenta CLR, ki deluje kot samodejni upravljalnik pomnilnika. Pomaga pri upravljanju pomnilnika s samodejnim dodeljevanjem pomnilnika glede na zahteve. Objektom dodeli pomnilnik kopice. Ko predmeti niso v uporabi, povrne pomnilnik, ki jim je dodeljen za prihodnjo uporabo. Prav tako zagotavlja varnost objektov tako, da enemu objektu ne dovoli uporabe vsebine drugega objekta.

4. Prevajalnik Just in Time (JIT):

Prevajalnik JIT je pomembna komponenta CLR. Pretvori kodo MSIL v izvorno kodo (tj. strojno specifično kodo). Program .NET je preveden eksplicitno ali implicitno. Razvijalec ali programer pokliče določen prevajalnik, da prevede program v eksplicitnem prevajanju. Pri implicitnem prevajanju se program prevede dvakrat. Izvorna koda se med prvim postopkom prevajanja prevede v Microsoftov vmesni jezik (MSIL). Koda MSIL se v drugem procesu prevajanja pretvori v izvorno kodo. Ta postopek se imenuje prevajanje JIT. Obstajajo tri vrste prevajalnikov JIT - Pre, Econo in Normal. Pred JIT Compiler prevede celotno kodo MSIL v izvorno kodo pred izvedbo. Econo JIT Compiler prevede samo tiste dele kode MSIL, ki so potrebni med izvajanjem, in odstrani tiste dele, ki niso več potrebni. Običajni prevajalnik JIT prav tako prevede samo tiste dele kode MSIL, ki so potrebni med izvajanjem, vendar jih shrani v predpomnilnik za prihodnjo uporabo. Ne zahteva ponovnega prevajanja že uporabljenih delov, saj so bili shranjeni v predpomnilniku.

5. Metapodatki:

Metapodatki so binarne informacije o programu, shranjene v prenosni izvršljivi datoteki CLR (PE) skupaj s kodo MSIL ali v pomnilniku. Med izvajanjem MSIL se metapodatki naložijo tudi v pomnilnik za pravilno interpretacijo razredov in sorodnega. Informacije, uporabljene v kodi. Metapodatki torej pomagajo implementirati kodo na jezikovno nevtralen način ali doseči jezikovno interoperabilnost.

6. Sestavi:

Sklop je temeljna enota združevanja fizične kode. Sestavljen je iz manifesta sklopa, metapodatkov, kode MSIL in nabora virov, kot so slikovne datoteke. Velja tudi za osnovno enoto za uvajanje, nadzor različic, ponovno uporabo, varnostna dovoljenja itd.

Funkcije .NET CLR

Sledijo funkcije CLR.

  • Program pretvori v izvorno kodo.
  • Obravnava izjeme
  • Zagotavlja tipsko varnost
  • Upravljanje pomnilnika
  • Zagotavlja varnost
  • Izboljšana zmogljivost
  • Jezik neodvisen
  • Neodvisno od platforme
  • Odvoz smeti
  • Zagotavlja jezikovne funkcije, kot so dedovanje, vmesniki in preobremenitev za objektno usmerjene programe.

Koda, ki se izvaja s CLR, se imenuje upravljana koda, medtem ko se koda zunaj CLR imenuje neupravljana koda. CLR zagotavlja tudi plast interoperabilnosti, ki omogoča medsebojno delovanje upravljanih in neupravljanih kod.

1. Upravljana koda:

Vsak jezik, ki je napisan v ogrodju .NET, je upravljana koda. Upravljana koda uporablja CLR, ki skrbi za vaše aplikacije z upravljanjem pomnilnika, obravnavanjem varnosti, omogočanjem medjezikovnega odpravljanja napak itd. Postopek upravljane kode je prikazan na sliki:

Net Common Language Runtime

2. Neupravljana koda:

Koda, razvita zunaj okvira .NET, je znana kot neupravljana koda. Aplikacije, ki se ne izvajajo pod nadzorom CLR, naj bi bile neupravljane. Nekatere jezike, kot je C++, je mogoče uporabiti za pisanje takšnih aplikacij, kot so nizkonivojske dostopne funkcije operacijskega sistema. Primeri neupravljane kode so združljivost v ozadju z VB, ASP in COM. Ta koda se izvaja s pomočjo ovojnih razredov. Postopek neupravljane kode je prikazan spodaj:

Net Common Language Runtime

Različice .NET CLR

CLR se občasno posodobi, da zagotovi boljšo zmogljivost.

.NET različica Različica CLR
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

Struktura .NET CLR

Sledi struktura komponent programa Common Language Runtime.

Net Common Language Runtime

Podpora za knjižnico osnovnih razredov

Je knjižnica razredov, ki podpira razrede za aplikacijo .NET.

Podpora niti

Upravlja vzporedno izvajanje večnitne aplikacije.

COM Marshaler

Zagotavlja komunikacijo med objekti COM in aplikacijo.

Varnostni motor

Uveljavlja varnostne omejitve.

Motor za odpravljanje napak

Omogoča vam odpravljanje napak v različnih vrstah aplikacij.

Tip Checker

Preveri tipe, uporabljene v aplikaciji, in preveri, ali se ujemajo s standardi, ki jih ponuja CLR.

Upravitelj kode

Upravlja kodo med izvajanjem.

Zbiralec smeti

Sprosti neuporabljen pomnilnik in ga dodeli novi aplikaciji.

Obravnavalec izjem

Obravnava izjemo med izvajanjem, da prepreči napako aplikacije.

ClassLoader

Uporablja se za nalaganje vseh razredov med izvajanjem.