.NET CLR este un mediu de rulare care gestionează și execută codul scris în orice limbaj de programare .NET. CLR este componenta mașinii virtuale a cadrului .NET. Compilatorul acelui limbaj compilează codul sursă al aplicațiilor dezvoltate folosind limbaje compatibile .NET în limbajul intermediar CLR numit MSIL, adică codul de limbaj intermediar Microsoft. Acest cod este independent de platformă. Este comparabil cu codul de octeți din Java. Metadatele sunt, de asemenea, generate în timpul compilării și codul MSIL și stocate într-un fișier cunoscut sub numele de fișier Manifest. Aceste metadate sunt, în general, despre membrii și tipurile cerute de CLR pentru a executa codul MSIL. O componentă de compilare just-in-time a CLR convertește codul MSIL în codul nativ al mașinii. Acest cod depinde de platformă. CLR gestionează memoria, firele de execuție, excepțiile, execuția codului, siguranța codului, verificarea și compilarea.
mysql update join
Figura următoare arată conversia codului sursă în cod nativ.
Figura de mai sus convertește codul în cod nativ, pe care CPU-ul îl poate executa.
Principalele componente ale CLR sunt:
- Sistem de tip comun
- Speciația limbajului comun
- Colector de gunoi
- Just in Time Compiler
- Metadate și ansambluri
1. Sistem de tip comun:
CTS oferă instrucțiuni pentru declararea, utilizarea și gestionarea tipurilor de date în timpul execuției. Oferă comunicare în mai multe limbi. De exemplu, VB.NET are un tip de date întreg, iar C# are un tip de date int pentru gestionarea numerelor întregi. După compilare, Int32 este utilizat de ambele tipuri de date. Deci, CTS furnizează tipurile de date folosind cod gestionat. Un sistem de tip comun ajută la scrierea codului independent de limbă.
Acesta oferă două categorii de tipuri.
2. Common Language Specification (CLS):
Common Language Specification (CLS) conține un set de reguli care trebuie urmate de toate limbile acceptate de NET. Regulile comune facilitează implementarea integrării lingvistice și ajută la moștenirea și depanarea în mai multe limbi. Fiecare limbaj acceptat de NET Framework are propriile reguli de sintaxă. Dar CLS asigură interoperabilitatea între aplicațiile dezvoltate folosind limbaje NET.
3. Colectarea gunoiului:
Garbage Collector este o componentă a CLR care funcționează ca un manager automat de memorie. Ajută la gestionarea memoriei prin alocarea automată a memoriei conform cerințelor. Alocă memorie heap obiectelor. Când obiectele nu sunt în uz, acesta recuperează memoria alocată acestora pentru utilizare ulterioară. De asemenea, asigură siguranța obiectelor prin faptul că nu permite unui obiect să folosească conținutul altui obiect.
4. Compilatorul Just in Time (JIT):
JIT Compiler este o componentă importantă a CLR. Acesta convertește codul MSIL în cod nativ (adică, cod specific mașinii). Programul .NET este compilat fie explicit, fie implicit. Dezvoltatorul sau programatorul apelează un anumit compilator pentru a compila programul în compilarea explicită. În compilarea implicită, programul este compilat de două ori. Codul sursă este compilat în Microsoft Intermediate Language (MSIL) în timpul primului proces de compilare. Codul MSIL este convertit în cod nativ în al doilea proces de compilare. Acest proces se numește compilare JIT. Există trei tipuri de compilatoare JIT - Pre, Econo și Normal. Pre JIT Compiler compilează întregul cod MSIL în cod nativ înainte de execuție. Econo JIT Compiler compilează numai acele părți ale codului MSIL necesare în timpul execuției și elimină acele părți care nu mai sunt necesare. Compilatorul JIT normal compilează, de asemenea, numai acele părți ale codului MSIL necesare în timpul execuției, dar le plasează în cache pentru utilizare ulterioară. Nu necesită recompilări ale pieselor deja utilizate, deoarece acestea au fost plasate în memoria cache.
5. Metadate:
O metadate este o informație binară despre program, fie stocată într-un fișier CLR Portable Executable (PE) împreună cu codul MSIL, fie în memorie. În timpul execuției MSIL, metadatele sunt, de asemenea, încărcate în memorie pentru interpretarea corectă a claselor și a celor aferente. Informații utilizate în cod. Așadar, metadatele ajută la implementarea codului într-o manieră neutră din punct de vedere al limbii sau la realizarea interoperabilității lingvistice.
6. Ansambluri:
Un ansamblu este o unitate fundamentală a grupării codurilor fizice. Constă din manifestul de asamblare, metadate, codul MSIL și un set de resurse, cum ar fi fișierele imagine. De asemenea, este considerată o unitate de implementare de bază, control al versiunilor, reutilizare, permisiuni de securitate etc.
Funcții .NET CLR
Următoarele sunt funcțiile CLR.
- Acesta convertește programul în cod nativ.
- Se ocupă de excepții
- Oferă siguranță de tip
- Gestionarea memoriei
- Oferă securitate
- Performanta imbunatatita
- Independent de limbaj
- Platforma independenta
- Colectarea gunoiului
- Oferă caracteristici de limbaj, cum ar fi moștenirea, interfețele și supraîncărcarea pentru programele orientate pe obiecte.
Codul care rulează cu CLR se numește cod gestionat, în timp ce codul din afara CLR se numește cod negestionat. CLR oferă, de asemenea, un strat de interoperabilitate, care permite interoperarea atât a codurilor gestionate, cât și a celor neadministrate.
1. Cod gestionat:
Orice limbaj care este scris în cadrul .NET este cod gestionat. Codul gestionat folosește CLR, care are grijă de aplicațiile dvs. prin gestionarea memoriei, gestionarea securității, permițând depanarea în mai multe limbi etc. Procesul codului gestionat este prezentat în figură:
2. Cod negestionat:
Codul dezvoltat în afara cadrului .NET este cunoscut sub numele de cod negestionat. Se spune că aplicațiile care nu rulează sub controlul CLR sunt negestionate. Anumite limbaje precum C++ pot fi folosite pentru a scrie astfel de aplicații, cum ar fi funcțiile de acces la nivel scăzut ale sistemului de operare. Compatibilitatea de fundal cu VB, ASP și COM sunt exemple de cod negestionat. Acest cod este executat cu ajutorul claselor wrapper. Procesul de cod negestionat este prezentat mai jos:
Versiuni .NET CLR
CLR se actualizează din când în când pentru a oferi performanțe mai bune.
Versiunea .NET | Versiunea CLR |
---|---|
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 |
Structura .NET CLR
Mai jos este structura componentelor Common Language Runtime.
Suport bibliotecă de clasă de bază
Este o bibliotecă de clase care acceptă clase pentru aplicația .NET.
Suport pentru fire
Gestionează execuția paralelă a aplicației multi-threaded.
COM Marshaler
Oferă comunicarea între obiectele COM și aplicație.
Motor de securitate
Implementează restricții de securitate.
Motor de depanare
Vă permite să depanați diferite tipuri de aplicații.
Verificator de tip
Verifică tipurile utilizate în aplicație și verifică dacă se potrivesc cu standardele furnizate de CLR.
Manager de cod
Gestionează codul în timpul execuției.
Colector de gunoi
Eliberează memoria nefolosită și o alocă unei noi aplicații.
Handler de excepții
Se ocupă de excepția în timpul execuției pentru a evita eșecul aplicației.
ClassLoader
Este folosit pentru a încărca toate clasele în timpul rulării.