Udostępnij za pośrednictwem


Omówienie tworzenia aplikacji międzyplatformowych

W tym przewodniku przedstawiono najpierw platformę Xamarin. Omówi on sposób tworzenia architektury aplikacji międzyplatformowej w celu zmaksymalizowania ponownego użycia kodu. Na koniec, jak zapewnić wysokiej jakości środowisko natywne na platformach mobilnych iOS i Android.

Podejście używane w tym dokumencie może służyć zarówno dla aplikacji zwiększających produktywność, jak i aplikacji do gier, jednak koncentruje się na produktywności i narzędziu (aplikacje inne niż gry). Zobacz Visual Studio Tools for Unity , aby uzyskać wskazówki dotyczące tworzenia gier międzyplatformowych.

Fraza "write-once, runwhere" jest często używana do wychwytywać zalety pojedynczej bazy kodu, która działa niezmodyfikowane na wielu platformach. Chociaż ma ona korzyść z ponownego użycia kodu, takie podejście ma wady. Dwie typowe wady to aplikacje, które mają najniższy wspólny mianownik zestawu funkcji, oraz ogólny interfejs użytkownika, który nie pasuje ładnie do żadnej z platform docelowych.

Platforma Xamarin nie jest tylko "jednorazowym zapisem, uruchamiana wszędzie", ponieważ jedną z jego zalet jest możliwość implementowania natywnych interfejsów użytkownika przeznaczonych specjalnie dla każdej platformy. Jednak z przemyślanym projektem nadal można udostępniać większość kodu interfejsu użytkownika i uzyskać najlepsze z obu światów. Zapisz raz magazyn danych i kod logiki biznesowej oraz przedstawić natywne interfejsy użytkownika na każdej platformie. W tym dokumencie omówiono ogólne podejście architektoniczne do osiągnięcia tego celu.

Oto podsumowanie najważniejszych punktów tworzenia aplikacji międzyplatformowych platformY Xamarin:

  • Korzystanie z języka C# — pisanie aplikacji w języku C#. Istniejący kod napisany w języku C# można łatwo przenosić do systemów iOS i Android przy użyciu platformy Xamarin i używać ich w aplikacjach systemu Windows.
  • Korzystanie z wzorców projektowych MVC lub MVVM — twórz interfejs użytkownika aplikacji przy użyciu wzorca Model/View/Controller. Utwórz architekturę aplikacji przy użyciu podejścia model/widoku/kontrolera lub podejścia Model/Widok/Model/ViewModel, w którym istnieje wyraźna separacja między modelem a resztą. Ustal, które części aplikacji będą używać natywnych elementów interfejsu użytkownika każdej platformy (iOS, Android, Windows, Mac), i użyj jej jako wskazówek, aby podzielić aplikację na dwa składniki: "Core" i "User-Interface".
  • Tworzenie natywnych interfejsów użytkownika — każda aplikacja specyficzna dla systemu operacyjnego udostępnia inną warstwę interfejsu użytkownika (zaimplementowaną w języku C# przy użyciu natywnych narzędzi projektowych interfejsu użytkownika):
  1. W systemie iOS użyj interfejsów API zestawu UIKit, aby utworzyć aplikacje z wyglądem natywnym przy użyciu scenorysów dla warstwy prezentacji utworzonej w środowisku Xcode.
  2. W systemie Android użyj funkcji Android.Views, aby utworzyć aplikacje w wyglądzie natywnym, korzystając z projektanta interfejsu użytkownika platformy Xamarin.
  3. W systemie Windows będziesz używać języka XAML na potrzeby warstwy prezentacji utworzonej w programie Visual Studio lub projektancie interfejsu użytkownika programu Blend.
  4. Na komputerze Mac użyjesz scenorysów dla warstwy prezentacji utworzonej w środowisku Xcode.

Projekty platformy Xamarin.Forms są obsługiwane na wszystkich platformach i umożliwiają tworzenie interfejsów użytkownika, które można udostępniać na różnych platformach przy użyciu języka XAML zestawu narzędzi Xamarin.Forms.

Ilość ponownego użycia kodu będzie zależeć w dużej mierze od ilości kodu przechowywanego w udostępnionym rdzeniu i ilości kodu specyficznego dla interfejsu użytkownika. Podstawowy kod to wszystko, co nie współdziała bezpośrednio z użytkownikiem, ale zamiast tego udostępnia usługi dla części aplikacji, które będą zbierać i wyświetlać te informacje.

Aby zwiększyć ilość ponownego użycia kodu, można wdrożyć międzyplatformowe składniki, które zapewniają wspólne usługi we wszystkich tych systemach, takich jak:

  1. SQLite-net dla lokalnego magazynu SQL,
  2. Wtyczki platformy Xamarin do uzyskiwania dostępu do funkcji specyficznych dla urządzenia, w tym aparatu, kontaktów i geolokalizacji,
  3. Pakiety NuGet zgodne z projektami platformy Xamarin, takie jak Json.NET,
  4. Korzystanie z funkcji platformy .NET Framework dla sieci, usług internetowych, operacji we/wy i innych.

Niektóre z tych składników są implementowane w analizie przypadku Tasky .

Oddzielanie kodu wielokrotnego użytku do podstawowej biblioteki

Postępując zgodnie z zasadą rozdzielenia odpowiedzialności przez warstwowanie architektury aplikacji, a następnie przeniesienie podstawowych funkcji, które są niezależne od platformy do podstawowej biblioteki wielokrotnego użytku, można zmaksymalizować udostępnianie kodu na różnych platformach, jak pokazano na poniższym rysunku:

By following the principle of separation of responsibility by layering your application architecture and then moving core functionality that is platform agnostic into a reusable core library, you can maximize code sharing across platforms

Analizy przypadków

Istnieje jedna analiza przypadku, która towarzyszy temu dokumentowi — Tasky Pro. Każda analiza przypadku omawia implementację pojęć opisanych w tym dokumencie w rzeczywistym przykładzie. Kod jest typu open source i dostępny w witrynie github.