使用Xamarin實現跨平台行動裝置 App開發(轉載)

來源:互聯網
上載者:User

標籤:ros   not   compute   UI   err   dma   網站   android系統   alt   

剛在朋友圈看到張善友,轉寄的一條分享“使用Xamarin實現跨平台行動裝置 App開發”,寫的確實很詳細得體,從收費到開源,這段時間xamarin受到不少質疑,如此文http://blog.csdn.net/aofengdaxia/article/details/41891945/。當然這篇隨筆也是轉載的(如果不寫成隨筆,大夥可能看不到這篇文章)。希望那些已經入坑xamarin的開發人員能有一個新的認識

原文連結:http://www.infoq.com/cn/articles/mobile-cross-platform-xamarin

原文Adriana Blum

本文要點
  • 對行動裝置 App而言,跨平台開發方式降低了開發和維護的代價。
  • Microsoft收購Xamarin,這使得那些專註於Microsoft技術的企業受益匪淺。
  • 自從Xamarin加入到Visual Studio中之後,其使用日益廣泛。當然,這也要歸因於它目前是開源和免費的。
  • Xamarin是“近乎原生”的。它將原始碼編譯為原生的iOS和Android。
  • Xamarin.Forms、Test Cloud和Xamarin University使Xamarin平台對開發人員更具吸引力。

作者 Adriana Blum ,譯者 蓋磊 發佈於 2018年1月12日. 估計閱讀時間: 22 分鐘 

Xamarin曾是一種利基產品,售價昂貴。現在,它正逐漸成為一種廣為使用的行動裝置 App開發工具(參見連結給出投影片的第4張和第6張)。出於一些原因,Xamarin並不適用於某些類型的應用,其本身也存在著不少缺點。對此,本文將做詳細的介紹。同時,Xamarin也是一種跨平台的開發工具。因此,我們還將在本文中權衡跨各種平台與原生開發上的一些優缺點。下面,我們首先簡述Xamarin的推出及發展曆史。

從Gnome、Mono到Ximian

Miguel de Icaza是Gnome項目的創始人,他同時也是一位開源項目冠軍(Open Source Champion )。在他看來,要讓開源項目得到福士的認可,必須使該項目與Microsoft、Novell等公司提供的商業軟體毫無二致。出於此考慮,de Icaza於1999年開始和Nat Friedman合作。他們曾在1997年有過短暫的接觸,那是在de Icaza的一次不成功的Microsoft面試期間。當時,de Icaza對Microsoft管理層指出,他們公司的軟體應該走上開源之路。這次面試進展的並不順利,但此後Friedman和de Icaza創立了Ximian項目,其中最主要的項目是Mono。Ximain於2003年被Novell收購,當時Novell正試圖從Microsoft贏回它們日益萎縮的網路市場份額。此後,Novell於2011年被Attachmate收購,而Attachmate裁剪掉了Mono項目的大部分資源。

 

相關廠商內容

一堂課教你看懂技術創新與商業模式QCon北京2018全新開啟優秀程式員應該瞭解的開發實踐案例年底最後一場乾貨滿滿的出海峰會  

這在de Icaza和Friedman看來,無疑是一個機會。因此,他們著手創立了另一個初創項目,即Xamarin,針對開發用於行動裝置 App開發的產品。他們的首個產品Xamarin.Mac在2012年發布,支援開發人員使用C#語言為Apple Mac編寫應用並通過Apple Store銷售。在2013年,他們發布了Xamarin 2.0,這款IDE產品的推出,使開發人員可以使用Microsoft Visual Studio開發用於iOS、Android和Windows的應用。但是該版本的一個主要缺點在於,Xamarin的許可費用在當時是非常昂貴的。

多年來,Microsfot一直關注著de Icaza的動向。在Microsoft看來,Xamarin就是公司真正需要的產品,因為Xamarin具有使用Visual Studio開發Android和iOS應用的能力。這樣,Microsoft出手收購了Xamarin,並將Xamarin作為一種開源的IDE綁定到.NET中。這正是De Icaza多年前就希望Microsfot能去做的事情。

 

圖1 Xamarin的發展曆史(圖片來源:Craig Dunn的投影片)

跨平台開發的案例

行動裝置 App開發主要有三種方式:原生的、跨平台的和混合的。本文將不會介紹混合解決方案,因為這種解決方案通常無法達到原生的或真正跨平台開發的品質和穩健性。

圖2 三種開發方式(圖片來源:Matt Larson在Xamarin Experience倫敦2017大會上演講投影片)

原生開發使用特定於裝置平台的程式設計語言和API。例如在iOS上,使用的是Objective C或Swift。儘管使用這種方式,開發人員能推出最適用於裝置的產品,但其中也存在著一些嚴重的問題:

  • 需要開發人員熟悉平台語言和API。
  • 增加了上市時間;
  • 增大了維護代價。
