Xamarin移動開發的優點和缺點

來源:互聯網
上載者:User

標籤:完成   ios文檔   分享圖片   als   port   mac   開放   apache   打破   

在考慮iOS或Android應用程式開發時,我們大多數人會首先考慮Objective-C vs Swift和Java。作為本地技術堆棧,當涉及到iOS和Android應用程式開發時,它們自然是最常用的移動開發工具。但是,還有更多方法來構建高效能和方便使用的行動裝置 App程式。而Xamarin就是其中之一。在本文中,我們對Xamarin進行了深入審查,並將其與市場上的本地和跨平台移動開發解決方案進行了比較。如果您瞭解基礎知識,請考慮跳到您感興趣的部分。

什麼是Xamarin?

使用Xamarin的優點

使用Xamarin的缺點

Xamarin Visual Studio IDE

Xamarin vs Native iOS / Android與混合開發

一點建議

什麼是Xamarin?

在談論行動裝置 App程式開發的關鍵方法時,不可能忽視Xamarin 。Xamarin是一款用於跨平台行動裝置 App程式開發的工具,它允許工程師在主要平台上共用大約90%的代碼。作為一個相對較新的工具,它基於微軟技術棧,已經有超過140萬開發人員的社區。

該平台由Mono開發,後者是一個基於.NET架構的開源開發平台,由Miguel de Icaza領導,於2001年首次推出.Xamarin公司成立於2011年5月16日。

然而,與其前身不同的是,Xamarin被建立為商業項目,直到該公司於2016年被微軟收購為止。Xamarin成為在Microsoft生態系統內開發行動裝置 App程式的流行跨平台產品。此次收購打破了使用Xamarin的財務壁壘。隨著微軟開發Xamarin SDK開放原始碼,它成為Xamarin Visual Studio整合式開發環境的一部分(我們討論下面用於Xamarin開發的最佳IDE )。Xamarin的主要特點是什嗎?

C#語言。Xamarin使用單一語言C#為所有移動平台建立應用程式。與解釋性解決方案(如Appcelerator Titanium)不同,Xamarin是原生編譯的,這使它成為構建具有本機外觀和感覺的高效能應用程式的首選選項。

基於.NET架構。C#是一種成熟的語言,具有強大的安全性,可防止代碼出現意外行為。由於C#是.NET架構語言之一,它可以與許多有用的.NET功能(如Lambda,LINQ和Asynchronous programming(Asynk))一起使用。

從技術上講,Xamarin使用C#和封裝在.Net層中的本機庫進行跨平台應用程式開發。就效能和使用者體驗而言,這些應用程式經常與iOS和Android移動開發平台的本機應用程式進行比較。此外,Xamarin可以利用所有本機和最新的API訪問,以利用Xamarin應用程式中的底層平台功能,例如iOS或Android多視窗上的ARKit。

雖然與商務邏輯,資料庫訪問和網路通訊相關的代碼可以在所有平台上共用,但Xamarin允許您建立平台特定的UI代碼層。因此,與通用混合應用相比,Xamarin跨平台應用在任何裝置上看起來都是100%原生的,提供更好的使用者體驗。

彙編。該平台有兩個主要產品:Xamarin.iOS和Xamarin.Android。在iOS的情況下,原始碼直接編譯為本地ARM彙編代碼(Ahead-of-Time編譯),而Android Xamarin應用程式首先編譯為中繼語言,然後 - 在運行時彙編到本機彙編代碼中(Just-in - 時間編譯)。但是,在這兩種情況下,該流程都是自動化的,並且可以根據預設情況處理諸如記憶體配置,垃圾收集和平台互通性等問題。

Xamarin.Forms。Xamarin.Forms是一款獨立的產品,旨在建立原型或簡單的行動裝置 App程式,可跨iOS和Android共用100%的代碼。

Xamarin.Mac。此外,工程師可以使用Xamarin.Mac為Mac OS構建應用程式。這些以及來自Xamarin堆棧的其他一些產品將在稍後討論。

平台SDK。Xamarin通過簡單的C#文法提供對平台特定的SDK(iOS和Android SDK的CocoaTouch)的訪問。

平台特定的代碼綁定。在大多數情況下,工程師將能夠處理Xamarin環境中保持各自平台原生外觀和感覺的開發。但是,如果您必須重新使用某些模組或實現條碼掃描,PayPal或Google Analytics整合等特定於平台的功能,Xamarin允許您調用現有的平台代碼(例如Swift for iOS)。

