Přehled vytváření multiplatformních aplikací

Tato příručka poprvé představuje platformu Xamarin. Probereme, jak navrhovat multiplatformní aplikaci pro maximalizaci opakovaného použití kódu. Nakonec, jak zajistit vysoce kvalitní nativní prostředí na mobilních platformách iOS a Android.

Přístup použitý v tomto dokumentu se dá použít jak pro kancelářské aplikace, tak pro herní aplikace, ale zaměření je na produktivitu a nástroj (jiné než herní aplikace). Pokyny k vývoji her pro různé platformy najdete v nástrojích Visual Studio Tools for Unity .

Fráze "write-once, run everywhere" se často používá k vydírání předností jediného základu kódu, který běží beze změny na více platformách. I když má výhodu opětovného použití kódu, má tento přístup nevýhody. Dvěma běžnými nevýhodami jsou aplikace, které mají sadu funkcí jmenovatele nejnižšího společného jmenovatele, a obecné uživatelské rozhraní, které se pěkně nevejde do žádné z cílových platforem.

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

Tady je souhrn klíčových bodů pro vytváření multiplatformních aplikací Xamarinu:

  • Použití jazyka C# – Psaní aplikací v jazyce C#. Stávající kód napsaný v jazyce C# je možné snadno přenést do iOS a Androidu pomocí Xamarinu a používat ho v aplikacích pro Windows.
  • Využijte vzory návrhu MVC nebo MVVM – Vyvíjejte uživatelské rozhraní vaší aplikace pomocí vzoru Model/View/Controller. Návrh aplikace pomocí přístupu modelu, zobrazení nebo kontroleru nebo přístupu Model/ViewModel, kde je jasné oddělení mezi modelem a zbytkem. Určete, které části aplikace budou používat nativní prvky 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í (implementovanou v jazyce C# pomocí nativních nástrojů pro návrh uživatelského rozhraní):
  1. V iOSu můžete pomocí rozhraní API UIKit vytvářet nativní aplikace využívající scénáře pro prezentační vrstvu vytvořenou v Xcode.
  2. V Androidu můžete pomocí Android.Views vytvářet nativní aplikace s využitím návrháře uživatelského rozhraní Xamarinu.
  3. Ve Windows budete používat XAML pro prezentační vrstvu vytvořenou v návrháři uživatelského rozhraní sady Visual Studio nebo Blendu.
  4. Na Macu použijete scénáře pro prezentační vrstvu vytvořenou v Xcode.

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

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

Pokud chcete zvýšit množství opětovného použití kódu, můžete přijmout multiplatformní komponenty, které poskytují běžné služby ve všech těchto systémech, jako například:

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

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

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

Podle principu oddělení odpovědnosti vrstvením architektury aplikace a následným přesunem základních funkcí, které jsou nezávislé na platformě, do opakovaně použitelné základní knihovny můžete maximalizovat sdílení kódu napříč platformami, jak znázorňuje následující obrázek:

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

Případové studie

Existuje jedna případová studie, která doprovází tento dokument – Tasky Pro. Každá případová studie popisuje implementaci konceptů popsaných v tomto dokumentu v reálném příkladu. Kód je opensourcový a dostupný na GitHubu.