Udostępnij za pośrednictwem


Omówienie udostępniania kodu

W tym dokumencie porównaliśmy różne metody udostępniania kodu między projektami międzyplatformowymi: .NET Standard, Shared Projects i Portable Class Libraries, w tym korzyściami i wadami poszczególnych projektów.

Istnieją trzy metody udostępniania kodu między aplikacjami międzyplatformowymi:

  • Biblioteki .NET Standard — projekty platformy .NET Standard mogą implementować kod, który ma być współużytkowany na wielu platformach i może uzyskiwać dostęp do dużej liczby interfejsów API platformy .NET (w zależności od wersji). .NET Standard 1.0 — 1.6 implementuje stopniowo większe zestawy interfejsów API, a platforma .NET Standard 2.0 zapewnia najlepsze pokrycie listy BCL platformy .NET (w tym interfejsy API platformy .NET dostępne w aplikacjach platformy Xamarin).
  • Projekty udostępnione — użyj typu projektu udostępnionego zasobu, aby zorganizować kod źródłowy i użyć #if dyrektyw kompilatora zgodnie z wymaganiami specyficznymi dla platformy.
  • Przenośne biblioteki klas (przestarzałe) — przenośne biblioteki klas (PCLS) mogą być przeznaczone dla wielu platform ze wspólną powierzchnią interfejsu API i korzystać z interfejsów w celu zapewnienia funkcji specyficznych dla platformy. Listy PCLS są przestarzałe w najnowszych wersjach programu Visual Studio — zamiast tego użyj platformy .NET Standard.

Celem strategii udostępniania kodu jest obsługa architektury pokazanej na tym diagramie, w której można korzystać z jednej bazy kodu na wielu platformach.

Shared code application architecture

W tym artykule porównaliśmy dostępne metody ułatwiające wybór odpowiedniego typu projektu dla aplikacji.

Biblioteki .NET Standard

Biblioteki platformy .NET Standard udostępniają dobrze zdefiniowany zestaw bibliotek klas bazowych, do których można się odwoływać w różnych typach projektów, w tym międzyplatformowych projektów, takich jak Xamarin.Android i Xamarin.iOS. Program .NET Standard 2.0 jest zalecany w celu zapewnienia maksymalnej zgodności z istniejącym kodem programu .NET Framework.

.NET Standard diagram

Świadczenia

  • Umożliwia udostępnianie kodu w wielu projektach.
  • Operacje refaktoryzacji zawsze aktualizują wszystkie odwołania, których dotyczy problem.
  • Większy obszar powierzchni biblioteki klas bazowych platformy .NET (BCL) jest dostępny niż profile PCL. W szczególności platforma .NET Standard 2.0 ma prawie tę samą powierzchnię interfejsu API co program .NET Framework i jest zalecana w przypadku nowych aplikacji i przenoszenia istniejących list PCL.

Wady

  • Nie można użyć dyrektyw kompilatora, takich jak #if __IOS__.

Uwagi

Platforma .NET Standard jest podobna do PCL, ale z prostszym modelem obsługi platformy i większą liczbą klas z listy BCL.

Projekty udostępnione

Udostępnione projekty zawierają pliki kodu i zasoby, które znajdują się w każdym projekcie, który się do nich odwołuje. Udostępnianie projektów nie generuje własnych skompilowanych danych wyjściowych.

Ten zrzut ekranu przedstawia plik rozwiązania zawierający trzy projekty aplikacji (dla systemów Android, iOS i Windows) z udostępnionym projektem zawierającym typowe pliki kodu źródłowego języka C#:

Shared project solution

Architektura koncepcyjna jest pokazana na poniższym diagramie, na którym każdy projekt zawiera wszystkie udostępnione pliki źródłowe:

Shared project diagram

Przykład

Aplikacja dla wielu platform, która obsługuje systemy iOS, Android i Windows, wymaga projektu aplikacji dla każdej platformy. Wspólny kod znajduje się w projekcie udostępnionym.

Przykładowe rozwiązanie będzie zawierać następujące foldery i projekty (nazwy projektów zostały wybrane do wyrażania, projekty nie muszą przestrzegać tych wytycznych dotyczących nazewnictwa):

  • Udostępnione — udostępniony projekt zawierający kod wspólny dla wszystkich projektów.
  • AppAndroid — projekt aplikacji platformy Xamarin.Android.
  • AppiOS — projekt aplikacji platformy Xamarin.iOS.
  • AppWindows — projekt aplikacji systemu Windows.

W ten sposób trzy projekty aplikacji współużytkują ten sam kod źródłowy (pliki C# w udostępnionym). Wszystkie zmiany w kodzie udostępnionym będą współużytkowane we wszystkich trzech projektach.

Świadczenia

  • Umożliwia udostępnianie kodu w wielu projektach.
  • Kod udostępniony może być rozgałęziany na podstawie platformy przy użyciu dyrektyw kompilatora (np. przy użyciu #if __ANDROID__ elementu , zgodnie z opisem w dokumencie Tworzenie aplikacji międzyplatformowych).
  • Projekty aplikacji mogą zawierać odwołania specyficzne dla platformy, których może używać udostępniony kod (na przykład w Community.CsharpSqlite.WP7 przykładzie Tasky dla systemu Windows Telefon).

Wady

  • Refaktoryzacje wpływające na kod wewnątrz dyrektyw kompilatora "nieaktywne" nie spowodują zaktualizowania kodu wewnątrz tych dyrektyw.
  • W przeciwieństwie do większości innych typów projektów udostępniony projekt nie ma zestawu "output". Podczas kompilacji pliki są traktowane jako część projektu odwołującego się i kompilowane w tym zestawie. Jeśli chcesz udostępnić kod jako zestaw, lepszym rozwiązaniem jest biblioteka klas .NET Standard lub Portable Class Libraries.

Uwagi

Dobrym rozwiązaniem dla deweloperów aplikacji jest pisanie kodu przeznaczonego tylko do udostępniania w swojej aplikacji (a nie dystrybucji do innych deweloperów).

Biblioteki klas przenośnych

Napiwek

Biblioteki .NET Standard 2.0 są zalecane w bibliotekach klas przenośnych.

Biblioteki klas przenośnych zostały szczegółowo omówione tutaj.

Portable class library diagram

Świadczenia

  • Umożliwia udostępnianie kodu w wielu projektach.
  • Operacje refaktoryzacji zawsze aktualizują wszystkie odwołania, których dotyczy problem.

Wady

  • Zamiast tego zalecane są biblioteki przestarzałe w najnowszych wersjach programu Visual Studio. Zapoznaj się z tym wyjaśnieniem różnic między językami PCL i .NET Standard.
  • Nie można użyć dyrektyw kompilatora.
  • Tylko podzbiór platformy .NET jest dostępny do użycia, określany przez wybrany profil (zobacz Wprowadzenie do PCL , aby uzyskać więcej informacji).

Uwagi

Szablon PCL jest uważany za przestarzały w najnowszych wersjach programu Visual Studio.

Podsumowanie

Wybrana strategia udostępniania kodu będzie oparta na platformach docelowych. Wybierz metodę, która najlepiej sprawdza się w projekcie.

Platforma .NET Standard jest najlepszym wyborem do tworzenia bibliotek kodu do udostępniania (zwłaszcza publikowania w programie NuGet). Udostępnione projekty działają dobrze dla deweloperów aplikacji, którzy planują używać wielu funkcji specyficznych dla platformy w aplikacjach międzyplatformowych.

Chociaż projekty PCL nadal są obsługiwane w programie Visual Studio, program .NET Standard jest zalecany w przypadku nowych projektów.