.NET CLR er et runtime-miljø, der administrerer og udfører koden skrevet i ethvert .NET-programmeringssprog. CLR er den virtuelle maskine-komponent i .NET frameworket. Det sprogs compiler kompilerer kildekoden for applikationer udviklet ved hjælp af .NET-kompatible sprog til CLRs mellemsprog kaldet MSIL, dvs. Microsoft mellemsprogkode. Denne kode er platformsuafhængig. Det kan sammenlignes med byte-kode i java. Metadata genereres også under kompilering og MSIL-kode og gemmes i en fil kendt som Manifest-filen. Disse metadata handler generelt om medlemmer og typer, der kræves af CLR for at udføre MSIL-kode. En just-in-time compiler komponent af CLR konverterer MSIL kode til native kode for maskinen. Denne kode er platformsafhængig. CLR administrerer hukommelse, tråde, undtagelser, kodeudførelse, kodesikkerhed, verifikation og kompilering.
python ny linje
Følgende figur viser konverteringen af kildekode til indbygget kode.
Ovenstående figur konverterer kode til native kode, som CPU'en kan udføre.
Hovedkomponenterne i CLR er:
- Fælles type system
- Fælles sprogart
- Skraldemand
- Just in Time Compiler
- Metadata og samlinger
1. Almindelig type system:
CTS giver retningslinjer for deklaration, brug og styring af datatyper under kørsel. Det tilbyder kommunikation på tværs af sprog. For eksempel har VB.NET en heltalsdatatype, og C# har en int-datatype til styring af heltal. Efter kompilering bruges Int32 af begge datatyper. Så CTS leverer datatyperne ved hjælp af administreret kode. Et almindeligt typesystem hjælper med at skrive sproguafhængig kode.
Det giver to kategorier af typer.
2. Fælles sprogspecifikation (CLS):
Common Language Specification (CLS) indeholder et sæt regler, der skal følges af alle NET-understøttede sprog. De fælles regler gør det nemt at implementere sprogintegration og hjælper med arv og fejlfinding på tværs af sprog. Hvert sprog, der understøttes af NET Framework, har sine egne syntaksregler. Men CLS sikrer interoperabilitet mellem applikationer udviklet ved hjælp af NET-sprog.
3. Affaldsopsamling:
Garbage Collector er en komponent i CLR, der fungerer som en automatisk memory manager. Det hjælper med at administrere hukommelsen ved automatisk at allokere hukommelse i henhold til kravet. Det allokerer heap-hukommelse til objekter. Når objekter ikke er i brug, genvinder det den hukommelse, der er tildelt dem, til fremtidig brug. Det sikrer også objekters sikkerhed ved ikke at tillade en genstand at bruge indholdet af en anden genstand.
4. Just in Time (JIT) Compiler:
JIT Compiler er en vigtig komponent i CLR. Den konverterer MSIL-koden til native kode (dvs. maskinspecifik kode). .NET-programmet er kompileret enten eksplicit eller implicit. Udvikleren eller programmøren kalder en bestemt compiler for at kompilere programmet i den eksplicitte kompilering. I implicit kompilering kompileres programmet to gange. Kildekoden kompileres i Microsoft Intermediate Language (MSIL) under den første kompileringsproces. MSIL-koden konverteres til native kode i den anden kompileringsproces. Denne proces kaldes JIT-kompilering. Der er tre typer JIT-kompilere - Pre, Econo og Normal. Pre JIT Compiler kompilerer hele MSIL-koden til native kode før udførelse. Econo JIT Compiler kompilerer kun de dele af MSIL-koden, der kræves under udførelse og fjerner de dele, der ikke længere er nødvendige. Normal JIT Compiler kompilerer også kun de dele af MSIL-koden, der kræves under udførelse, men placerer dem i cachen til fremtidig brug. Det kræver ikke genkompilering af allerede brugte dele, da de er blevet placeret i cachehukommelsen.
5. Metadata:
En metadata er en binær information om programmet, enten gemt i en CLR Portable Executable-fil (PE) sammen med MSIL-kode eller i hukommelsen. Under udførelsen af MSIL bliver metadata også indlæst i hukommelsen for korrekt fortolkning af klasser og relaterede. Information brugt i kode. Så metadata hjælper med at implementere kode på en sprogneutral måde eller opnå sproglig interoperabilitet.
6. Samlinger:
En samling er en grundlæggende enhed af fysisk kodegruppering. Det består af assembly-manifestet, metadata, MSIL-kode og et sæt ressourcer som billedfiler. Det betragtes også som en grundlæggende installationsenhed, versionskontrol, genbrug, sikkerhedstilladelser osv.
.NET CLR-funktioner
Følgende er funktionerne i CLR.
- Det konverterer programmet til native kode.
- Håndterer undtagelser
- Giver typesikkerhed
- Hukommelseshåndtering
- Giver sikkerhed
- Forbedret ydeevne
- Sprog uafhængig
- Platform uafhængig
- Dagrenovation
- Giver sprogfunktioner såsom nedarvning, grænseflader og overbelastning til objektorienterede programmer.
Den kode, der kører med CLR, kaldes managed code, hvorimod koden uden for CLR kaldes unmanaged code. CLR giver også et interoperabilitetslag, som gør det muligt for både de administrerede og ikke-administrerede koder at fungere sammen.
1. Administreret kode:
Ethvert sprog, der er skrevet i .NET frameworket, er administreret kode. Administreret kode bruger CLR, som passer på dine applikationer ved at administrere hukommelse, håndtere sikkerhed, tillade fejlsøgning på tværs af sprog osv. Processen med administreret kode er vist i figuren:
2. Ikke-administreret kode:
Koden udviklet uden for .NET frameworket er kendt som uadministreret kode. Programmer, der ikke kører under kontrol af CLR, siges at være uadministrerede. Visse sprog såsom C++ kan bruges til at skrive sådanne applikationer, såsom lav-niveau adgangsfunktioner i operativsystemet. Baggrundskompatibilitet med VB, ASP og COM er eksempler på ikke-administreret kode. Denne kode udføres ved hjælp af wrapper-klasser. Den ikke-administrerede kodeproces er vist nedenfor:
.NET CLR-versioner
CLR opdaterer sig selv fra tid til anden for at give bedre ydeevne.
.NET version | CLR version |
---|---|
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 af Common Language Runtime.
Base Class Library Support
Det er et klassebibliotek, der understøtter klasser til .NET-applikationen.
Trådstøtte
Det styrer den parallelle udførelse af multi-threaded-applikationen.
COM Marshaler
Det giver kommunikation mellem COM-objekterne og applikationen.
Sikkerhedsmotor
Det håndhæver sikkerhedsrestriktioner.
Debug Engine
Det giver dig mulighed for at debugge forskellige slags applikationer.
Skriv Checker
Den kontrollerer de anvendte typer i applikationen og verificerer, at de matcher standarderne fra CLR.
Kode Manager
Det administrerer kode ved kørselstid.
Skraldemand
Den frigiver den ubrugte hukommelse og allokerer den til en ny applikation.
Undtagelsesbehandler
Den håndterer undtagelsen under kørsel for at undgå programfejl.
ClassLoader
Det bruges til at indlæse alle klasser under kørsel.