.NET CLR är en runtime-miljö som hanterar och exekverar koden skriven i alla .NET-programmeringsspråk. CLR är den virtuella maskinkomponenten i .NET-ramverket. Det språkets kompilator kompilerar källkoden för applikationer som utvecklats med .NET-kompatibla språk till CLR:s mellanspråk som kallas MSIL, dvs Microsofts mellanspråkskod. Denna kod är plattformsoberoende. Det är jämförbart med byte-kod i java. Metadata genereras också under kompilering och MSIL-kod och lagras i en fil som kallas Manifest-filen. Denna metadata handlar i allmänhet om medlemmar och typer som krävs av CLR för att exekvera MSIL-kod. En just-in-time kompilatorkomponent av CLR konverterar MSIL-kod till maskinens inbyggda kod. Denna kod är plattformsberoende. CLR hanterar minne, trådar, undantag, kodexekvering, kodsäkerhet, verifiering och kompilering.
odefinierad lutning
Följande figur visar omvandlingen av källkod till inbyggd kod.
Ovanstående figur konverterar kod till inbyggd kod, som CPU:n kan köra.
Huvudkomponenterna i CLR är:
- Vanligt typsystem
- Vanlig språkspeciering
- Skräp samlare
- Just in Time Compiler
- Metadata och sammanställningar
1. Vanligt system:
CTS tillhandahåller riktlinjer för att deklarera, använda och hantera datatyper vid körning. Den erbjuder kommunikation över flera språk. Till exempel har VB.NET en heltalsdatatyp och C# har en int-datatyp för att hantera heltal. Efter kompilering används Int32 av båda datatyperna. Så CTS tillhandahåller datatyperna med hjälp av hanterad kod. Ett vanligt typsystem hjälper till att skriva språkoberoende kod.
Den tillhandahåller två kategorier av typer.
2. Common Language Specification (CLS):
Common Language Specification (CLS) innehåller en uppsättning regler som ska följas av alla NET-stödda språk. De gemensamma reglerna gör det enkelt att implementera språkintegration och hjälper till med arv och felsökning på flera språk. Varje språk som stöds av NET Framework har sina egna syntaxregler. Men CLS säkerställer interoperabilitet mellan applikationer som utvecklats med NET-språk.
3. Sophämtning:
Garbage Collector är en komponent i CLR som fungerar som en automatisk minneshanterare. Det hjälper till att hantera minnet genom att automatiskt allokera minne enligt kraven. Den allokerar högminne till objekt. När objekt inte används tar det tillbaka minnet som tilldelats dem för framtida användning. Det säkerställer också säkerheten för objekt genom att inte tillåta ett objekt att använda innehållet i ett annat objekt.
4. Just in Time (JIT) kompilator:
JIT Compiler är en viktig komponent i CLR. Den konverterar MSIL-koden till inbyggd kod (dvs maskinspecifik kod). .NET-programmet kompileras antingen explicit eller implicit. Utvecklaren eller programmeraren anropar en viss kompilator för att kompilera programmet i den explicita kompileringen. I implicit kompilering kompileras programmet två gånger. Källkoden kompileras till Microsoft Intermediate Language (MSIL) under den första kompileringsprocessen. MSIL-koden konverteras till inbyggd kod i den andra kompileringsprocessen. Denna process kallas JIT-kompilering. Det finns tre typer av JIT-kompilatorer - Pre, Econo och Normal. Pre JIT Compiler kompilerar hela MSIL-koden till inbyggd kod innan exekvering. Econo JIT Compiler kompilerar endast de delar av MSIL-koden som krävs under exekvering och tar bort de delar som inte längre behövs. Normal JIT Compiler kompilerar också bara de delar av MSIL-koden som krävs under körning men placerar dem i cache för framtida användning. Det kräver inte omkompilering av redan använda delar eftersom de har placerats i cacheminnet.
5. Metadata:
En metadata är en binär information om programmet, antingen lagrad i en CLR Portable Executable-fil (PE) tillsammans med MSIL-kod eller i minnet. Under körningen av MSIL laddas även metadata in i minnet för korrekt tolkning av klasser och relaterade. Information som används i kod. Så, metadata hjälper till att implementera kod på ett språkneutralt sätt eller uppnå språkinteroperabilitet.
6. Sammansättningar:
En sammansättning är en grundläggande enhet för fysisk kodgruppering. Den består av monteringsmanifestet, metadata, MSIL-kod och en uppsättning resurser som bildfiler. Det anses också vara en grundläggande distributionsenhet, versionskontroll, återanvändning, säkerhetsbehörigheter, etc.
.NET CLR-funktioner
Följande är funktionerna i CLR.
- Det konverterar programmet till inbyggd kod.
- Hanterar undantag
- Ger typsäkerhet
- Minneshantering
- Ger trygghet
- Förbättrad prestanda
- Språkoberoende
- Plattformsoberoende
- Skräp samling
- Tillhandahåller språkfunktioner som arv, gränssnitt och överbelastning för objektorienterade program.
Koden som körs med CLR kallas hanterad kod, medan koden utanför CLR kallas ohanterad kod. CLR tillhandahåller också ett interoperabilitetsskikt, som gör att både hanterade och ohanterade koder kan samverka.
1. Hanterad kod:
Alla språk som skrivs i .NET-ramverket är hanterad kod. Hanterad kod använder CLR, som tar hand om dina applikationer genom att hantera minne, hantera säkerhet, tillåta felsökning på flera språk, etc. Processen för hanterad kod visas i figuren:
2. Ohanterad kod:
Koden som utvecklats utanför .NET-ramverket kallas ohanterad kod. Applikationer som inte körs under kontroll av CLR sägs vara ohanterade. Vissa språk som C++ kan användas för att skriva sådana applikationer, till exempel lågnivåaccessfunktioner i operativsystemet. Bakgrundskompatibilitet med VB, ASP och COM är exempel på ohanterad kod. Denna kod exekveras med hjälp av wrapper-klasser. Den ohanterade kodprocessen visas nedan:
.NET CLR-versioner
CLR uppdaterar sig själv då och då för att ge bättre prestanda.
.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öljande är komponentstrukturen för Common Language Runtime.
Stöd för basklassbibliotek
Det är ett klassbibliotek som stöder klasser för .NET-applikationen.
Trådstöd
Den hanterar parallellkörningen av den flertrådade applikationen.
COM Marshaler
Den tillhandahåller kommunikation mellan COM-objekten och applikationen.
Säkerhetsmotor
Den upprätthåller säkerhetsrestriktioner.
Felsökningsmotor
Det låter dig felsöka olika typer av applikationer.
Skriv Checker
Den kontrollerar de typer som används i applikationen och verifierar att de matchar standarderna som tillhandahålls av CLR.
Kodhanterare
Den hanterar kod vid körning.
Skräp samlare
Det frigör det oanvända minnet och allokerar det till en ny applikation.
Undantagshanterare
Den hanterar undantaget vid körning för att undvika programfel.
ClassLoader
Den används för att ladda alla klasser vid körning.