A Common Language Runtime (CLR) áttekintése
A .NET a kódot futtató közös nyelvi futtatókörnyezetet biztosítja, és olyan szolgáltatásokat biztosít, amelyek megkönnyítik a fejlesztési folyamatot.
A fordítók és eszközök elérhetővé teszik a közös nyelvi futtatókörnyezet funkcióit, és lehetővé teszik a felügyelt végrehajtási környezet előnyeit élvező kód írását. A futtatókörnyezetet megcélzó nyelvfordítóval fejlesztett kódot felügyelt kódnak nevezzük. A felügyelt kód olyan funkciók előnyeit élvezi, mint a nyelvek közötti integráció, a nyelvközi kivételkezelés, a fokozott biztonság, a verziószámozás és az üzembe helyezés támogatása, az összetevők közötti interakció egyszerűsített modellje, valamint a hibakeresési és profilkészítési szolgáltatások.
Feljegyzés
A fordítók és az eszközök olyan kimenetet hozhatnak létre, amelyet a közös nyelvi futtatókörnyezet felhasználhat, mert a típusrendszer, a metaadatok formátuma és a futtatókörnyezet (a virtuális végrehajtási rendszer) mindegyike egy nyilvános szabvány, az ECMA Common Language Infrastructure specifikációja alapján van meghatározva. További információ: ECMA C# és Common Language Infrastructure Specifications.
Ahhoz, hogy a futtatókörnyezet szolgáltatásokat biztosíthasson a felügyelt kódhoz, a nyelvfordítóknak metaadatokat kell kibocsátanak, amelyek a kódban szereplő típusokat, tagokat és hivatkozásokat írják le. A metaadatok a kóddal együtt lesznek tárolva; minden betölthető közös nyelvi futtatókörnyezeti hordozható végrehajtható fájl (PE) metaadatokat tartalmaz. A futtatókörnyezet metaadatokat használ az osztályok megkereséséhez és betöltéséhez, a példányok memóriabeli elhelyezéséhez, metódushívások feloldásához, natív kód létrehozásához, a biztonság kikényszerítéséhez és a futásidejű környezet határainak beállításához.
A futtatókörnyezet automatikusan kezeli az objektumelrendezést, és kezeli az objektumokra mutató hivatkozásokat, és felszabadítja őket, amikor már nem használják őket. Az ilyen módon felügyelt élettartamú objektumokat felügyelt adatoknak nevezzük. A szemétgyűjtés kiküszöböli a memóriaszivárgást és más gyakori programozási hibákat. Ha a kód felügyelt, használhat felügyelt, nem felügyelt vagy felügyelt és nem felügyelt adatokat is a .NET-alkalmazásban. Mivel a nyelvfordítók saját típusokat, például primitív típusokat biztosítanak, előfordulhat, hogy nem mindig tudja, vagy tudnia kell, hogy az adatok kezelése folyamatban van-e.
A közös nyelvi futtatókörnyezet megkönnyíti az olyan összetevők és alkalmazások tervezését, amelyek objektumai különböző nyelveken kommunikálnak. A különböző nyelveken írt objektumok kommunikálhatnak egymással, és viselkedésük szorosan integrálható. Definiálhat például egy osztályt, majd egy másik nyelvet használva levezethet egy osztályt az eredeti osztályból, vagy meghívhat egy metódust az eredeti osztályban. Az osztály egy példányát egy másik nyelven írt osztály metódusának is átadhatja. Ez a nyelvközi integráció azért lehetséges, mert a futtatókörnyezetet megcélzó nyelvi fordítók és eszközök a futtatókörnyezet által meghatározott közös típusú rendszert használják. A futtatókörnyezet új típusok meghatározására, valamint a típusok létrehozására, használatára, megőrzésére és kötésére vonatkozó szabályokat követi.
A metaadatok részeként az összes felügyelt összetevő információkat tartalmaz azokról az összetevőkről és erőforrásokról, amelyeken alapultak. A futtatókörnyezet ezeket az információkat használja annak biztosítására, hogy az összetevő vagy az alkalmazás minden szükséges verzióval rendelkezzen, ami miatt a kód kisebb valószínűséggel törik meg a nem megfelelő függőség miatt. A regisztrációs adatok és az állapotadatok már nem tárolódnak a beállításjegyzékben, ahol nehéz lehet létrehozni és karbantartani őket. Ehelyett a kód metaadatként tárolja a definiált típusokkal és azok függőségeivel kapcsolatos információkat. Így az összetevők replikációja és eltávolítása kevésbé bonyolult feladat.
A nyelvi fordítók és eszközök olyan módon teszik elérhetővé a futtatókörnyezet funkcióit, hogy azok hasznosak és intuitívak legyenek a fejlesztők számára. A futtatókörnyezet egyes funkciói észrevehetőbbek lehetnek az egyik környezetben, mint a másikban. A futtatókörnyezet élménye attól függ, hogy milyen nyelvi fordítókat vagy eszközöket használ. Ha például Visual Basic-fejlesztő, észreveheti, hogy a közös nyelvi futtatókörnyezetben a Visual Basic nyelv objektumorientáltabb funkciókkal rendelkezik, mint korábban. A futtatókörnyezet a következő előnyöket biztosítja:
Teljesítménybeli fejlesztések.
A más nyelveken fejlesztett összetevők egyszerű használata.
Az osztálytár által biztosított bővíthető típusok.
Olyan nyelvi funkciók, mint az öröklés, a felületek és a túlterhelés az objektumorientált programozáshoz.
A többszálas és méretezhető alkalmazások létrehozását lehetővé tevő explicit, ingyenes szálkezelés támogatása.
Strukturált kivételkezelés támogatása.
Egyéni attribútumok támogatása.
Szemétgyűjtés.
Delegáltak használata függvénymutatók helyett a nagyobb típusbiztonság és biztonság érdekében. A meghatalmazottakról további információt a Common Type System (Általános típusrendszer) című témakörben talál.
CLR-verziók
A .NET Core és a .NET 5+ kiadások egyetlen termékverzióval rendelkeznek, azaz nincs külön CLR-verzió. A .NET Core-verziók listáját a .NET Core letöltése című témakörben találja.
A .NET-keretrendszer verziószáma azonban nem feltétlenül felel meg az általa tartalmazott CLR verziószámának. A .NET-keretrendszer verziók és a hozzájuk tartozó CLR-verziók listáját .NET-keretrendszer verziók és függőségek című témakörben találja.
Kapcsolódó cikkek
Cím | Leírás |
---|---|
Felügyelt végrehajtási folyamat | A gyakori nyelvi futtatókörnyezet előnyeinek kihasználásához szükséges lépéseket ismerteti. |
Automatikus memóriakezelés | Ismerteti, hogy a szemétgyűjtő hogyan foglalja le és szabadít fel memóriát. |
A .NET-keretrendszer áttekintése | Ismerteti az .NET-keretrendszer legfontosabb fogalmakat, például a közös típusrendszert, a nyelvközi együttműködést, a felügyelt végrehajtást, az alkalmazástartományokat és a szerelvényeket. |
Gyakori típusrendszer | Ismerteti, hogyan deklarálhatók, használhatók és kezelhetők a típusok a futtatókörnyezetben a nyelvközi integráció támogatása érdekében. |