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

  Xamarin 介紹

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

  簡單的來講,Xamarin 使咱們可使用 C#F#VB.NET 等語言開發原生 iOSAndroidWindows 應用程序android

 

  傳統移動開發流程

  開發一個傳統的移動開發程序都會有一些流程。好比像打開IDE,拖一些控件,編寫邏輯,而後測試,發佈。這些很是簡單一兩個小時就能夠折騰完成。 ios

  可是,若是要開發一些大型的,商業級的移動應用程序就須要一些專業的開發流程。好比需求分析,UX 設計,UI 設計,開發,可用性測試,性能測試,以及數以千計的設備進行測試,再使用不一樣部署方式完成部署。git

 

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

 

 

 

 

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 的支持,特別是已經成爲一個可靠和強大的技術堆棧。
 
6.若是你窮又想本身搞創業項目選擇Xamarin吧
        Xamarin的牛B之處就在於,只要你是一個高級C#開發人員,當你想創業的時候,你不再用去求Android開發人員幫你寫代碼,iOS開發人員幫你寫代碼,你本身就能夠搞定。求別人幫你寫,你總要付出成本的。按照北京Android,IOS開發人員的工資來講。一個月3萬塊吧。對於我的創業者來講,已是不少錢了。當你的項目融到資了,若是你以爲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

做者博客:何旭

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

相關文章
相關標籤/搜索