.NET CLR on ajonaikainen ympäristö, joka hallitsee ja suorittaa millä tahansa .NET-ohjelmointikielellä kirjoitettua koodia. CLR on .NET-kehyksen virtuaalikonekomponentti. Kyseisen kielen kääntäjä kokoaa .NET-yhteensopivilla kielillä kehitettyjen sovellusten lähdekoodin CLR:n välikieleksi nimeltä MSIL, eli Microsoftin välikielikoodiksi. Tämä koodi on alustasta riippumaton. Se on verrattavissa javan tavukoodiin. Metadata luodaan myös kääntämisen ja MSIL-koodin aikana ja tallennetaan tiedostoon, joka tunnetaan nimellä Manifest-tiedosto. Nämä metatiedot koskevat yleensä jäseniä ja tyyppejä, joita CLR vaatii MSIL-koodin suorittamiseen. CLR:n juuri-in-time-kääntäjäkomponentti muuntaa MSIL-koodin koneen alkuperäiseksi koodiksi. Tämä koodi on alustariippuvainen. CLR hallitsee muistia, säikeitä, poikkeuksia, koodin suorittamista, koodin turvallisuutta, todentamista ja kääntämistä.
joukko objekteja java
Seuraava kuva näyttää lähdekoodin muuntamisen alkuperäiseksi koodiksi.
Yllä oleva kuva muuntaa koodin alkuperäiseksi koodiksi, jonka suoritin voi suorittaa.
CLR:n pääkomponentit ovat:
- Yleinen tyyppijärjestelmä
- Yleinen kielimääritelmä
- Roskankerääjä
- Just in Time Compiler
- Metadata ja kokoonpanot
1. Yleinen tyyppijärjestelmä:
CTS tarjoaa ohjeita tietotyyppien ilmoittamiseen, käyttöön ja hallintaan suorituksen aikana. Se tarjoaa monikielistä viestintää. Esimerkiksi VB.NET:ssä on kokonaislukutietotyyppi ja C#:ssa on int-tietotyyppi kokonaislukujen hallintaa varten. Kääntämisen jälkeen molemmat tietotyypit käyttävät Int32:ta. Joten CTS tarjoaa tietotyypit hallitun koodin avulla. Yleinen tyyppijärjestelmä auttaa kieliriippumattoman koodin kirjoittamisessa.
Se tarjoaa kaksi tyyppiä.
2. Common Language Specification (CLS):
Common Language Specification (CLS) sisältää joukon sääntöjä, joita kaikkien NETin tukemien kielten on noudatettava. Yhteiset säännöt helpottavat kieliintegraation toteuttamista ja auttavat kieltenvälisessä periytymisessä ja virheenkorjauksessa. Jokaisella NET Frameworkin tukemalla kielellä on omat syntaksisäännöt. Mutta CLS varmistaa yhteentoimivuuden NET-kielillä kehitettyjen sovellusten välillä.
3. Roskakeräys:
Garbage Collector on CLR:n komponentti, joka toimii automaattisena muistinhallintaohjelmana. Se auttaa hallitsemaan muistia varaamalla muistia automaattisesti tarpeen mukaan. Se varaa objekteille kasamuistin. Kun esineet eivät ole käytössä, se ottaa niille varatun muistin takaisin tulevaa käyttöä varten. Se myös varmistaa esineiden turvallisuuden, kun se ei anna yhden objektin käyttää toisen esineen sisältöä.
4. Just in Time (JIT) -kääntäjä:
JIT Compiler on tärkeä osa CLR:tä. Se muuntaa MSIL-koodin alkuperäiseksi koodiksi (eli konekohtaiseksi koodiksi). .NET-ohjelma on käännetty joko eksplisiittisesti tai implisiittisesti. Kehittäjä tai ohjelmoija kutsuu tietyn kääntäjän kääntämään ohjelman eksplisiittisessä käännöksessä. Implisiittisessä kääntämisessä ohjelma käännetään kahdesti. Lähdekoodi käännetään Microsoft Intermediate Language (MSIL) -kieleksi ensimmäisen käännösprosessin aikana. MSIL-koodi muunnetaan alkuperäiseksi koodiksi toisessa käännösprosessissa. Tätä prosessia kutsutaan JIT-kokoelmaksi. JIT-kääntäjiä on kolmenlaisia - Pre, Econo ja Normal. Pre JIT Compiler kokoaa koko MSIL-koodin alkuperäiseksi koodiksi ennen suorittamista. Econo JIT Compiler kääntää vain ne osat MSIL-koodista, joita tarvitaan suorituksen aikana ja poistaa osat, joita ei enää tarvita. Normaali JIT Compiler myös kääntää vain ne MSIL-koodin osat, joita tarvitaan suorituksen aikana, mutta sijoittaa ne välimuistiin tulevaa käyttöä varten. Se ei vaadi jo käytettyjen osien uudelleenkääntämistä, koska ne on sijoitettu välimuistiin.
5. Metatiedot:
Metadata on binääritietoa ohjelmasta, joka on tallennettu CLR Portable Executable -tiedostoon (PE) yhdessä MSIL-koodin kanssa tai muistiin. MSIL:n suorituksen aikana myös metatiedot ladataan muistiin luokkien ja niihin liittyvien tulkinnan varmistamiseksi. Koodissa käytetyt tiedot. Joten metatiedot auttavat toteuttamaan koodia kielineutraalilla tavalla tai saavuttamaan kielten yhteentoimivuuden.
6. Kokoonpanot:
Kokoonpano on fyysisen koodin ryhmittelyn perusyksikkö. Se koostuu kokoonpanoluettelosta, metatiedoista, MSIL-koodista ja joukosta resursseja, kuten kuvatiedostoja. Sitä pidetään myös peruskäyttöönottoyksikkönä, versionhallintana, uudelleenkäytönä, suojausoikeuksina jne.
.NET CLR -toiminnot
Seuraavassa on CLR:n toiminnot.
- Se muuntaa ohjelman alkuperäiseksi koodiksi.
- Käsittelee poikkeuksia
- Tarjoaa tyyppiturvan
- Muistin hallinta
- Tarjoaa turvallisuutta
- Parannettu suorituskyky
- Kielestä riippumaton
- Alustasta riippumaton
- Roskakokoelma
- Tarjoaa olioohjelmille kieliominaisuuksia, kuten periytymisen, rajapinnat ja ylikuormituksen.
CLR:n kanssa toimivaa koodia kutsutaan hallitukseksi koodiksi, kun taas CLR:n ulkopuolella olevaa koodia kutsutaan hallitsemattomaksi koodiksi. CLR tarjoaa myös yhteentoimivuuskerroksen, joka mahdollistaa sekä hallittujen että hallitsemattomien koodien yhteistoiminnan.
1. Hallittu koodi:
Mikä tahansa .NET-kehykseen kirjoitettu kieli on hallittua koodia. Hallittu koodi käyttää CLR:ää, joka huolehtii sovelluksistasi hallitsemalla muistia, käsittelemällä suojausta, sallimalla kielten välisen virheenkorjauksen jne. Hallitun koodin prosessi on esitetty kuvassa:
2. Hallitsematon koodi:
NET-kehyksen ulkopuolella kehitetty koodi tunnetaan hallitsemattomana koodina. Sovellusten, jotka eivät toimi CLR:n hallinnassa, sanotaan olevan hallitsemattomia. Tiettyjä kieliä, kuten C++, voidaan käyttää tällaisten sovellusten, kuten käyttöjärjestelmän matalan tason pääsytoimintojen, kirjoittamiseen. Taustayhteensopivuus VB:n, ASP:n ja COM:n kanssa ovat esimerkkejä hallitsemattomasta koodista. Tämä koodi suoritetaan kääreluokkien avulla. Hallitsematon koodiprosessi näkyy alla:
.NET CLR -versiot
CLR päivittää itsensä aika ajoin parantaakseen suorituskykyä.
.NET-versio | CLR versio |
---|---|
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 -rakenne
Seuraava on Common Language Runtime -ohjelman komponenttirakenne.
Perusluokan kirjastotuki
Se on luokkakirjasto, joka tukee .NET-sovelluksen luokkia.
Säikeen tuki
Se hallitsee monisäikeisen sovelluksen rinnakkaista suoritusta.
COM Marshaler
Se tarjoaa yhteyden COM-objektien ja sovelluksen välillä.
Turvamoottori
Se valvoo turvallisuusrajoituksia.
Debug Engine
Sen avulla voit korjata erilaisia sovelluksia.
Tyyppitarkistus
Se tarkistaa sovelluksessa käytetyt tyypit ja varmistaa, että ne vastaavat CLR:n antamia standardeja.
Code Manager
Se hallitsee koodia suorituksen aikana.
Roskankerääjä
Se vapauttaa käyttämättömän muistin ja varaa sen uudelle sovellukselle.
Poikkeuskäsittelijä
Se käsittelee poikkeuksen ajon aikana välttääkseen sovelluksen epäonnistumisen.
ClassLoader
Sitä käytetään lataamaan kaikki luokat ajon aikana.