支援穿戴式裝置。Xamarin支援為Apple和Android Watch裝置構建應用程式。工程師可以使用適用於Mac和Windows的Visual Studio來構建iOS Apple Watch應用程式。另外,Xamarin完全支援Android Wear。

Xamarin項目結構。預計大部分與Xamarin相關的工作將通過安裝了Visual Studio和Xamarin的Windows開發電腦運行。應用程式可以直接從案頭或裝置和模擬器進行調試。如果您打算在Windows上開發iOS應用程式,則Visual Studio串連到iOS故事板設計器和iOS模擬器也是可能的。還有Visual Studio for Mac,它允許在Mac上運行模擬器或直接在系留iPhone上運行。調試通過Visual Studio運行。

Xamarin項目結構。映像來源:Visual Studio文檔

為了更深入地瞭解Xamarin工程方面,請考慮檢查這些資源:

主要的Xamarin文檔中心

Xamarin.Android文檔

Xamarin.iOS文檔

Xamarin.Forms文檔

Xamarin的Visual Studio

Xamarin Studio應用中心

Xamarin社區論壇

與任何其他技術一樣,Xamarin有其自身的優點和缺點,近來一直是熱烈討論的主題。為了對Xamarin和原生開發做出明智的決定,讓我們用Xamarin來衡量應用程式開發的優點和缺點。

使用Xamarin進行開發的優點

許多公司使用Xamarin的理由很充分,包括Trello,Slack和GitHub。

⊕為所有平台編寫一個技術棧

Xamarin使用C#補充.Net架構來為任何移動平台建立應用程式。因此,您可以重複利用多達96%的原始碼加速工程周期。Xamarin也不需要在開發環境之間切換:您可以在Visual Studio中構建完全取代Xamarin Studio的所有Xamarin應用程式。跨平台開發工具作為IDE的內建部分提供,無需額外費用。

⊕效能接近原生

與基於Web技術的傳統混合解決方案不同,Xamarin構建的跨平台應用程式仍然可以歸類為本地應用程式。效能指標與Android的Java(如此處所述)和Objective-C或Swift 的效能指標相當,可用於本機iOS應用程式開發。而且,Xamarin的效能不斷得到改進,完全符合本土開發的標準。Visual Studio為構建,測試和跟蹤應用程式的效能提供了一個完整的解決方案:Visual Studio App Center  允許您在發布之前運行自動UI測試並識別效能問題。但是,這項服務需要支付額外費用。

⊕本機使用者體驗

Xamarin允許您使用平台特定的UI元素建立完美的體驗。針對iOS,Android或Windows的簡單跨平台應用程式使用Xamarin.Forms工具構建,該工具可在應用程式運行時將應用程式UI組件轉換為平台特定的介面元素。隨著Xamarin.Forms的使用顯著增加了應用程式開發的速度,它對於面向業務的項目來說是一個很好的選擇。然而,由於額外的抽象層,效能可能會略有下降。對於自訂應用程式使用者介面和更高的效能,您仍然可以單獨使用Xamarin.iOS和Xamarin.Android以確保出色的結果。

⊕全面的硬體支援

藉助Xamarin,您的解決方案可以獲得本機層級的應用程式功能。它消除了所有硬體相容性問題,使用外掛程式和特定的API,以便在平台上使用通用裝置功能。隨著訪問平台特定的API,Xamarin支援與本地庫連結。這可以提供更好的定製和原生級功能,而且開銷很小。

⊕開源技術與強大的企業支援

該公司於2016年2月被微軟收購後,Xamarin許可政策發生了根本性的變化。包括運行時,庫和命令列工具在內的Xamarin SDK已經成為開放源碼,並且作為Visual Studio的一部分,可以在MIT許可下使用。通過消除許可證的主要障礙和成本,微軟為平台的進一步發展鋪平了道路。另外,由微軟領導,並受到Unity,JetBrains和Red Hat,.NET基金會和Xamarin的支援,特別是已經成為一個可靠和強大的技術堆棧。

⊕簡化維護

由於其跨平台應用,Xamarin使維護和更新變得更加簡單。您可以簡單地將更改或更新部署到源檔案,並將它們應用於iOS和Android應用程式。但是,這僅適用於使用Xamarin.Forms或Xamarin.iOS和Xamarin.Android應用程式的商務邏輯,共用代碼,更新的應用程式。因此,它可以協助您節省時間和金錢,同時保持應用程式的最新狀態。

⊕完整的開發生態系統

Xamarin包含一個完整的開發套件,包括它自己的IDE(現在被Visual Studio取代的Xamarin Studio),平台本身(Xamarin SDK),測試(Xamarin測試雲端),分發和分析(Hockeyapp和Xamarin)。 Insights)平台。因此,您無需投資其他工具或整合第三方應用程式來構建,測試和部署您的Xamarin應用程式。

