淺談移動應用的跨平臺開發工具(Xamarin和React Native)

jnj發表於2016-06-05

談移動應用的跨平臺開發不能不提HTML5,PhoneGap和Sencha等平臺一直致力於使用HTML5技術來開發跨平臺的移動應用,現在看來這個方向基本算是失敗的,基於HTML5的移動應用在使用者體驗上與原生應用仍然存在著明顯的差距。

與上述HTML5平臺不同,Xamarin和React Native通過各自的方式來實現跨平臺。Xamarin基於Mono框架將C#程式碼編譯為原生平臺程式碼,React Native則是在UI主執行緒之外執行一個JavaScript執行緒,兩者呈現給使用者的都是原生體驗。

enter image description here

筆者恰巧兩個平臺都各使用過一段時間,在這裡就拋磚引玉,分享一下個人觀點。對於資源有限的創業團隊,如果熟悉JavaScript,使用React Native再加上React,Redux等技術可以實現移動端、Web端、和Service端整套系統的開發,還可以重用一部分程式碼(比如Reducer和Action中的業務邏輯,以及通用的JavaScript元件程式碼),React Native也非常適合快速原型的開發。對於實力相對雄厚的大中型公司,如果已經在使用Microsoft的.Net技術,並且擁有成體系的系統架構,那麼Xamarin或許是一個更好的選擇,架構設計得好的話在程式碼重用方面並不遜於React Native。

下面從幾個方面說一說兩者各自的優缺點:


  • 從程式語言的角度來說,C#和JavaScript都是成熟的主流程式語言,都有豐富的第三方庫和強大的社群支援。兩種語言都能夠實現從前端一直到後端的整套方案。

  • 從開發工具的角度來說,Xamarin Studio的表現只能說剛剛及格,有種和Xamarin整個產品線不在一個水平的感覺,特別是重構和介面視覺化編輯等方面還有很大的改善空間,並且在版本升級中經常會引入新的BUG,讓筆者多少有點患上了升級恐懼症。React Native本身沒有IDE,開發人員可以選擇自己熟悉的JavaScript IDE,比如:IntelliJ等。

  • 從第三方庫的角度來說,Xamarin的第三方庫給人一種不多不少、剛好夠用的感覺。在IDE中整合了Xamarin Component Store以後,第三方庫的數量質量都有了提升,開發人員使用起來也非常方便。如果遇到特殊情況需要自己開發或者繫結(binding)原生程式碼庫時可能會比較麻煩一些。React Native則完全依賴於JavaScript社群,NPM和GitHub,在需要自行開發和橋接(bridging)原生程式碼庫時個人覺得比Xamarin容易一些。


  • 價格方面,Xamarin有免費版本,但在應用包尺寸上有限制。對於企業級開發最好還是選擇它的Enterprise License,雖然價格不菲,但是可以獲得技術支援和使用平臺的其他產品(如:Xamarin.Forms和Xamarin Test Cloud)。React Native則是完全免費的。


  • 至於學習難度,很多人對JavaScript缺乏信心,覺得這門語言很難掌握和用好,而C#和Java則相對容易安全得多。這裡筆者推薦圖靈的《你不知道的JavaScript》系列,看過之後也許能夠改變這一看法。除了JavaScript語言,React Native還需要掌握Facebook的React框架,它是React Native的核心。Xamarin要求掌握C#以及iOS和Android開發的相關知識,雖然使用React Native並不一定要求會iOS和Android開發,但是對於移動應用開發者來說,無論使用什麼工具、怎樣跨平臺,瞭解各個平臺的架構設計還是非常必要的。

下面是對兩者各方面的一個總結:

enter image description here

不足和紕漏之處還望各位不吝賜教,歡迎交流討論。

相關文章