建置跨平臺應用程式概觀

本指南會先介紹 Xamarin 平臺。 其將討論如何建構跨平臺應用程式,以將程式代碼重複使用最大化。 最後,如何在iOS和Android行動平臺上提供高品質的原生體驗。

本檔中使用的方法可用於生產力應用程式和遊戲應用程式,但重點是生產力和公用程式(非遊戲應用程式)。 如需跨平臺遊戲開發指引,請參閱 Visual StudioTools for Unity

「寫入一次,隨處執行」一詞通常用來列舉在多個平台上執行未修改的單一程式代碼基底的優點。 雖然它具有重複使用程式代碼的優點,但該方法有缺點。 兩個常見的缺點是具有最低通用分母功能集的應用程式,以及不適合任何目標平臺的泛型使用者介面。

Xamarin 不只是「寫入一次,隨處執行」平臺,因為它的優點之一是能夠針對每個平台實作原生使用者介面。 不過,使用深思熟慮的設計,仍然可以共用大部分的非使用者介面程序代碼,並充分利用兩個世界。 撰寫您的數據記憶體和商業規則程式代碼一次,並在每個平台上呈現原生 UI。 本文件討論達成此目標的一般架構方法。

以下是建立 Xamarin 跨平臺應用程式的關鍵點摘要:

  • 使用 C# - 使用 C# 撰寫您的應用程式。 使用 C# 撰寫的現有程式代碼可以使用 Xamarin 輕鬆地移植到 iOS 和 Android,並在 Windows 應用程式中使用。
  • 使用MVC或MVVM設計模式 - 使用模型/檢視/控制器模式開發應用程式的使用者介面。 使用模型/檢視/控制器方法或模型/檢視/ViewModel 方法來建構您的應用程式,其中「模型」與其餘方法之間有清楚的分隔。 判斷應用程式的哪個部分將使用每個平臺的原生使用者介面元素(iOS、Android、Windows、Mac),並以此作為將應用程式分割成兩個元件的指導方針:“Core” 和 “User-Interface”。
  • 建置原生 UI - 每個 OS 特定應用程式都會提供不同的使用者介面層(在 C# 中實作,並協助原生 UI 設計工具):
  1. 在 iOS 上,使用 UIKit API 來建立原生應用程式,並使用 Xcode 中建立之呈現層的分鏡腳本。
  2. 在 Android 上,使用 Android.Views 來建立原生外觀的應用程式,並利用 Xamarin 的 UI 設計工具。
  3. 在 Windows 上,您將針對在 Visual Studio 或 Blend 的 UI 設計工具中建立的簡報層使用 XAML。
  4. 在 Mac 上,您將針對以 Xcode 建立的呈現層使用分鏡腳本。

所有平臺上都支援 Xamarin.Forms 專案,並可讓您建立可使用 Xamarin.Forms XAML 跨平臺共用的使用者介面。

重複使用程式代碼的數量在很大程度上取決於共用核心中保留多少程序代碼,以及有多少程式代碼是使用者介面特定的。 核心程式代碼是不會直接與用戶互動的任何專案,而是會為將收集和顯示此資訊的應用程式部分提供服務。

若要增加重複使用程式碼的數量,您可以採用跨平台元件,在所有這些系統中提供一般服務,例如:

  1. 本機 SQL 記憶體的 SQLite-net
  2. 用於存取裝置特定功能的 Xamarin 外掛程式 ,包括相機、聯繫人和地理位置,
  3. 與 Xamarin 專案相容的 NuGet 套件,例如 Json.NET
  4. 使用 .NET Framework 功能進行網路功能、Web 服務、IO 等等。

其中一些元件會在Tasky案例研究中實作。

將可重複使用的程式代碼分成核心連結庫

藉由遵循將應用程式架構分層,然後將不受平臺限制的核心功能移至可重複使用的核心連結庫,即可將跨平臺的程式碼共用最大化,如下圖所示:

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

案例研究

本文件隨附一個案例研究 – Tasky Pro。 每個案例研究都會討論本檔中概述的概念實作,以真實世界為例。 程序代碼 開放原始碼,且可在 github取得。