在Team Dev中問題

對於開發原生應用,可能至少需要維護兩個團隊。一個團隊具備在iOS平台上的Swift/Objective C開發技能,另一個團隊具備在Android上的Java開展技能。甚至很有可能還需要維護第三個團隊,即具備Windows平台開發技能的團隊。我們還需要確保團隊能保持最新的技能,並且人員不會被其它公司挖走,因為當前對這些技能的需求量很大。如果使用跨平台的方法,並不能消除這個問題。但是該方法降低了開發人員入職所需的技能要求,問題得到了一定程度上的緩解。

在開發代碼和測試代碼時,如果需要維護多個基本上在做同一工作的團隊,這最終將會對開發成本產生影響。

增加了上市時間

當公司中有多個不同的團隊同時投身於應用開發時,可能上市的時間會更長,因為這時會有兩個(或更多)的團隊使用不同的語言在不同的平台上編寫、測試和調試同一個應用,而不是基於一個通用的C#技術棧。如果使用了跨平台的方法,這將有助於縮短推出應用所需的時間。

增大了維護代價和複雜性

消費類電子產品企業出於維持自身客戶群的考慮,喜歡不斷地推出新款手機,並不斷地對作業系統推陳出新。相應地,應用也需要做不斷地升級和更新。這使應用Team Dev忙於在新裝置上測試應用、發布新版本和補丁程式。如果使用跨平台方式,那麼我們可以在單個程式碼程式庫上測試大部分或全部裝置和更改。如果我們選擇的是獨立原生應用,那麼維護工作和發布時間安排會更為複雜。在一開始開發時,如果我們建立了一個原生應用,那麼時間和開銷將保持增長。公司將需要維護一個更大規模的Team Dev。

圖3 特定於平台的開發方式(圖片來源:Matt Larson在Xamarin Experience倫敦2017大會上演講投影片)

Xamarin跨平台開發的優點

跨平台的開發方式具有很多優點,其中主要是減少了複雜性,從而降低了成本和工作量。儘管任一跨平台解決方案都能有助於消除重複勞動,並具有更好的可維護性,但Xamarin還提供了其它一些優點。下面列出其中部分優點:

  • 提高了代碼的可重用能力;
  • 在很大程度上減少了測試工作;
  • 精簡了維護;
  • 提供全面的Xamarin環境;
  • 可在Xamarin Test Cloud提供的兩千多台裝置上做實地測試;
  • 近乎原生的效能;
  • 支援地理位置和使用iBeacon。
功能的一次性開發

在Xamarin中,有超過70%的代碼可重用。這意味著,許多針對Android開發的功能,無需重寫全部內容即可用於iOS。因此,開發人員一旦完成了針對某個環境的編碼和測試階段(無論是Android、iOS還是Windows),就可以將同一代碼用於其它環境,並使影響最小化。相比於使用原生開發方法,應用可以更快地交付市場。

降低了測試時間和工作量

我們並非說要削減測試工作。無論應運行在何種裝置上,無論選用何種開發方式,軟體測試都是任一應用開發中的重要組成。但是,在一個作業系統(例如Android)上對大部分的功能測試和調試後,就會縮減在另一個作業系統(例如iOS)上的測試時間,因為部分功能已經在一個平台上得以驗證並測試。這樣,開發人員可以專註於一些特定於平台的事項。相比起讓兩個團隊以串聯方式工作於兩個不同的系統上,這種方式無疑降低了測試時間和工作量。

Xamarin環境

Xamarin提供的IDE功能全面,開發人員可以在IDE中執行構建最終產品所需的每個任務。Xamarin最近推出了Xamarin.Forms,進一步簡化了開發。但依然需要開發人員具有Xamarin經驗,以決定是使用Forms,還是堅持使用傳統的Xamarin開發。Xamarin官方推薦從Xamarin.Forms開始。

圖4 Xamarin與Xamarin.Forms的對比(圖片來源: Craig Dunn的投影片)

圖5 Xamarin.Forms與Xamarin原生開發的對比(圖片來源:Xamarin官方網站)

Xamarin還提供了線上的Xamarin University,有助於開發人員快速熟悉開發所需的各個領域。

訪問Xamarin Test Cloud

Test Cloud提供了一種應用測試環境,支援開發人員在其中類比真實世界情況對兩千多種真實手機進行實地測試。Test Cloud並非免費的,但是對於受廣大應用目標受眾青睞的多種目標機型,使用Test Cloud無疑物有所值。此外,購買了Visual Studio Enterprise許可的組織,可以獲得Test Cloud的25%折扣。

效能近乎原生