⊕Xamarin.Forms:簡單的應用程式和原型的架構

Xamarin建議開發人員通過兩種方式構建行動裝置 App程式。第一個是使用Xamarin.iOS和Xamarin.Android,這被認為是主要的方法。使用Xamarin.Forms,Visual Studio庫是第二個。Xamarin.Forms允許快速建立原型或產生具有較少平台特定功能的應用程式。這就是為什麼Xamarin.Forms是代碼共用比定製UI更重要的應用程式的最佳選擇。您將能夠建立單一介面並跨平台共用,無需為每個平台單獨設計。您還可以構建應用程式,其中某些部分的使用者介面是使用Xamarin.Forms構建的,其他部分則使用本機UI工具包進行設計。

儘管與Xamarin.iOS和Xamarin.Android相比,Xamarin.Forms在本地外觀和感覺方面仍然存在折衷,但有一個充滿活力的社區關注這個工具。例如,一些技術供應商為他們的Telerik UI等庫提供豐富的工程功能,提供預先配置的UI組件。

⊕Xamarin.Forms直播播放器

由於Xamarin.Forms旨在實現快速和無摩擦的開發,Microsoft建議使用Live Player工具。這是安裝在實際手機上的應用程式,可立即測試和調試您的應用程式,而無需模擬器部署或將裝置綁定到工作站。安裝Live Player後,開發人員將使用手機相機掃描Visual Studio中的QR碼,以便訪問當前開發的應用程式。手機上的應用程式與Visual Studio中的應用程式即時同步。這極大地簡化了所有設定和進一步的調試過程。不幸的是,微緩停止了對Live Player的支援,但您仍然可以下載該應用程式並將其與Visual Studio配對。

⊕使用Xamarin.Mac工具構建Mac應用程式

Xamarin.Mac允許使用C#和.NET開發完全原生的Mac應用程式。它整合了與Xcode在Objective-C中開發相同的庫。通過將Xamarin.Mac與Xamarin.iOS和Xamarin.Android結合使用,開發人員可以在Android,iOS和Mac OS上共用高達90%的機器碼。此外,Xamarin.Mac與Xcode整合,因此開發人員可以使用Xcode的Interface Builder來建立應用程式的使用者介面。

⊕Xamarin大學提供順利的入職培訓

Xamarin大學是一個專門的電子學習門戶,供剛剛熟悉該軟體包的人使用。大學迎合了認識C#的工程師以及具有一點編程經驗的任何人。如果您只是將新工程師帶到您的基於Xamarin的產品,大學將提供所有基本知識。該門戶網站提供從初級到進階的課程,包括免費的自學,線上線上課程,辦公室講座和客座講座。

Xamarin缺點考慮

但是,仍然有一些缺陷可以給平台蒙上陰影。那麼,為什麼不使用Xamarin?

Θ稍微延遲支援最新的平台更新

這完全取決於XamarinTeam Dev。第三方工具不可能為最新的iOS和Android版本提供即時支援:實施這些更改和/或引入新的外掛程式等需要一些時間。儘管Xamarin聲稱提供當天的支援,但仍然可能有些延誤。

Θ對開源庫的訪問受限

本地開發廣泛使用開源技術。使用Xamarin,您只能使用平台提供的組件和一些.Net開源資源,面向  開發人員和消費者。儘管選擇並不像Android和iOS行動裝置 App程式開發那樣豐富,但Xamarin組件提供了數千個自訂UI控制項,各種圖表,圖形,主題和其他強大的功能,可以僅添加到應用程式中點擊次數很少。這包括內建支付處理(如Stripe),信標和穿戴式裝置整合,開箱即用推播通知服務,雲端儲存解決方案,多媒體串流功能等等。

ΘXamarin生態系統問題

顯然,Xamarin社區比iOS或Android的小得多。因此,找到一個有經驗的Xamarin開發人員可能是一個挑戰。雖然該平台在微軟的支援下正在增長。根據不同來源的資訊,Xamarin社區佔全球移動開發社會的10%。儘管Xamarin工程師的數量與iOS或Android本地社區無法比較,但該平台為其開發人員提供了廣泛的支援。也就是說,有一個專門的教育平台,Xamarin大學,為那些對這項技術不熟悉的人提供資源和實踐培訓。使用這種支援,經驗豐富的C#/ .Net工程師的學習曲線是最小的。

Θ需要有本地語言的基本知識

