問題:我該選擇原生方式開發還是 Xamarin.Forms 的專案開發
這個需要視您的行動專案應用程式需求而定,當我們選擇了 Xamarin.Forms 形式來進行跨平台專案開發的時候,我們僅需要設計一套 UI 標記宣告與一個商業邏輯的C# 程式代碼,如此,我們就可以同時在 Xamarin.iOS & Xamarin.Android 專案中使用剛剛設計出來的 UI與商業邏輯,根據我這裡實際幫客戶進行專案開發的經驗,一個約採用了50個以上頁面的 Xamarin.Forms 專案,具備了 RESTful Web API 呼叫、推播等機制,共用程式碼的部分可以達到 96% 以上,上下的 4% 僅需要分別在 Xamarin.iOS & Xamarin.Android 原生專案內進行設計,這樣可以大幅提升同時開發兩個平台的應用程式開發效率,而且,最重的是,當應用程式的頁面或者商業邏輯發生了問題,我們也僅需要再 Xamarin.Forms 專案內進行修正,這樣,兩個平台的應用程式經過重新建置之後,就都修復掉了這些問題。
若我們採用原生方式進行開發跨平台應用程式專案, Xamarin.iOS & Xamarin.Android , 此時,關於採用 C# 設計出來的商業邏輯部分,可以分別共用於 Xamarin.iOS & Xamarin.Android 原生專案內,不過,關於 UI 的部分,我們就需要分別在 Xamarin.iOS 原生專案中,使用 Xcode 的 Storyboard 的方式進行設計,這部分可以參考 iOS 使用者介面;而在 Xamarin.Android 原生專案中,需要使用 Android UI XML 的指定語法來定義,這部分可以參考 Android 使用者介面。換言之,您需要分別在這兩個 iOS & Android 原生平台下,精通這兩個平台的 SDK 說明文件,了解如何設計個平台的專屬 UI 頁面。不過,在 Xamarin.Forms 下,您僅需要使用標記宣告的 XAML 語法,來定義出該應用程式頁面所需呈現的 UI/UX 內容,無須了解每個平台專屬 UI 設計知識。
不過,這不代表 Xamarin.Forms 可以適合開發出各種跨平台應用的程式,若您的程式需要存取大量或者深入的原聲平台 API、需要使用到每個平台的專屬原生行為、您的應用程式對於客製化 UI 的需求比起要更多的程式碼分享需求更為迫切,則,您是不適合選擇 Xamarin.Forms 技術來進行跨平台專案開發;例如,您想要開發出虛擬實際 VR / 擴增實境 AR 應用的程式、多媒體影音的應用、需要使用地圖介面,但是要提供更加多的視覺設計,類似寶可夢抓寶那樣的情境、手機遊戲等等,這些情境都不適合選擇採用 Xamarin.Forms 的開發技術。
不過,對於想要在企業內部導入 Xamarin 開發技術,並且開發出相關企業內部想要使用的應用程式、手機購物應用程式等等,這些情境是絕對適合採用 Xamarin.Forms 的技術來進行開發,尤其是企業內部使用的行動應用程式,選擇採用 Xamarin.Forms 是您唯一的選擇,而且是最好的選擇。
最後,在進行專案開發之前,請務必進行分析您的應用程式類型,是否真的適合使用 Xamarin.Forms 方式來進行開發,否則,當您頭髮已經剪好了而且頭洗了一半,這個時候您才想要說,我是要我的頭髮燙成捲髮模式,此時,我的良心建議是,使用 Xamarin 猿聲專案模式進行開發吧,最起碼,您的商業邏輯部分,您不需要重新再寫一次,您僅需要針對每個平台的所有頁面 UI,使用原生 SDK 的說明,重新設計一次即可。
問題:我在 Xamarin.Forms 上進行開發,一定要使用 XAML 嗎?
關於這部分的問題,個人強烈建議要使用 XAML 來進行每個頁面的 UI 設計,並且選擇採用 MVVM 設計模式來進行關注點分離的開發;不過,任何的 XAML 的標記或者宣告,都可以使用 C# 程式語言來進行開發,您當然也可以不需要使用到任何 XAML 技術,自行使用 C# 程式語言來進行開發出 Xamarin.Forms 的跨平台應用程式。
對於 MVVM vs Code Behind 開發方式選擇,個人偏向強烈建議使用 MVVM 方式來進行開發,並且選擇一個好的 MVVM Framework 框架,幫助我們簡化 MVVM 的使用;我都是採用 Prism 這個開發框架,來進行 Xamarin.Forms 的專案設計。當然,青菜蘿蔔各有所好,市面上還有許多相當優異的 MVVM Framework 框架您可以選擇的。
關於更多關於一些 Xamarin.Forms 開發上的疑問,可以參考 Xamarin / Xamarin.Forms 行動跨平台 Mobile Cross-Platform 開發學習指引問答集 FAQ
Xamarin.Forms 的教育訓練課程
在下圖中,我列出了當您在進行 Xamarin.Forms 專案開發的過程中,您需要了解與會遇到的設計情境與需求,您可以挑選則您可能需要、預期的項目,開始進行了解與研究,不過,當您真的實際開始進行 Xamarin.Forms 專案開發的時候,將會遇到這張圖上所遇到的許多項目。
若您想要選擇使用 Xamarin.Forms 的方式來進行跨平台行動專案的開發,這裡提供幾個關於 Xamarin.Forms 的學習資源與教育訓練課程
- 開始使用 Xamarin.Forms (微軟官方文件)這裡是微軟官方的各種關於 Xamarin.Forms 的說明文件,這裡有著您在使用 Xamarin 工具集進行開發的時候,所需要具備的知識與技能、進階開發技巧、各種說明範例應用,都有著相當豐富的內容。各位可以參考 開始使用 Xamarin.Forms
- Xamarin.Forms 跨平台行動應用程式開發實戰本次課程包含超過4個小時的先修錄影課程、 一堂 1 小時的線上課程 與 五天共 35 小時的實體課程,將會帶領大家快速上手 Xamarin.Forms 開發工具,您將會認識 Xamarin 開發環境,了解使用 Xamarin.Forms 開發工具所會遇到問題與解決方法,學會 XAML 與 MVVM 開發和設計模式,實際動手做出可以跨平台執行的應用程式,並且學會整個 Xamarin.Forms 開發過程。 Xamarin.Forms 跨平台行動應用程式開發實戰
- Xamarin.Forms 跨平台行動開發一日實戰營(派工 App)本次課程包含 1.5 小時的線上課程與1 天實體課程,將會提供已寫好的派工與回報的後台 Web API(包含原始碼),並藉此帶領大家從無到有,開發出跨平台(Android / iOS)行動應用 App。參考網址 Xamarin.Forms 跨平台行動開發一日實戰營(派工 App)
- Xamarin.Forms 跨平台行動開發一日實戰營(表單 App)在整個課程中,將會使用已開發好的 Web API,進行 Xamarin.Forms 跨平台行動應用程式的開發。實作出一個工作日誌回報的表單 App,可以新增、查詢、更新、刪除 (CRUD) 工作記錄、申請請假的表單功能、主管「審核請假」頁面以進行部屬請假紀錄的核准,另外,也會說明如何取得顯示公司緊急連絡方式清單,並且直接進行撥打電話功能。參考網址 Xamarin.Forms 跨平台行動開發一日實戰營(表單 App)
進階研讀
了解更多關於 [Xamarin.Android] 的使用方式
了解更多關於 [Xamarin.iOS] 的使用方式
了解更多關於 [Xamarin.Forms] 的使用方式
了解更多關於 [Hello, Android:快速入門] 的使用方式
了解更多關於 [Hello, iOS – 快速入門] 的使用方式
了解更多關於 [Xamarin.Forms 快速入門] 的使用方式
Xamarin 新手入門 Part 6 我該選擇 Xamarin.Forms 或者 Xamarin 原生方式來開發跨平台應用程式專案呢?
Xamarin 新手入門 Part 5 Xamarin.Forms for Prism 專案開發教學
Xamarin 新手入門 Part 4 Xamarin.Forms Master Detail 專案開發教學
Xamarin 新手入門 Part 3 Xamarin.Forms 專案開發教學
Xamarin 新手入門 Part 2 Xamarin.iOS 專案開發教學
Xamarin 新手入門 Part 1 Xamarin.Android 專案開發教學
Xamarin.Forms 快速上手
電子書,請點選 這裡XAML in Xamarin.Forms 基礎篇
電子書,請點選 這裡經過一系列的初步認識 Xamarin 原生方式開發與 Xamarin.Forms 方式開發的方式,大部分第一次接觸 Xamarin Toolkit 工具集的人,都會開始存在著許多問題,我究竟要使用原生方式來進行專案開發,還是要採用 Xamarin.Forms 的方式來進行開發呢?在這篇文章中,將會提供這些相關疑問的解釋說明。