Přehled vytváření aplikací pro více platforem

Tato příručka nejprve představuje platformu Xamarin. Probereme, jak návrh aplikace pro více platforem pro maximalizaci opakovaného použití kódu. A nakonec, jak zajistit vysoce kvalitní nativní prostředí na mobilních platformách iOS a Android.

Přístup použitý v tomto dokumentu je možné použít jak pro aplikace produktivity, tak pro herní aplikace, ale zaměřuje se na produktivitu a nástroje (ne herní aplikace). Pokyny Visual Studio Tools for Unity vývoji her pro více platforem najdete v článku o vývoji her pro více platforem.

Fráze "write-once, run everywhere" se často používá k rozšíření výhod jediného základního kódu, který běží nezměněně na více platformách. I když má výhodu opakovaného použití kódu, má tento přístup nevýhody. Dvěma běžnými nevýhodami jsou aplikace, které mají nejnižší sadu funkcí společného jmenovatele, a obecně vypadající uživatelské rozhraní, které není vhodné pro žádnou z cílových platforem.

Xamarin není jen platforma "jednou pro zápis, běží všude", protože jednou z jeho silných stránek je možnost implementovat nativní uživatelská rozhraní specificky pro každou platformu. S promyšleným návrhem je ale stále možné sdílet většinu kódu uživatelského rozhraní a získat to nejlepší z obou světů. Napište kód úložiště dat a obchodní logiky jednou a prezentovat nativní UI na každé platformě. Tento dokument popisuje obecný přístup založený na architektuře k dosažení tohoto cíle.

Tady je souhrn klíčových bodů pro vytváření aplikací xamarinových pro více platforem:

  • Použití jazyka C# – psaní aplikací v jazyce C#. Stávající kód napsaný v jazyce C# lze snadno přepošl do iOS a Androidu pomocí Xamarinu a použít Windows aplikacích.
  • Využití vzorů návrhu MVC nebo MVVM – vyvíjet Uživatelské rozhraní s využitím modelu, zobrazení nebo kontroleru. Návrh aplikace s využitím modelu, zobrazení nebo kontroleru nebo přístupu Modelu/Zobrazení/ViewModel, kde je jasné oddělení mezi modelem a zbytkem. Určete, které části aplikace budou používat prvky nativního uživatelského rozhraní jednotlivých platforem (iOS, Android, Windows, Mac), a použijte je jako vodítko k rozdělení aplikace do dvou komponent: "Core" a "User-Interface".
  • Vytváření nativních uživatelských rozhraní – Každá aplikace specifická pro operační systém poskytuje jinou vrstvu uživatelského rozhraní (implementovaná v jazyce C# s pomocí nativních nástrojů pro návrh uživatelského rozhraní):
  1. V iOSu můžete pomocí rozhraní API UIKitu vytvářet nativní aplikace s použitím scénářů pro prezentační vrstvu vytvořených v Xcode.
  2. V Androidu použijte Android.Views k vytváření nativních aplikací, které využívají návrháře uživatelského rozhraní Xamarinu.
  3. Na Windows budete používat XAML pro prezentační vrstvu vytvořenou v Visual Studio nebo návrháři uživatelského rozhraní Blendu.
  4. Na Macu použijete Scénáře pro prezentační vrstvu vytvořenou v Xcode.

Projekty Xamarin.Forms jsou podporované na všech platformách a umožňují vytvářet uživatelská rozhraní, která lze sdílet napříč platformami pomocí Xamarin.Forms XAML.

Množství opětovného použití kódu bude z velké části záviset na tom, kolik kódu se bude uchovávat ve sdíleném jádru a kolik kódu je specifické pro uživatelské rozhraní. Základním kódem je cokoli, co přímo s uživatelem interaguje, ale místo toho poskytuje služby pro části aplikace, které budou tyto informace shromažďovat a zobrazovat.

Pokud chcete zvýšit množství opětovného použití kódu, můžete přijmout komponenty pro více platforem, které poskytují společné služby napříč všemi těmito systémy, jako jsou:

  1. SQLite-net pro místní SQL úložiště,
  2. Moduly plug-in Xamarin pro přístup k funkcím specifickým pro zařízení, včetně fotoaparátu, kontaktů a geografické polohy
  3. NuGet balíčky, které jsou kompatibilní s projekty Xamarin, například Json.NET,
  4. Použití funkcí rozhraní .NET Framework pro sítě, webové služby, V/V a další

Některé z těchto komponent jsou implementovány v případové studii Tasky.

Oddělení znovu použitelného kódu do základní knihovny

Když využijete princip rozdělení zodpovědnosti vrstvením architektury aplikace a následně přesunete základní funkce, které jsou na platformě agnostické, do znovu použitelné základní knihovny, můžete maximalizovat sdílení kódu napříč platformami, jak ukazuje následující obrázek:

Když budete v souladu s principem oddělení zodpovědnosti vrstvením architektury aplikace a následně přesunete základní funkce, které jsou na platformě agnostické, do znovu použitelné základní knihovny, můžete maximalizovat sdílení kódu napříč platformami.

Případové studie

Existuje jedna případová studie, která doprovází tento dokument – Tasky Pro. Každá případová studie se zabývá implementací konceptů popsaných v tomto dokumentu v příkladu z reálného světa. Kód je open source dostupný na GitHubu.