當使用Xamarin.iOS和Xamarin.Android構建具有真正本機外觀和感覺的行動裝置 App程式時,您仍然需要編寫一個平台特定的代碼層。因此,至少需要有關本機技術的基本知識(Android的Java / Kotlin和iOS的Objective-C / Swift)。但是,這並不適用於Xamarin.Forms。

Θ不適用於重圖形應用程式

Xamarin的主要優勢是能夠跨平台分享您的代碼。然而,你只能分享邏輯,UI代碼將主要是平台特定的。這使得在Xamarin中構建遊戲,豐富的自訂使用者介面或複雜的動畫變得毫無意義。使用少量的共用代碼,Xamarin將變為不可行的選項。

Θ更大的應用程式大小

根據其類型和複雜性,Xamarin應用程式通常比本地應用程式大(後者可能是Xamarin應用程式的一半大小)。Android的一個簡單的“hello,world”應用程式最多可能需要16 MB,其中大部分應用於關聯的庫,內容,Mono運行時和Base Class Library(BCL)程式集。

來源 - developer.xamarin.com

因此,Xamarin應用程式通常需要額外的最佳化來保持應用程式檔案的大小合理。

Θ與第三方庫和工具的相容性問題

將第三方資源與您的Xamarin應用程式整合時可能會遇到一些問題。雖然大多數工具和庫提供對本地技術的全面支援,但Xamarin合規性可能不會由vedor提供。儘管Xamarin擁有自己的組件商店,但您可能需要在您的應用中需要特定的功能或整合,而這些平台並未提供這些功能或整合。

Xamarin Visual Studio IDE

如果您有一種感覺Xamarin適合您,您將有興趣知道可以使用的主要Xamarin IDE以及它們如何相互比較。

Visual Studio(VS)是Microsoft整合式開發環境,用於在所有平台和裝置上構建,調試和發布應用程式。Xamarin有三個主要的Visual Studio版本 - Visual Studio社區,Visual Studio Professional和Visual Studio Enterprise。選擇可接受版本的關鍵因素是開發人員(學生或專業工程師)及其團隊規模的經驗。程式員可以為所有版本的Web,移動,伺服器和案頭開發軟體。

Visual Studio社區非常適合學生,開源項目以及多達5名使用者的小型Team Dev。社區軟體包也適用於Visual Studio新手的團隊。此版本可免費使用。

Visual Studio Professional是一組為專業開發人員,小團隊和企業使用而建立的工具和服務。此版本提供了強大的功能,可以快速理解您的代碼:顯示代碼引用,對代碼的更改,顯示上次修改方法的人員,或發現是否正在傳遞測試。專業版包括Team Foundation Server 2017,其中提供了諸如敏捷專案規劃工具,交付計劃,圖表等功能。該版本的年費為每使用者539美元。

Visual Studio Enterprise具有強大的支援工具和服務。它們允許管理開發和IT運營之間的複雜流程; 使用手動和自動跟蹤工具跟蹤品質; 獲得專業培訓; 和整個微軟工程和測試生態系統。它包括Visual Studio Team Foundation Server和Visual Studio Team Services的Microsoft擴充。在此版本中,Team Foundation Server為您提供測試管理器,程式包管理和專用管道。企業版還有優先支援,夥伴優惠等等。Enterprise Studio的每年價格為每使用者2,999美元。

對於企業用途,我們也建議檢查  Visual Studio應用程式中心。它是一種組織應用程式開發工作流程的工具,涵蓋Xamarin等不同的移動技術。在這裡,工作在多個應用程式的工程團隊可以將他們的工具集合在一起。它通過GitHub或Bitbucket自動化應用程式打包,為不同的測試服務提供整合,支援電子郵件應用程式分發以進行測試,確保崩潰跟蹤和分析。

Visual Studio Online(VSO)是一套工具,它允許開發人員輕鬆設定跨不同平台的持續整合。持續整合是一種軟體實踐,所有代碼更改都會立即進行測試並與主程式碼程式庫整合。它有助於快速檢查和調試代碼。這個版本可能是移動開發人員最相關,最有趣的版本。

從Android Studio或Xcode切換到Visual Studio

如果您的Team Dev考慮從Android Studio(AS)或Xcode轉換到Visual Studio,則學習曲線不會那麼陡峭。功能特性比較表明IDE在開發流程方面非常相似,每個環境都有細微的差別。

