A keretrendszer a CLI egy implementációja. A CLI a Common Language Infrastructure szavakat rövidÃti. Magyarra fordÃtva ez Közös nyelv infrastruktúrát jelent. Ez az infrastruktúra számos komponensbÅ‘l épül fel. A fÅ‘bb összetevÅ‘k:
-
CTS (Common Type System)
Közös tÃpusrendszer. Specifikálja a runtime (CLR) által támogatott összes adattÃpust és programozási konstrukciót, hogy milyen kapcsolatban vannak egymással, illetve .NET metadata szintjén hogyan vannak a memóriában ábrázolva.
-
CIL (Common Intermediate Language)
Közös átmeneti nyelv. Ez egy gépi nyelv. Minden CLI kompatibilis fordÃtó program erre a nyelvre fordÃtja át a kódot.
-
CLS (Common Language Specification)
Közös nyelv specifikáció. A CTS egy részhalmaza, amelyet minden .NET-et célzó programozási nyelv támogat. Egy adott .NET-es nyelv nem támogat szükségszerűen mindent, amit a CTS definiál, például nem minden nyelvben van
uintadattÃpus vagy lehetÅ‘ség pointerek használatára. Az[assembly: CLSCompliant(true)]attribútummal lehet szólni a fordÃtónak, hogy ellenÅ‘rizze, hogy CLS-kompatibilis-e a kód. -
CLR (Common Language Runtime)
Közös nyelv futtató környezet, ami a CIL kódból generál platform specifikus kódot, ami végrehajtásra kerül.
-
BCL (Base Class Library)
AlapvetÅ‘ osztálykönyvtár. A .NET tetemes részét alkotja. Ezen osztályok olyan funkciókat valósÃtanak meg, amelyek megkönnyÃtik a fejlesztÅ‘k életét. Számos technológiát és al-keretrendszert foglal magába.
Egyszerűen fogalmazva mondhatnánk azt, hogy a CLR egy virtuális gép, aminek az utasÃtáskészletét a CTS definiálja. Azonban ez nem igaz. Az eféle virtualizáció sebességben nem lenne kifizetÅ‘dÅ‘.
A programunkból a program elindÃtásának pillanatában lesz natÃv kód. Ezt a fordÃtási szisztémát JIT fordÃtásnak nevezik. A JIT szó a Just in time, magyarul az éppen idÅ‘ben szó rövidÃtése.
A JIT elÅ‘nye, hogy könnyebb feldolgozni, mint egy teljesen forráskódból álló programot. Ezáltal a betöltés nem lassul le drámaian. További elÅ‘ny, hogy mivel a futtató gép számára is értelmezhetÅ‘ kód keletkezik, az alkalmazás futás közben nem emulált, Ãgy teljes sebességen tud futni. Egy adott kódrészlet csak egyszer esik át JIT fordÃtáson. A fordÃtás eredménye egy gyorsÃtótárból fut.
Elméletben és gyakorlatban minden nyelvhez lehet CLR-t célzó fordÃtót készÃteni. Jelenleg több tucat programozási nyelvnek létezik .NET kompatibilis megfelelÅ‘je. Itt érdemes megjegyezni, hogy fejlesztéshez érdemes olyan nyelvet választani, amit hivatalosan is támogat a Microsoft. A keretrendszer egyébként C# nyelven Ãródott, Ãgy ez a legjobban támogatott nyelv.
A keretrendszer alapvetÅ‘en nem sokat érne a BCL nélkül. Minden .NET verzió lényegesen bÅ‘vÃti a funkcionalitást. A BCL dokumentációja csak elektronikus úton érhetÅ‘ el, mivel kiadásonként némileg változik és igencsak nagy méretű dokumentációról beszélünk.