logo

.NET Common Language Runtime (CLR)

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

Net Common Language Runtime

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

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.

    Verditype:En verditype lagrer dataene i minnet som er tildelt på stabelen eller inline i en struktur. Denne kategorien Type inneholder datakatalogen. Hvis en variabels verdi kopieres til en annen, lagrer begge variablene data uavhengig. Det kan være av innebygde typer, brukerdefinerte eller oppregningstyper. Innebygde typer er primitive datatyper som numerisk, boolsk, char og dato. Brukere i kildekoden lager brukerdefinerte typer. En oppregning refererer til et sett med oppregnede verdier representert av etiketter, men lagret som en numerisk type.
    Net Common Language Runtime Referansetype:En referansetype lagrer en referanse til verdien av en minneadresse og tildeles på heapen. Heap-minne brukes til dynamisk minneallokering. Referansetype inneholder ikke faktiske data direkte, men inneholder adressen til data. Hver gang et objekt av referansetype lages, kopierer det adressen og ikke faktiske data. Derfor vil to variabler referere til samme data. Hvis data for ett referansetypeobjekt endres, reflekteres det samme for det andre objektet. Referansetyper kan være selvbeskrivende typer, pekertyper eller interferenstyper. De selvbeskrivende typene kan være streng-, matrise- og klassetyper som lagrer metadata om seg selv.

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:

Net Common Language Runtime

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

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

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