1. 程式人生 > >快速開發跨平臺應用之Xamarin技術

快速開發跨平臺應用之Xamarin技術

  Xamarin 介紹

  Xamarin 是一個允許開發人員有效建立可跨 iOSAndroidWindows 應用程式的開發工具集。Xamarin免費開源的,遵循 MIT (麻省理工學院許可證)協議,在github上的地址為:https://github.com/xamarin 。官方網站為:http://xamarin.com 

  簡單的來說,Xamarin 使我們可以使用 C#F#VB.NET 等語言開發原生 iOSAndroidWindows 應用程式

 

  傳統移動開發流程

  開發一個傳統的移動開發程式都會有一些流程。比如像開啟IDE,拖一些控制元件,編寫邏輯,然後測試,釋出。這些非常簡單一兩個小時就可以折騰完成。 

  但是,如果要開發一些大型的,商業級的移動應用程式就需要一些專業的開發流程。比如需求分析,UX 設計,UI 設計,開發,可用性測試,效能測試,以及數以千計的裝置進行測試,再使用不同部署方式完成部署。

 

建立 UX 原型時,需要考慮應用所面向的各種平臺的介面指南,這一點十分重要。

 

 

 

 

iOS 使用左滑編輯,Android 使用長按彈出編輯框,不同平臺的設計語言都有差異。

 

 

裝置有不同的規格,平板,手機,尺寸等,裝置也需要進行適配。

 

 

 

  確定了 UX 之後,下一步是建立 UI 設計。 雖然 UX 通常只是黑白原型,不過在 UI 設計階段中會引入並最終完成顏色、圖形等。 在良好的 UI 設計上花費時間是非常重要的,通常情況下,最受歡迎的應用具有專業的設計。
  與 UX 一樣,務必要了解每種平臺都具有自己的設計語言,因此設計良好的應用程式在每種平臺上的外觀可能仍有所不同。

 

 

 

  確定了 UI 之後,下一步就是開發。iOS,Android,Windows 分別需要使用不同的語言或程式設計方式進行實現,因此需要三種不同的開發人員,來承擔特定平臺的開發任務。


  測試是應用得到交付過程中一個重要的環節,一個沒有經過測試的應用,質量是很難得到保障。所以尤為關鍵。傳統開發過程中,各個平臺下單元測試,整合測試,效能測試都是不同的實現細節。因此跟傳統開發相似,同樣也需要三種平臺的測試人員角色,來承擔特定平臺的測試任務。

 

  Xamarin 架構

  

 

Xamarin 的核心包含以下及部分:

  xamarin-android : 提供 Android SDK的原生開發包,用.NET託管語言如C#,F#等可以進行 Android 應用程式開發。github地址為:https://github.com/xamarin/xamarin-android
  xamarin-macios : 提供 Mac,iOS,tvOS和watchOS的原生開發包,用.NET託管語言如C#,F#等可以進行 Mac,iOS,tvOS和watchOS 應用程式開發。github地址為:https://github.com/xamarin/xamarin-macios
  Xamarin.Forms : 提供完整的跨平臺UI工具包。用C#可以進行完全原生的 Android,iOS 和通用Windows平臺應用程式開發。github地址為:https://github.com/xamarin/Xamarin.Forms

 

  通過Xamarin 能減少應用程式總程式碼量

  從上圖我們看到,Xamarin 通過 .NET標準庫實現業務邏輯層,模型層,服務訪問層,資料訪問層,介面層,資料層。一套程式碼被不同平臺引用。即:多個專案共享程式碼,重構操作始終更新所有受影響的引用。

 

 

          據統計,大部分使用Xamarin技術開發的應用程式。共享程式碼佔比高達75%。  

  Xamarin Forms 將共享程式碼量提升為95%

  下圖是 使用 Xamarin Native 和 使用 Xamarin Forms 開發同一寬App的程式碼對比示意圖:

 

  很顯然使用Xamarin Forms 技術進行跨平臺應用開發,將共享程式碼比率提升20%,達到非常恐怖的95%。

 

  總結

使用 Xamarin 開發應用程式的優點:

 

