溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Xamarin有哪些優(yōu)點

發(fā)布時間:2021-10-15 11:48:42 來源:億速云 閱讀:139 作者:iii 欄目:編程語言

這篇文章主要講解了“Xamarin有哪些優(yōu)點”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Xamarin有哪些優(yōu)點”吧!

    Xamarin是一項跨平臺開發(fā)技術,之前是收費的,而且據(jù)說收費不菲,所以使用的人數(shù)比較少,在國內(nèi)幾乎無人問津。后來Xamarin被微軟收購,現(xiàn)已免費開放,相信今后國內(nèi)的使用人群會大幅地增長,一方面是因為免費的東西總是受人歡迎的,另一方面是Xamarin確實提供了一種比較強大的技術來支持跨平臺開發(fā)(這里所指主要是Android和iOS上的開發(fā),但其實不止于此)。

    如今市面上號稱可以提供跨平臺開發(fā)的方案很多,比如React Native、PhoneGap、IONIC等,這些方面大多數(shù)都是基于HTML和JavaScript等技術實現(xiàn)的跨平臺開發(fā),在開發(fā)效率上自然是沒話說,但是這些技術在性能上則遜色于原生的開發(fā)技術,而這恰恰是Xamarin得以生存的空間。

    Xamarin聲稱可以獲得不差于原生技術的性能,甚至在某些方面還有可能超越原生,我想這指的應該在是Android方面。我個人分析,原因可能是這樣的。Xamarin使用C#進行開發(fā)(好像用F#也可以,不過我沒有試過,據(jù)說F#也是一門非常不錯,以后有時間會學習學習),C#默認方法是非虛的,即在子類中要重寫方法,必須在父類中聲明為virtual,而java默認所有方法都是虛方法,所以C#可以減少這方面的開銷。其次的話,可能是微軟畢竟也是老牌的IT公司,在系統(tǒng)軟件方面的優(yōu)化能力不容小覷,手里的黑科技也是不少,敢說這話應該是有底氣的。當然這不是最重要的,只要能夠在大多數(shù)情況獲得近似于原生的性能,便已是非常不錯了。

    Xamarin主要有這么幾項技術,Xamarin.Android、Xamarin.iOS和Xamarin.Forms,此外還有Xamarin.UWP、Xamarin.Windows、Xamarin.WinPhone等,但鑒于目前的市場占有率,后面幾項可以暫時不去理會。

    無論是Xamarin.Android還是Xamarin.iOS,本質(zhì)都是對原生API做了一層C#的封裝,因此在使用上與原生API會十分相似。這種封裝會結合一些C#的語法特性,讓開發(fā)者可以享受C#的語法糖。其中Xamarin.iOS是直接編譯成ARM的二進制代碼,因此執(zhí)行效率肯定是非常高的。與此不同,Xamarin.Android被編譯成中間語言,Xamarin在APK安裝包中會包含一個mono的運行時,代碼是在mono運行時和安卓本地的運行時上完成工作的,可想而知,這中間需要付出一些開銷,而且會使安裝包體積增大許多,但是考慮到設備的運行空間和存儲空間都在高速增長,這也不能算是一個特別致命的缺點。

    而Xamarin最為關鍵的技術還不是上面的兩項,而是Xamarin.Forms。這項技術把IOS、android、UWP等平臺的GUI進行了一統(tǒng)地抽象,開發(fā)者只需要寫一套代碼,編譯器會在編譯時將界面映射到原先控件上,從而獲得原生平臺的外觀和性能。這種做法對于開發(fā)者應該是最喜聞樂見的,至少我是如此,相比于那種運行的虛擬層上的跨平臺方式,這種做法性能損耗最少。當然,損耗小并不代表沒有,官方也表示,Xamarin.Forms不適合用于開發(fā)圖形界面操作特別復雜且頻繁的應用。遇到這種情況,我們可以用Xamarin.IOS或Xamarin.Android來解決,也就是說Xamarin.Forms可以與Xamarin.IOS或Xamarin.Android在同一個項目結合使用。就以我準備使用Xamarin做輸入法為例,根據(jù)Xamarin的特點,我用Xamarin.Forms來做輸入法的設置界面,節(jié)省重復開發(fā)一套界面和業(yè)務邏輯的精力;而用Xamarin.IOS和Xamarin.Android來做輸入法界面,以發(fā)揮最大的性能。目前從我實驗的結果看,這個想法是可行的。雖然我最開始的想法是連輸入法界面也用Forms來做,但發(fā)現(xiàn)在輸入法界面無法使用Forms編寫的界面(根據(jù)我的實驗,F(xiàn)orms的界面應該只能用于制作Activity的界面,而不能做Service的界面,也可能是我不知道應該怎么實現(xiàn)),所以只好退而求其次,不過現(xiàn)在這個結果也是不錯的,畢竟輸入法界面本身對性能的要求就比較高,使用更接近原先代碼的技術自然要好一些。

    至此,我使用Xamarin的意圖已經(jīng)很明顯了,就是想要用于它實現(xiàn)一個跨平臺的移動輸入法,具體的說是歲寒輸入法?,F(xiàn)在首先準備做的是IOS版的,然后再反過來重寫Android版本,如果日后WindowPhone能有起色,并且開放第三放輸入法的權限,那么基于這些代碼實現(xiàn)一個WindowPhone就不會是一件再起爐灶又大費周章的事情。而如果使用原生語言開發(fā)的話,那每個平臺都得重寫一套代碼,代價實在太大了,尤其對于個人開發(fā)者而言,不堪重負,這也是為什么Xamarin對我來說特別有吸引力的原因。

    跨平臺有跨平臺的方便,自然也有跨平臺的難處,Xamarin也僅僅提供了一種跨平臺開發(fā)的手段而已,想要將這個手段發(fā)揮好,最大限度地實現(xiàn)對代碼的重用,則需要更高的技巧和更多的思考。因此我不推薦初入開發(fā)門道的人選擇Xamarin,在此之前,最好對其中一個平臺及其開發(fā)過程有較深的理解。

    Xamarin現(xiàn)在免費開放,顯然這是微軟的移動戰(zhàn)略的一部分,由于自身操作系統(tǒng)在生態(tài)環(huán)境上的欠缺,迫使微軟去推動跨平臺技術的發(fā)展,以希望從其它平臺上借勢,從而反哺自身。在我看來,微軟的移動操作系統(tǒng)不太可能會有轉(zhuǎn)機,但這不意味著Xamarin作為一項技術沒有希望?!坝行脑曰ɑú婚_,無心插柳柳成蔭”的事情從不鮮見,只要抓住開發(fā)者這幫猢猻,微軟這棵大樹便不會倒,相信微軟明白這個道理,作為開發(fā)者也不必過于擔心微軟過河拆橋。

感謝各位的閱讀,以上就是“Xamarin有哪些優(yōu)點”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Xamarin有哪些優(yōu)點這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI