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