.NET-osztálykódtárak
Az osztálykódtárak a .NET
Az osztálykódtárak háromféleképpen használhatók:
- platformspecifikus osztálykódtárak hozzáféréssel rendelkeznek az adott platform összes API-jához (például Windows rendszeren futó .NET-keretrendszerhez), de csak azokat az alkalmazásokat és kódtárakat használhatják, amelyek ezt a platformot célozzák.
- Hordozható osztálykönyvtárak az API-k egy részhalmazához férnek hozzá, és használhatók több platformot megcélozó alkalmazások és könyvtárak által.
- .NET Standard osztálykódtárak a platformspecifikus és a hordozható kódtár koncepciójának egyetlen modellbe való összevonását képezik, amely mindkettő közül a legjobbat biztosítja.
Platformspecifikus osztálykódtárak
A platformspecifikus kódtárak egyetlen .NET-platformhoz vannak kötve (például Windowson a .NET-keretrendszerhez), ezért jelentős függőségeket okozhatnak egy ismert végrehajtási környezetben. Egy ilyen környezet egy ismert API-halmazt (.NET és OS API-kat) tesz elérhetővé, és fenntartja és elérhetővé teszi a várt állapotot (például Windows-beállításjegyzéket).
A platformspecifikus kódtárakat létrehozó fejlesztők teljes mértékben kihasználhatják az alapul szolgáló platformot. A kódtárak mindig csak ezen a platformon futnak, így a platformellenőrzések vagy a feltételes kód egyéb formái szükségtelenek lesznek (modulo egyetlen forráskód több platformhoz).
A .NET-keretrendszer elsődleges osztálykönyvtártípusa a platformspecifikus kódtárak voltak. A többi .NET-implementáció megjelenésével a platformspecifikus kódtárak továbbra is a domináns kódtártípus maradnak.
Hordozható osztálykönyvtárak
A hordozható kódtárak több .NET-implementációban is támogatottak. Továbbra is függőségeket vehetnek fel egy ismert végrehajtási környezethez, azonban a környezet egy szintetikus, amelyet konkrét .NET-implementációk metszéspontja generál. A közzétett API-k és platformfeltevések a platformspecifikus kódtárak számára elérhető részhalmazok.
Hordozható kódtár létrehozásakor platformkonfigurációt kell választania. A platformkonfiguráció azoknak a platformoknak a készlete, amelyeket támogatnia kell (például .NET-keretrendszer 4.5+, Windows Phone 8.0+). Minél több platformot támogat, annál kevesebb API-t és kevesebb platformfeltevést tehet, így az a legalacsonyabb közös nevező. Ez a jellemző elsőre zavaró lehet, mivel az emberek gyakran azt gondolják, hogy "több jobb", de azt tapasztalják, hogy a támogatott platformok kevesebb elérhető API-t eredményeznek.
Számos könyvtárfejlesztő váltott át több platformspecifikus kódtár létrehozására egy forrásból (feltételes fordítási irányelvek használatával) hordozható kódtárakra. A hordozható kódtárak platformspecifikus funkcióinak elérésére számos megközelítés, amelyek közül jelenleg a csali és a kapcsoló a legelfoglaltabb technika.
.NET Standard osztálykódtárak
A .NET Standard kódtárak a platformspecifikus és a hordozható kódtárak fogalmait helyettesítik. Platformspecifikusak abban az értelemben, hogy az alapul szolgáló platform minden funkcióját elérhetővé teszik (nincsenek szintetikus platformok vagy platformkereszteződések). Hordozhatóak abban az értelemben, hogy minden támogató platformon működnek.
A .NET Standard tárak szerződésekteszi elérhetővé. A .NET-implementációknak minden szerződést teljes egészében vagy egyáltalán nem kell támogatniuk. Ezért minden implementáció támogatja a .NET Standard szerződések készletét. A következmény az, hogy minden .NET Standard osztálykönyvtár támogatott azokon a platformokon, amelyek támogatják a szerződéses függőségeit.
A .NET Standard nem teszi elérhetővé a .NET-keretrendszer teljes funkcionalitását (és nem is ez a cél), a tárak azonban sokkal több API-t tesznek elérhetővé, mint a hordozható osztálykódtárak.
A következő implementációk támogatják a .NET Standard kódtárakat:
- .NET Core
- .NET-keretrendszer
- Mono
- Univerzális Windows-platform (UWP)
További információ: .NET Standard.
Mono osztálykódtárak
Az osztálykódtárak támogatottak a Mono szolgáltatásban, beleértve a korábban ismertetett három tártípust is. A Mono-t gyakran a .NET-keretrendszer platformfüggetlen implementációjának tekintik. Ennek részben az az oka, hogy a platformspecifikus .NET-keretrendszer-kódtárak módosítás vagy újrafordítás nélkül futtathatók a Mono futtatókörnyezetben. Ez a jellemző a hordozható osztálykódtárak létrehozása előtt volt érvényben, így nyilvánvaló választás volt a bináris hordozhatóság engedélyezése a .NET-keretrendszer és a Mono között (bár csak egy irányba működött).