Biblioteki klas .NET
Biblioteki klas to koncepcja biblioteki udostępnionej dla platformy .NET. Umożliwiają one tworzenie składników przydatnych funkcji w modułach, które mogą być używane przez wiele aplikacji. Mogą być one również używane jako środek ładowania funkcji, które nie są potrzebne lub nie są znane podczas uruchamiania aplikacji. Biblioteki klas są opisywane przy użyciu formatu pliku zestawu .NET.
Istnieją trzy typy bibliotek klas, których można użyć:
- Biblioteki klas specyficzne dla platformy mają dostęp do wszystkich interfejsów API na danej platformie (na przykład .NET Framework w systemie Windows, Xamarin iOS), ale mogą być używane tylko przez aplikacje i biblioteki przeznaczone dla tej platformy.
- Przenośne biblioteki klas mają dostęp do podzbioru interfejsów API i mogą być używane przez aplikacje i biblioteki przeznaczone dla wielu platform.
- Biblioteki klas platformy .NET Standard to połączenie koncepcji bibliotek specyficznej dla platformy i biblioteki przenośnej w jeden model, który zapewnia najlepsze z obu tych rozwiązań.
Biblioteki klas specyficzne dla platformy
Biblioteki specyficzne dla platformy są powiązane z jedną platformą .NET (na przykład .NET Framework w systemie Windows) i dlatego mogą mieć znaczące zależności od znanego środowiska wykonawczego. Takie środowisko uwidacznia znany zestaw interfejsów API (.NET i interfejsów API systemu operacyjnego) oraz utrzymuje i uwidacznia oczekiwany stan (na przykład rejestr systemu Windows).
Deweloperzy, którzy tworzą biblioteki specyficzne dla platformy, mogą w pełni wykorzystać podstawową platformę. Biblioteki będą uruchamiane tylko na danej platformie, co sprawia, że kontrole platformy lub inne formy kodu warunkowego są niepotrzebne (modulo pojedynczy kod określania źródła dla wielu platform).
Biblioteki specyficzne dla platformy były podstawowym typem biblioteki klas dla programu .NET Framework. Nawet gdy pojawiły się inne implementacje platformy .NET, biblioteki specyficzne dla platformy pozostały dominującym typem biblioteki.
Przenośne biblioteki klas
Biblioteki przenośne są obsługiwane w wielu implementacjach platformy .NET. Nadal mogą przyjmować zależności od znanego środowiska wykonawczego, jednak środowisko jest syntetyczne, które jest generowane przez skrzyżowanie zestawu konkretnych implementacji platformy .NET. Uwidocznione interfejsy API i założenia dotyczące platformy są podzbiorem tego, co byłoby dostępne dla biblioteki specyficznej dla platformy.
Podczas tworzenia przenośnej biblioteki należy wybrać konfigurację platformy. Konfiguracja platformy to zestaw platform, które należy obsługiwać (na przykład .NET Framework 4.5+, Windows Telefon 8.0+). Tym więcej platform, które chcesz obsługiwać, tym mniej interfejsów API i mniejsze założenia platformy, które można wykonać, jest najniższym wspólnym mianownikiem. Ta cecha może być na początku myląca, ponieważ ludzie często myślą, że "więcej jest lepsze", ale okaże się, że bardziej obsługiwane platformy skutkują mniejszą liczbą dostępnych interfejsów API.
Wielu deweloperów bibliotek przełączyło się z tworzenia wielu bibliotek specyficznych dla platformy z jednego źródła (przy użyciu dyrektyw kompilacji warunkowej) do bibliotek przenośnych. Istnieje kilka podejść do uzyskiwania dostępu do funkcji specyficznych dla platformy w bibliotekach przenośnych, przy czym przynęta i przełącznik są obecnie najbardziej akceptowaną techniką.
Biblioteki klas platformy .NET Standard
Biblioteki .NET Standard zastępują koncepcje bibliotek specyficznych dla platformy i bibliotek przenośnych. Są one specyficzne dla platformy w tym sensie, że uwidaczniają wszystkie funkcje platformy bazowej (nie są to platformy syntetyczne ani skrzyżowania platform). Są przenośne w tym sensie, że działają na wszystkich platformach pomocniczych.
Platforma .NET Standard uwidacznia zestaw kontraktów biblioteki. Implementacje platformy .NET muszą obsługiwać każdy kontrakt w pełni lub w ogóle nie. W związku z tym każda implementacja obsługuje zestaw kontraktów .NET Standard. Rolą rolą jest to, że każda biblioteka klas platformy .NET Standard jest obsługiwana na platformach, które obsługują jej zależności kontraktowe.
Platforma .NET Standard nie uwidacznia całej funkcjonalności programu .NET Framework (ani nie jest celem), jednak biblioteki uwidaczniają o wiele więcej interfejsów API niż przenośne biblioteki klas.
Następujące implementacje obsługują biblioteki .NET Standard:
- .NET Core
- .NET Framework
- Mono
- Platforma uniwersalna systemu Windows (UWP)
Aby uzyskać więcej informacji, zobacz .NET Standard.
Biblioteki klas mono
Biblioteki klas są obsługiwane w witrynie Mono, w tym w trzech typach bibliotek opisanych wcześniej. Mono jest często postrzegany jako implementacja międzyplatformowa programu .NET Framework. Częściowo jest to spowodowane tym, że biblioteki .NET Framework specyficzne dla platformy mogą być uruchamiane w środowisku uruchomieniowym Mono bez modyfikacji lub ponownej kompilacji. Ta cecha miała miejsce przed utworzeniem przenośnych bibliotek klas, więc był oczywistym wyborem umożliwiającym przenośność binarną między platformą .NET Framework i mono (chociaż działała tylko w jednym kierunku).