Knihovny tříd .NET
Knihovny tříd jsou konceptem sdílené knihovny pro .NET. Umožňují komponentizovat užitečné funkce do modulů, které mohou používat více aplikací. Lze je také použít jako způsob načítání funkcí, které nejsou potřeba nebo nejsou známé při spuštění aplikace. Knihovny tříd jsou popsány pomocí formátu souboru sestavení .NET.
Existují tři typy knihoven tříd, které můžete použít:
- Knihovny tříd specifické pro konkrétní platformu mají přístup ke všem rozhraním API v dané platformě (například rozhraní .NET Framework ve Windows, Xamarin iOS), ale můžou je používat jenom aplikace a knihovny, které tuto platformu cílí.
- Přenosné knihovny tříd mají přístup k podmnožině rozhraní API a mohou je používat aplikace a knihovny, které cílí na více platforem.
- Knihovny tříd .NET Standard jsou sloučením konceptů specifických pro platformu a přenosnou knihovnou do jednoho modelu, který poskytuje to nejlepší z obou.
Knihovny tříd specifických pro platformu
Knihovny specifické pro platformu jsou vázané na jednu platformu .NET (například rozhraní .NET Framework ve Windows) a mohou proto významně záviset na známém spouštěcím prostředí. Takové prostředí zveřejňuje známou sadu rozhraní API (.NET a rozhraní API operačního systému) a udržuje a zveřejňuje očekávaný stav (například registr Windows).
Vývojáři, kteří vytvářejí knihovny specifické pro platformu, můžou plně využít základní platformu. Knihovny se budou spouštět pouze na dané platformě, takže kontroly platforem nebo jiné formy podmíněného kódu nepotřebné (modulo single sourcing code pro více platforem).
Knihovny specifické pro platformu jsou typem knihovny primární třídy pro rozhraní .NET Framework. I když se objevily další implementace .NET, knihovny specifické pro platformu zůstaly dominantním typem knihovny.
Přenosné knihovny tříd
Přenosné knihovny jsou podporovány v několika implementacích .NET. Stále můžou využívat závislosti na známém spouštěcím prostředí, ale prostředí je syntetické prostředí, které je generováno průnikem sady konkrétních implementací .NET. Vystavená rozhraní API a předpoklady platformy jsou podmnožinou toho, co by bylo dostupné pro knihovnu specifickou platformou.
Při vytváření přenosné knihovny zvolíte konfiguraci platformy. Konfigurace platformy je sada platforem, které potřebujete podporovat (například .NET Framework 4.5+, Windows Telefon 8.0+). Čím víceplatforchm platformám, tím méně rozhraní API a méně předpokladů platformy, které můžete provést, je nejnižším společným jmenovatelem. Tato charakteristika může být zpočátku matoucí, protože lidé si často myslí, že "více je lepší", ale zjistí, že více podporovaných platforem vede k menšímu počtu dostupných rozhraní API.
Mnoho vývojářů knihoven přešlo z vytváření více knihoven specifických pro platformu z jednoho zdroje (pomocí direktiv podmíněné kompilace) na přenosné knihovny. Existuje několik přístupů pro přístup k funkcím specifickým pro platformu v rámci přenosných knihoven, přičemž v tuto chvíli je nejakceptovanější technikou bait-and-switch.
Knihovny tříd .NET Standard
Knihovny .NET Standard nahrazují koncepty knihoven specifických pro platformu a přenosné knihovny. Jsou specifické pro danou platformu v tom smyslu, že zpřístupňují všechny funkce z podkladové platformy (žádné syntetické platformy ani průniky platforem). Jsou přenosné v tom smyslu, že pracují na všech podpůrných platformách.
.NET Standard zveřejňuje sadu kontraktů knihovny. Implementace .NET musí podporovat všechny kontrakty plně nebo vůbec. Každá implementace proto podporuje sadu kontraktů .NET Standard. Zápis spočívá v tom, že každá knihovna tříd .NET Standard je podporovaná na platformách, které podporují závislosti kontraktů.
.NET Standard nezpřístupňuje všechny funkce rozhraní .NET Framework (ani není cílem), ale knihovny zpřístupňují mnohem více rozhraní API než přenosné knihovny tříd.
Následující implementace podporují knihovny .NET Standard:
- .NET Core
- .NET Framework
- Mono
- Univerzální platforma Windows (UPW)
Další informace naleznete v tématu .NET Standard.
Knihovny mono tříd
Knihovny tříd jsou podporovány v mono, včetně tří typů knihoven popsaných výše. Mono se často považuje za multiplatformní implementaci rozhraní .NET Framework. Zčásti je to proto, že knihovny rozhraní .NET Framework specifické pro platformu mohou běžet v modulu runtime Mono bez úprav nebo rekompilace. Tato charakteristika byla zavedená před vytvořením přenosných knihoven tříd, takže byla zřejmé, že jde o možnost binární přenositelnosti mezi rozhraním .NET Framework a Mono (i když fungovala pouze v jednom směru).