A .NET Framework egy keretrendszer (ilyen pl. a java is), amely egy új absztrakciós réteget valósít meg a keretrendszerre írt felhasználói programok és az operációs rendszer (linux, windows_xp, windows_vista) között. Szokásos elnevezések: framework, keretrendszer, virtuális gép.
Feladata a beépített osztályokon és saját utasításkészletén keresztül „felügyelt” programok futtatása az op. rendszeren. Ezt az utasítéskészletet egy köztes nyelv, az Intermediate Language adja. A magasabb szintű nyelveken (c#, visual c++, visual basic.net, j#, php, pascal, python, LOGO, …) írt fordító (compiler) erre a köztes nyelvre (IL) fordítja le, amit aztán a futtatókörnyezet „felügyelt” módon gepi_kodra fordít és az operációs rendszer a hardveren futtat.
.cs (c# forráskód) .exe (il bináris)
a futó natív gépi kód
Természetesen a futás idejű fordítás sebességcsökkenéssel jár, amit a .net keretrendszer menet közbeni fordítója azzal kompenzál, hogy csak a még nem fordított metodust fordítja vagy a már rendelkezésre álló gépi kódot használja. Így a programindulás lényegesen lassabb lehet, de a futás általában már nem.
Ebből származó előnyök:
Native Imgae Generator (ngen.exe) -ral közvetlenül a natív kód is fordítható, bár általában nem javasolt.
A keretrendszer jelenleg a Mono projekt keretében linuxra, a Microsoft által Windows-okra érhető el.
Elnevezések:
Igen nagy számú beépített osztálykönyvtár áll a programozó rendelkezésére. Fontosabb névterek1): System, System.IO, System.Net , System.XML, System.Console …
A nem várt eseményeket kivételnek nevezzük. Az egységes megvalósítás lehetőséget ad a kódban a hasznos kód és a kivételkezelő kód egymástól szétválasztására. Saját kivételek (osztályok) definiálhatók, kedvünkre szabhatók. Természetesen „kivételes esetben” ez is lassulást okoz, így a kivételkezelés módszerét nem célszerű - bár lehet - programozói feladatokra használni.
Az automatikus memóriakezelést végez: memóriafoglalás, felszabadítás.
Jellemzően:
A GC mozgatja át a lyukas memóriaterületre a használt adatokat, az új üres tér egybefüggő (v.ö JAVA), így a memóriafoglalás villámgyors. Az optimalizált GC az igényeknek megfelelő sebességet produkál.