從Android Studio到Visual Studio。雖然Android Studio官方支援專註於Java,C / C ++,Kotlin和XML語言,但VS支援包括AS在內的所有主流程式設計語言。這是由於IDE迎合了各種各樣的平台。VS提供了更多的工程自由,並允許在一個環境中處理不同的項目。如果您一直在使用與AS整合的Google Cloud Platform運行虛擬機器或僅管理項目,Google還善於為VS 提供其雲平台擴充。基本上,您可以直接從VS使用Microsoft雲生態系統和Google Cloud。Visual Studio可以安裝在所有主要平台上:Windows,Android,Mac OS和Linux。

從Xcode到Visual Studio。Xcode IDE與VS類似,支援所有主要程式設計語言的原始碼。所以,過渡後不會有任何意外。同樣,如果您在使用Xcode時與Mac OS綁定,則VS不需要Apple硬體。對於那些將CloudKit用於伺服器端儲存的人員,Visual Studio和Xamarin允許簡單地整合CloudKit。使用VS與Xcode相比的主要缺點是相同的:Android Studio和Xcode都可以免費使用,而VS需要相當高的訂閱費。

根據開發人員的估計,Visual Studio和Android Studio都具有大致相同的易用性層級和支援品質。將相同的索引與VS和Xcode進行比較,我們可以說VS估計值會更好一些。此外,Visual Studio在企業中更受歡迎(> 1000名員工),而大約50%的Android Studio和Xcode使用者是小型企業(僱員人數不超過50人)。

考慮到Strategy Analytics在移動開發環境中的排名,Xcode和Visual Studio一樣在測試能力方面排名最高。Android Studio落後。總分數為:Xcode-22; Visual Studio -21; 和Android Studio -13。

考慮其他選項:Xamarin vs Native iOS / Android與混合開發

最近,許多開發人員傾向於認為Xamarin可以被認為是“本地”開發工具。事實上,有一種觀點認為,“ 使用Objective-C或Swift的iOS應用程式可以完成的任何事情,以及使用Java的Android應用程式可以完成的任何事情都可以使用Xamarin在C#中完成。”

然而,本土對Xamarin辯論存在許多缺陷。讓我們看看Xamarin如何與本地開發工具和混合開發平台(Ionic,PhoneGap / Cordova)進行比較。

儘管混合移動開發工具正在迅速發展,但它們仍然缺乏Xamarin提供的效能和本地功能,成本大體相同。當考慮這兩種方法時,最常見的兩難問題是Xamarin vs Ionic或Xamarin vs React Native  (同時參閱我們關於ReactJS和React Native的優缺點的  全面解釋)。但是,後者由於底層技術(Web堆棧)中的許多限制而趨於失敗。

但是,基於JavaScript的移動開發工具至少在UI方面優於混合解決方案。它是NativeScript。這個由Telerik支援的跨平台開源架構允許您在使用單個程式碼程式庫的同時實現本地UI並串連到本機API以獲得更好的移動體驗。它的主要區別在於它使用XML標記,它編譯為Android和iOS原生等效物,而不是HTML webview。

這種方法填補了原生和混合開發之間的差距,類似於Xamarin的方式。這兩種工具的主要區別在於它們使用的程式設計語言。因此,Xamarin與NativeScript的比較應該成為更詳細研究的主題。

與此同時,Xamarin與原生Android / iOS開發辯論似乎更加複雜:兩種選擇都證明可以在產品品質和效能方面提供價值,但選擇通常取決於您想要構建的應用程式的類型。

一點建議

在比較利弊時,列出的缺點通常被認為是附帶損害。大多數企業主選擇Xamarin行動裝置 App開發平台,因為它通過共用代碼和使用單個技術堆棧來縮短上市時間和降低工程成本。然而,應用程式及其目標受眾的目的可能是更重要的考慮因素。

基於我們團隊的經驗,Xamarin的最佳使用案例是企業移動解決方案。通過覆蓋90%項目的標準UI,所有核心產品邏輯都可以輕鬆地在各個平台上共用。因此,平台定製只需要5-10%的工程量。

如果面向消費者的應用程式擁有大量使用者介面,則共用代碼的數量會急劇下降。因此,Xamarin跨平台開發失去了其主要優勢,並可能在時間和成本上與本地解決方案相當。

但是,如果您正在尋找Xamarin替代品來構建跨平台行動裝置 App程式,那麼您可能會感到失望。雖然使用最廣泛的跨平台移動開發工具是PhoneGap / Apache Cordova,Ionic Framework,Appcelerator / Titanium,但它們主要依賴於Web技術,例如HTM5或JavaScript。這就是為什麼這些工具都不能達到Xamarin提供的同等層級的效能和原生功能。

本文是我們“好與壞”系列的一部分。如果您對網站開發感興趣,請查看我們的部落格文章

Xamarin移動開發的優點和缺點

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.