在跨平台方式和混合開發方式領域中,沒有競爭者的表現可與Xamarin相匹敵。其中的原因在於,Xamarin將原始碼編譯成二進位對象,而許多競爭者(例如Sencha和PhoneGap)僅在運行時編譯。 在2015年,一位開發人員Harry Cheung在Android和Apple上做過一些對比測試。必須要承認的是,測試當時所用裝置,現在看來完全過時了。這對於Xamarin而言尤其如此,特別是在iOS上。

圖6 iOS平台上開發的應用效能對比(圖片來源:Harry Cheung的Medium部落格文章)

圖7 Android平台上開發的應用效能對比(圖片來源:Harry Cheung的Medium部落格文章)

使用iBeacons和地理位置

如果使用者需要在應用中使用Beacons和地理位置,那麼Xamarin可以使用鄰近裝置(其中包括Beacons和地理位置),支援定位和物聯網(IoT)。Xamarin與Estimote間有著良好的合作關係。Estimote製造裝置,並提供可用於開發的Xamarin SDK。儘管使用者並非一定要局限Estimote的裝置,但是Estimote裝置的確可以使生活更輕鬆,因為基於裝置開發的應用可以通過iBeacons(或其它協議)接收現場資訊,其中包括了IoT裝置的報告和監控情況。

Xamarin是跨平台的,但是近乎原生

儘管上面我們已經介紹了跨平台開發的多個優點,但是在此我們還是要著重介紹Xamarin的一個亮點。Xamarin對於iOS和Android來說都是“近乎原生”的。為實現這一點,Xamarin採用的一個方法是支援直接從C#調用開發人員使用Objective C/Swift for iOS及Java for Android的所有API。原生開發人員可用的標準使用者介面控制項,也可以通過Xamarin訪問。這樣,一旦應用運行在裝置上,就會給出正確的觀感。

儘管使用C#可以實現幾乎所有的 特性,但是其中可能依然需要少量的原生代碼。對於一名經驗豐富的Xamarin開發人員,這無疑是應用開發中的一種福利,因為他們可以根據自身過往的經驗決定調用情況。

Xamarin的適用之處

Xamarin具有強健的後端架構,非常適合於開發公司專屬應用程式,以及任何需要做大量後端開發的應用。雖然Xamarin在需要功能豐富的使用者介面方面有一定局限性,但Xamarin仍然可以產生一些非常有吸引力的應用。在本文稍後,我們將會給出一些案例研究。

Xamarin的最大優勢在於開發時間以及跨平台工作的效率上。由於競爭激烈,大多數行動裝置 App項目都給出了一個期限,Xamarin開發人員的開發速度無疑佔優。Xamarin的另一個優勢在於它能使用Estimote SDK,整合Beacons和智能眼鏡等物聯網裝置。

Xamarin是運作在Microsoft生態系統中的,這一事實對於企業來說也是一大優勢。其中的大多數企業已對Visual Studio等產品做了投資,並且很可能擁有一個穩定的.NETTeam Dev。

Xamarin有不足之處

下面給出一些壞訊息。在下列情況中,Xamarin並非最好的選擇:

  • UI介面複雜(B2C情況下);
  • 大量的動畫和圖形(例如,遊戲);
  • 仍然需要一些原生編程的情況下;
  • 當應用會發展成很大的規模時;
  • 需要使用特定的開源軟體庫的情況下;
  • 如果開發人員不願意支付Xamarin的許可費用。
UI介面複雜

如果應用面向的是終端使用者,並且需要提供豐富的前端功能,這時建議使用原生應用。Xamarin.Forms足以應對簡單的使用者介面,並可以受益於Xamarin優異的後端功能。但是面對需要複雜使用者介面的應用時,Xamarin是無法與原生SDK相媲美的。這是因為iOS和Android的UI必鬚根據各自平台的觀感分別進行設計和實現,最終可共用的應用代碼將不足一半,達不到一般情況下的75%,或是近乎使用Forms時100%。這完全違背了我們使用Xamarin的初衷。因此,這時應使用Objective C或Java。

圖形和動畫

Xamarin也並非開發遊戲應用的好選擇。Xamarin不適用於需要強大圖形或動畫的應用。儘管如此,我們也不能完全排除使用Xamarin開發遊戲。一個例子就是Bastion展示在iPad上的遊戲。此外,Xamarin的最新發展將會使這一狀況有所改觀。

圖8 Bastion展示在iPad上的遊戲(圖片來源:Jo Ann Buckner在Xamarin官方部落格上的文章)

並非100%的解決方案

正如我們前面提到的,在一些情況下,要構建一個完整的解決方案,我們可能仍然需要編寫少量的原生代碼。這意味著,開發人員仍然需要一些原生技能,這會降低Xamarin提供的優勢。

訪問開源軟體庫上的限制

原生開發人員可以使用目標平台上所有可用的開源軟體庫。但是,Xamarin開發人員只能使用在Xamarin環境中的開源軟體庫,這通常數量更少。隨著Xamarin的日益普及,預計在未來這個問題將會逐漸消失。正如NuGet的最新發展所示。