1.所有平臺都可以使用C#編寫,加速開發週期、節約成本         Xamarin 使用C#和.Net框架來為任何移動平臺建立應用程式。因此,您可以重複利用多達95%的原始碼加速開發週期。 Xamarin 也不需要在開發環境之間切換:您可以在 Visual Studio 中構建完全取代Android Studio , XCode 等開發環境。跨平臺開發工具作為IDE的內建部分提供,無需額外費用。 同時,我們使用 Xamarin 將無需再招聘Android、iOS、MacOS,Windows Phone 等開發人員,可以在一定基礎上節約人力成本。   2.效能接近原生         與基於Web技術的傳統混合解決方案不同,Xamarin 構建的跨平臺應用程式仍然可以歸類為原生應用程式。效能指標與 Android的Java(如此處所述)和 Objective-C或 Swift 的效能指標相當,可用於本機iOS應用程式開發。而且,Xamarin 的效能不斷得到改進,完全符合原生開發的標準。   3.本地使用者體驗         Xamarin 本身就是原生技術,因此通過 Xamarin 編寫的 UI 能夠達到跟原生一模一樣的 UI 體驗。   4.全面的硬體支援         Xamarin 消除了所有硬體相容性問題,使用外掛和特定的API,以便在平臺上使用通用裝置功能。隨著訪問平臺特定的API,Xamarin 支援與本地庫連結。這可以提供更好的定製和原生級功能,而且開銷很小。   5.開源技術與強大的企業支援         Xamarin 於2016年2月被微軟收購後,Xamarin 許可政策發生了根本性的變化。包括執行時,庫和命令列工具在內的 Xamarin SDK 已經成為開放原始碼,並且作為Visual Studio的一部分,可以在 MIT 許可下使用。通過消除許可證的主要障礙和成本,微軟為平臺的進一步發展鋪平了道路。另外,由微軟領導,並受到Unity,JetBrains和Red Hat,.NET基金會和 Xamarin 的支援,特別是已經成為一個可靠和強大的技術堆疊。

 

使用 Xamarin 開發應用程式的缺點:

 

1.稍微延遲支援最新的平臺更新         Xamarin 是否能及時支援各個平臺,完全取決於 Xamarin 開發團隊。第三方工具不可能為最新的 iOS 和 Android 版本提供即時支援:實施這些更改和/或引入新的外掛等需要一些時間。儘管 Xamarin 聲稱提供當天的支援,但仍然可能有些延誤。   2.對開源庫的訪問受限         使用 Xamarin,您只能使用平臺提供的元件和一些.Net開源資源。儘管選擇並不像Android和iOS移動應用程式開發那樣豐富,但Xamarin元件提供了數千個自定義UI控制元件,各種圖表,圖形,主題和其他強大的功能,可以僅新增到應用程式中點選次數很少。這包括內建支付處理(如Stripe),信標和可穿戴裝置整合,開箱即用推送通知服務,雲端儲存解決方案,多媒體串流功能等等。   3.生態系統問題          顯然,Xamarin 社群比iOS或Android的小得多。因此,找到一個有經驗的Xamarin開發人員可能是一個挑戰。雖然該平臺在微軟的支援下正在增長。根據不同來源的資訊,Xamarin社群佔全球移動開發社會的10%,在中國的比例更少。儘管Xamarin工程師的數量與iOS或Android本地社群無法比較。但是有經驗豐富的C#/ .Net工程師學習Xamarin的曲線是很小的。   4.應用程式安裝包稍微會大一些          根據其型別和複雜性,Xamarin應用程式通常比本地應用程式大(後者可能是Xamarin應用程式的一半大小)。Android的一個簡單的“hello,world”應用程式最多可能需要16 MB,其中大部分應用於關聯的庫,內容,Mono執行時和Base Class Library(BCL)程式集。  

 

 

 

 

 

參考資料:

[1] Xamarin官方英文文件  來源:https://docs.microsoft.com/en-us/xamarin/

 

如果你覺得本篇文章對您有幫助的話,感謝您的【推薦】。

如果你對 .NET 或 Xamarin 有興趣的話可以關注我,我會定期的在部落格分享我的學習心得。

本文地址:http://www.cnblogs.com/hexu6788/p/9916038.html

作者部落格:何旭

歡迎轉載,請在明顯位置給出出處及連結