.NET CLR er et kjøretidsmiljø som administrerer og kjører koden skrevet i et hvilket som helst .NET-programmeringsspråk. CLR er den virtuelle maskinkomponenten i .NET-rammeverket. Det språkets kompilator kompilerer kildekoden til applikasjoner utviklet med .NET-kompatible språk til CLRs mellomspråk kalt MSIL, dvs. Microsoft mellomspråkkode. Denne koden er plattformuavhengig. Det kan sammenlignes med byte-kode i java. Metadata genereres også under kompilering og MSIL-kode og lagres i en fil kjent som Manifest-filen. Disse metadataene handler generelt om medlemmer og typer som kreves av CLR for å utføre MSIL-kode. En just-in-time kompilatorkomponent av CLR konverterer MSIL-kode til innfødt kode for maskinen. Denne koden er plattformavhengig. CLR administrerer minne, tråder, unntak, kodekjøring, kodesikkerhet, verifisering og kompilering.
git push-kommando
Følgende figur viser konverteringen av kildekode til innfødt kode.
Figuren ovenfor konverterer kode til innfødt kode, som CPU kan kjøre.
Hovedkomponentene i CLR er:
- Vanlig type system
- Vanlig språktype
- Søppelmann
- Just in Time Compiler
- Metadata og sammenstillinger
1. Vanlig type system:
CTS gir retningslinjer for å deklarere, bruke og administrere datatyper under kjøring. Det tilbyr kommunikasjon på tvers av språk. For eksempel har VB.NET en heltallsdatatype, og C# har en int-datatype for å administrere heltall. Etter kompilering brukes Int32 av begge datatypene. Så CTS gir datatypene ved å bruke administrert kode. Et vanlig typesystem hjelper til med å skrive språkuavhengig kode.
Den gir to kategorier av typer.
2. Common Language Specification (CLS):
Common Language Specification (CLS) inneholder et sett med regler som skal følges av alle NET-støttede språk. De vanlige reglene gjør det enkelt å implementere språkintegrasjon og hjelper til med arv og feilsøking på tvers av språk. Hvert språk som støttes av NET Framework har sine egne syntaksregler. Men CLS sikrer interoperabilitet mellom applikasjoner utviklet ved bruk av NET-språk.
3. Søppelinnsamling:
Garbage Collector er en komponent av CLR som fungerer som en automatisk minnebehandling. Det hjelper med å administrere minnet ved å tildele minne automatisk i henhold til kravet. Den tildeler haugminne til objekter. Når objekter ikke er i bruk, tar den tilbake minnet som er tildelt dem for fremtidig bruk. Det sikrer også sikkerheten til objekter ved ikke å tillate at ett objekt bruker innholdet til et annet objekt.
4. Just in Time (JIT) kompilator:
JIT Compiler er en viktig komponent i CLR. Den konverterer MSIL-koden til opprinnelig kode (dvs. maskinspesifikk kode). .NET-programmet er kompilert enten eksplisitt eller implisitt. Utvikleren eller programmereren kaller en bestemt kompilator for å kompilere programmet i den eksplisitte kompileringen. I implisitt kompilering kompileres programmet to ganger. Kildekoden kompileres til Microsoft Intermediate Language (MSIL) under den første kompileringsprosessen. MSIL-koden konverteres til opprinnelig kode i den andre kompileringsprosessen. Denne prosessen kalles JIT-kompilering. Det er tre typer JIT-kompilatorer - Pre, Econo og Normal. Pre JIT Compiler kompilerer hele MSIL-koden til naturlig kode før kjøring. Econo JIT Compiler kompilerer bare de delene av MSIL-koden som kreves under kjøring og fjerner de delene som ikke lenger er nødvendige. Normal JIT Compiler kompilerer også bare de delene av MSIL-koden som kreves under kjøring, men plasserer dem i hurtigbufferen for fremtidig bruk. Det krever ikke rekompilering av allerede brukte deler da de er plassert i cache-minnet.
5. Metadata:
En metadata er binær informasjon om programmet, enten lagret i en CLR Portable Executable-fil (PE) sammen med MSIL-kode eller i minnet. Under kjøringen av MSIL blir metadata også lastet inn i minnet for riktig tolkning av klasser og relaterte. Informasjon brukt i kode. Så metadata hjelper med å implementere kode på en språknøytral måte eller oppnå språkinteroperabilitet.
6. Monteringer:
En sammenstilling er en grunnleggende enhet for fysisk kodegruppering. Den består av monteringsmanifestet, metadata, MSIL-kode og et sett med ressurser som bildefiler. Det regnes også som en grunnleggende distribusjonsenhet, versjonskontroll, gjenbruk, sikkerhetstillatelser, etc.
.NET CLR-funksjoner
Følgende er funksjonene til CLR.
- Den konverterer programmet til innfødt kode.
- Håndterer unntak
- Gir typesikkerhet
- Minnehåndtering
- Gir trygghet
- Forbedret ytelse
- Språkuavhengig
- Plattformuavhengig
- Søppelsamling
- Gir språkfunksjoner som arv, grensesnitt og overbelastning for objektorienterte programmer.
Koden som kjører med CLR kalles administrert kode, mens koden utenfor CLR kalles uadministrert kode. CLR gir også et interoperabilitetslag, som lar både de administrerte og uadministrerte kodene fungere sammen.
1. Administrert kode:
Ethvert språk som er skrevet i .NET-rammeverket er administrert kode. Administrert kode bruker CLR, som tar vare på applikasjonene dine ved å administrere minne, håndtere sikkerhet, tillate feilsøking på tvers av språk osv. Prosessen med administrert kode er vist i figuren:
2. Uadministrert kode:
Koden utviklet utenfor .NET-rammeverket er kjent som uadministrert kode. Applikasjoner som ikke kjører under kontroll av CLR sies å være uadministrerte. Visse språk som C++ kan brukes til å skrive slike applikasjoner, for eksempel lavnivåtilgangsfunksjoner i operativsystemet. Bakgrunnskompatibilitet med VB, ASP og COM er eksempler på uadministrert kode. Denne koden utføres ved hjelp av wrapper-klasser. Den uadministrerte kodeprosessen vises nedenfor:
.NET CLR-versjoner
CLR oppdaterer seg selv fra tid til annen for å gi bedre ytelse.
.NET-versjon | CLR-versjon |
---|---|
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-struktur
Følgende er komponentstrukturen til Common Language Runtime.
Base Class Library Support
Det er et klassebibliotek som støtter klasser for .NET-applikasjonen.
Trådstøtte
Den administrerer den parallelle kjøringen av flertrådsapplikasjonen.
COM Marshaler
Det gir kommunikasjon mellom COM-objektene og applikasjonen.
Sikkerhetsmotor
Den håndhever sikkerhetsrestriksjoner.
Feilsøkingsmotor
Den lar deg feilsøke forskjellige typer applikasjoner.
Skriv Checker
Den sjekker typene som brukes i applikasjonen og verifiserer at de samsvarer med standardene gitt av CLR.
Kodeansvarlig
Den administrerer kode ved kjøretid.
Søppelmann
Den frigjør det ubrukte minnet og tildeler det til en ny applikasjon.
Unntaksbehandler
Den håndterer unntaket ved kjøretid for å unngå programfeil.
ClassLoader
Den brukes til å laste alle klasser under kjøring.