Xamarin應用的規模很大

Xamarin應用的規模會更大一些。開發人員可能需要做一些額外工作,去最佳化應用的大小。如果一個應用過大,安裝將花費更多的時間,並可能在客戶手機上引發儲存和訪問問題,這會導致使用者考慮刪除該應用。

Xamarin可能是免費的,但是Visual Studio並非免費的

由於Xamarin是捆綁在Visual Studio中的,開發人員會發現需要Visual Studio Professional或Enterprise版才能使用所需的功能。儘管入門級產品是免費的,當然其中也不會具備所有的特性。

Xamarin提供了標準許可和雲許可,它們的價格可不便宜。顯示了標準許可的報價,供讀者參考。

圖9 Xamarin許可報價(圖片來源:Xamarin官方網站)

一些使用Xamarin的成功案例

下面我們選取了幾個不同行業的公司作為案例。這些公司使用Xamarin取得了滿意的效果。

Siemens PLM

圖10 Siemens PLM應用樣本(圖片來源:Kyle Maxey發表在engineering.com上的文章)

Siemens PLM是由一些昂貴的工程軟體組合成的龐大產品,在全球擁有超過9百萬席位和7.7萬名使用者。Siemens希望能藉助一款名為“Catchbook”的輕便移動繪圖和CAD應用,進一步擴充公司的市場。在應用中,使用者可以使用手指或觸筆繪製形狀。考慮到公司具備Microsoft的開發技能,卻不具備iOS或Android的開發技能,因此Siemens選擇了Xamarin。Xamarin提供的第一個優勢,就是企業可以移植很多現有的代碼。其次,企業避免了學習原生iOS和Android開發語言的麻煩,就能讓75%的應用運行起來。

世界銀行

圖11 世界銀行應用樣本(圖片來源:Ann Buckne發表在Xamarin官方部落格上的文章)

世界銀行有一個小Team Dev,由8位開發人員組成。團隊成員熟悉Visual Studio和C#開發,因此團隊能夠使用Xamarin快速提高生產力。他們開發的一個複雜的調查系統只針對Android裝置應用。這是因為世界銀行所面對的是發展中國家使用者,Android系統他們主要選擇的手機類型。

可口可樂裝瓶公司

圖12 可口可樂裝瓶公司應用執行個體(圖片來源: Lacey Butler發表在Xamarin官方部落格上的文章)

在短短的四個月時間內,全球最大的可口可樂裝瓶公司就將“MarketPlace”應用投入運行。與前面介紹的案例一樣,公司擁有具備.Net和C#技能的工作人員,他們十分熟悉Visual Studio,這就是公司對使用Xamarin有興趣的原因。公司引入了兩名經驗豐富的Xamarin開發人員來指導團隊(順便說一句,他們在團隊合作中使用了Slack。Slack也是使用Xamarin的)。

社區評論情況

Xamarin由於其敏捷性,使得產品能夠在最短的時間內運行起來,因此在一些行動裝置 App開發公司中廣受好評。下面給出在Clutch Review論壇中的一些評論。

“對於具有.NET和C#經驗的開發人員而言,他們希望開發工具能整合Microsoft技術棧後端。Xamarin無疑是一種極好的工具。”

“通過與Xamarin的合作,我們已成功地交付了大量的行動裝置 App。這些應用得到了我們客戶的高度讚賞。例如,有一位客戶希望僅用正常時間的一半就交付一個應用,因為該應用將在一個大型活動中展示。正是由於Xamarin允許我們無縫地共用代碼,這使得我們能夠在期限內完成任務。客戶非常高興。面對如此時間上的壓力,使用Xamarin總是更具優勢。”

“如前所述,Xamarin最大的問題是在涉及到需要高度自動化的圖形或應用時,就會面臨一些問題。”

結論

雖然Xamarin並非適用於任一行動裝置 App,但它的確是公司在選擇行動裝置 App開發中的考慮對象。應用可能會相當複雜,正如上面給出的企業案例所示。在企業環境中,Xamarin中使用C#作為慣用語言,這使得其在眾多競爭者中脫穎而出。自Microsoft收購Xamarin以來,市場也一直保持快速的增長。對於現有客戶來說,這無疑是一個好訊息。

圖13 Xamarin的市場增長情況(圖片來源:Matt Larson在Xamarin Experience倫敦2017大會上演講投影片)

本文作者簡介

Adriana Blum任行動裝置 App開發公司Iflexion的進階技術架構師。她在管理和交付定製移動解決方案上,擁有13年以上的經驗。她目前在協助企業實現流程自動化、尋找新的發展機會,並建立可為企業帶來高價值的應用。

查看英文原文: Mobile Cross-platform Development with Xamarin

使用Xamarin實現跨平台行動裝置 App開發(轉載)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.