.NET

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) {doubleright}over{compiler} .exe (il bináris) {right}over{JIT} 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:

  • hardverfüggő optimalizást a keretrendszer és nem a program végezheti (hordozható marad az általunk írt és fordított kód)
  • szoftveroptimalizáció (?)

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:

  • .NET osztálykönyvtár ~ Framework Class Library
  • .NET futtatókörnyezet ~ Common Language Runtime Execution Engine
  • menet közbeni fordító ~ JIT ~ Just-in-time Compiler

.NET Osztálykönyvtár

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 …

.NET Típusrendszere

  • objektumorientált
  • nyelvfüggetlen
  • szigorú típuskezelés (érték+referencia; boxing; attributumok)

.NET Kivételkezelés

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.

Memóriakezelés

Az automatikus memóriakezelést végez: memóriafoglalás, felszabadítás.

Jellemzően:

  • gyors memóriafoglalás
  • lassú - bár a végletekig optimalizált, és ritkán futó szemétgyűjtő algoritmus (Garbage Collector: külön szál; amíg fut, minden alkalmazás áll)

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.

1)
a névtér és az osztálykönyvtár fogalma nem teljesen ekvivalens
oktatas/informatika/programozas/dotnet/start.txt · Utolsó módosítás: 2019/06/04 14:20 szerkesztette: barnkopf
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0