Xamarin与React Native与Ionic:跨平台移动框架比较

xixixi 2018-04-08

跨平台移动开发的好处

在我们仔细研究React,Xamarin和Ionic框架之间的差异之前,让我们简要讨论一下跨平台开发的核心价值。

根据市场和市场研究报告,跨平台应用程序市场的普及率正在快速增长,预计从2015年的251.9亿美元增加到2020年的804.5亿美元。

跨平台开发是一种允许为多种平台或软件环境开发单个代码库的方法。

所以,跨平台开发的主要优势是:

  • 成本效益。它使投资只需一次,并在一个团队中。

  • 一个技术堆栈。开发人员可以使用单个技术栈进行各种工程任务。

  • 可重用的代码。多达90%的代码库可以从一个平台重用到另一个平台,而不是用另一种语言设计相同的功能。

  • 易于维护。维护和部署更改比较容易,因为不需要分别在每个平台上维护应用程序。

如果您已经决定开发跨平台的应用程序,那么接下来的挑战就是决定选择哪个工具。每个框架都有其优点和缺点。我们将考虑Xamarin,React Native和Ionic框架的基本选择标准,以帮助您做出正确的决定。

Xamarin是一个Microsoft支持的跨平台移动应用程序开发框架,它使用.NET层中包装的C#和本地库。您可以在我们的文章Xamarin移动开发的优点和缺点中找到有关Xamarin的更多详细信息。

React Native是一个框架,允许使用JavaScript和React.JS构建接近本地的移动应用程序(而不是“HTML5应用程序”或“混合应用程序”)。在ReactJS和React Native的好与坏方面阅读关于React Native开发的更多信息。

Ionic  - 是一个旨在使用HTML5和AngularJS开发混合应用程序的框架。

Xamarin与React Native与Ionic:跨平台移动框架比较

语言堆栈

Xamarin:C#是.NET环境的核心

Xamarin使用C#,一种静态类型语言和适用于所有移动平台的.NET框架。任何可以用Objective-C,Swift或Java实现的东西,开发人员可以使用Xamarin在C#中完成。

开发人员不能使用Xamarin提供的用于iOS和Android的本机开放源代码库,但可以使用各种.NET库。许多现有的开源和内部源代码项目可以在Xamarin.iOS或Xamarin.Android项目中重用,这要归功于C#和.NET框架的结合。

React Native:拥有JavaScript和React.JS的工程师

React Native使用目前最流行的高级动态编程语言之一的JavaScript。根据最新的Stack Overflow调查显示,在他们的工作中使用JavaScript的开发人员数量为66.7%。这意味着为您的应用程序找到开发人员将很容易。

React Native将JavaScript和React.JS(一种Web框架)的优点结合起来,并由Facebook提供支持。React Native的强大之处在于,它允许在开发人员需要时使用Objective-C,Swift或Java语言编写模块。在React Native应用程序中使用本地模块和库,您可以处理计算繁重的操作,如图像编辑或视频处理。

Ionic:使用JavaScript的超集开发 - TypeScript

Ionic框架使用HTML5,CSS和JavaScript等Web技术来编写和运行应用程序,并要求Cordova包装器访问本地平台控制器。Ionic核心是用Sass编写的,基于流行的JavaScript框架 - AngularJS。

Ionic的主要编程语言是TypeScript,它通常是编译为普通JavaScript的JavaScript的超集。TypeScript提高了代码的质量,因为它有助于在代码输入过程中发现并消除错误。使用TypeScript是可选的,应用程序可以用简单的JavaScript编写。

运行代码和性能

Xamarin.Forms和Xamarin.Android / iOS - 两种构建应用程序的方法

一般来说,Xamarin的表现被认为是接近本地的。但Xamarin提出了两种构建移动应用的方法:

  • Xamarin.Android和Xamarin.iOS

  • Xamarin.Forms

Xamarin.Android和Xamarin.iOS。Xamarin.Android / iOS应用程序的行为与本机类似,因为它们的跨平台功能主要侧重于共享业务逻辑而不是代码库。他们使用本地用户界面控件并利用平台特定的硬件加速。它有助于实现接近原生的性能,而这在解决运行时代码的解决方案时无法完成。Xamarin将C#编译成机器代码,但更多的在下面。

Xamarin.Forms。与Xamarin.Android / iOS相反,Xamarin.Forms专注于广泛的代码共享,而不是特定于平台的行为。百分之九十六的源代码可以重复使用Xamarin.Forms。根据我们Xamarin性能研究的测量结果,与Xamarin.Native和纯本地开发相比,这在许多操作中显着降低了代码性能。

至于代码编译,C#在每个平台上以不同的方式编译为本地低级语言。

适用于iOS的AOT。预先编译(AOT)用于iOS。AOT意味着源代码编译成本地代码发生在应用程序启动之前。

适用于Android的JIT。即时(JIT)编译通常用于Android。JIT意味着代码是在运行时本地编译的。

JIT编译完全不适用于iOS。但是AOT和JIT都可以在Android上使用。

React Native:渲染到本机API

React Native性能接近本机,因为它将代码组件直接呈现给本机API。React还允许使用用Objective-C和Java编写的本机iOS和Android模块。它们不能在两个平台上重复使用,其主要目的是在图像编辑或视频播放等复杂操作中具有更高的性能。代码库的其余部分可以跨平台共享。通常,React Native应用程序可以共享80-90%的JS代码。使用本机库还可以优化应用程序的性能。

React Native使用适用于Android的JIT编译,但不提供适用于iOS的AOT。在iOS的情况下,它不会编译,而是解释JavaScript代码。

快速注意。编译和解释的区别在于,编译将源代码转换为较低级别的语言,而解释则直接执行一种编程语言的指令,在移动中翻译它。解释需要更多的时间用于整体执行,但分析源代码的时间更少。相比之下,编译器需要更多时间来分析源代码,但总体执行时间更短。

Ionic:使用网络技术进行渲染

Ionic性能不像Xamarin或React Native那么接近本机,因为它使用Web技术来呈现应用程序。这种方法大大降低了速度。此外,Ionic不使用本地组件,并尝试使用Web技术重新创建本机行为。为了将应用程序与本机API相连接,Ionic使用本机封装器Cordova并将应用程序行为调整为基础平台。

Ionic强大的测试过程非常快速。它可以在浏览器中立即运行。该框架还附带大量预制和预先设计的组件,可简化开发周期。

为了运行代码,Ionic使用适用于Android的JIT编译和平台浏览器WKWebView作为iOS的默认设置。正如我们所提到的,在iOS上运行JIT编译通常是不可能的,但有一个例外。iOS上的WKWebView支持JIT。因此,WKWebView对象用于将Web内容嵌入到应用程序中。WKWebView将JS代码的JIT转换提供给机器代码,提高了渲染性能。

但是,在复杂和丰富的应用程序上,Ionic无法实现与React Native和Xamarin相媲美的性能结果。

图形用户界面

Xamarin:Xamarin.Android / iOS和Xamarin.Forms中的自动化UI映射

Xamarin允许您通过两种方式创建用户界面:使用Xamarin.Android / iOS或Xamarin.Forms。

Xamarin.Android/iOS。第一种方法需要使用本地平台特定的UI:工程师可以使用本地UI控件和布局创建用户界面。这种方法消耗很多时间,但这种划分确保了移动应用的本地外观和感觉。

Xamarin.Forms。第二种方法是使用Xamarin.Forms,它在运行时自动将每个页面及其控件映射到平台特定的界面元素。借助Xamarin.Forms,您可以使开发过程更快,并以本地外观和感觉为代价节省大量资源。但是,Xamarin.Forms可以成为公司和内部项目的一个很好的解决方案,其中UI部分不像公共应用程序那样关键。

React Native:与本机iOS / Android控制器交互并使用ReactJS库

React Native模块与本机iOS和Android UI控制器进行交互,使用户体验接近本机应用程序。它还将ReactJS库与广泛的UI组件一起使用,这可以简化UI开发。因此,React Native有许多开箱即用的UI组件,如按钮,模块和滑块,这些使开发人员能够更快地工作。

Ionic:使用Cordova重新创建本地行为

离子UI根本不使用本地组件,并在HTML和CSS中呈现所有内容。然后它应用Cordova重新创建本地移动行为。框架附带的AngularJS组件也有助于Ionic看起来像本机。

目前,Ionic提供了新的本地样式的UI元素和布局,这些元素和布局在网络上并不存在,并且仅在iOS和Android上使用原生SDK提供。

社区认可

在Github上的统计数据显示,这三个当中最出演框架阵营与原住民59800星星,Ionic是排在第二位33.3万,Xamarin需要的地方纬度与只有3.6万。如此低的Xamarin结果可以用最近才成为开源产品并且仍然需要使用专有的Visual Studio IDE的事实来解释。

Xamarin与React Native与Ionic:跨平台移动框架比较

Xamarin

根据最流行的框架的最新Stack Overflow统计,React也是跨平台仪器中使用最多的,并且需要19.5%的响应。8.3%的工程师使用Xamarin。虽然Ionic没有列出这个清单,但它的核心是Cordova。

Xamarin与React Native与Ionic:跨平台移动框架比较

React Native

React Native开发者社区正在快速增长,并且已经拥有许多经验丰富的工程师。这使得启动React项目变得更容易:1)开发人员可以很容易地获得普通问题的答案,2)大型社区已经创建了许多第三方库。

Git Hub存储库上的React Native统计信息令人印象深刻,它是GitHub上的第13个最有星号的存储库。

根据StackOverflow技术概述,React Native框架不仅是最常用的跨平台工具,而且也是开发人员中最受欢迎的工具。

Xamarin与React Native与Ionic:跨平台移动框架比较

在上图中我们可以看到,66%的受访者高度认可React,而Xamarin爱好者的数量仅为所有受访工程师的48.7%。再次,Ionic并没有将它列入最受喜爱的框架列表,但它使用Cordova,38.8%的工程师高度认可它。

Facebook,Instagram和Airbnb使用React Native。

Ionic

每个平台的成功取决于其社区。Ionic社区持续增长,根据2017年Ionic开发者调查,大约80%的工程师认为自己经验丰富。有一个特殊的Q&A Ionic论坛,开发人员可以提问并收到答案或建议。Ionic为其Slack频道提供了一个Slack社区,开发人员可以与世界各地的其他Ionic工程师合作。Ionic在StackOverflow上的问题比React Native更多,但比Xamarin少。

Ionic生态系统也在不断发展,并且在诸如Webjunto,Spatial Vision和keensoft等专业IT服务公司中获得新的合作伙伴。

CAT,Diesel和Target使用Ionic。

价格

Xamarin

根据MIT许可,Xamarin已经成为开源产品。虽然它可以免费使用,但您仍然必须安装Visual Studio IDE,它是专有的,并且是以订阅方式分发的。它可用于最多5个用户的非企业项目。但某些功能被锁定在专业和企业许可证后面。每位用户的年度订阅价格为企业许可证2,999美元,专业版许可证为539美元。

React Native

React Native是一个完全开源的项目。您可以免费使用它和它的库。

Ionic

Ionic在注册和开发期间也是一个开源框架。但有一个名为Ionic Pro的伴侣平台,它有三种包装:开发人员,团队和业务。订阅费用从每月29美元到199美元不等,并提供更多功能,例如更多错误历史记录跟踪和协作工具的日期,以便管理大型团队中的Ionic工作。

最后

React Native由于其开源发行版和JavaScript语言,React Native是一个通用框架。如果您只是在没有移动体验的情况下启动移动开发计划,我们建议您首先考虑此框架。聘请React Native开发团队会容易得多。尽管使用React Native可以实现代码重用(某些应用程序中的共享代码库高达90%),但框架背后的想法是使用单一技术,并将源代码调整为最终平台特定。

Xamarin。如果您已经拥有.NET团队,则使用Microsoft产品,云解决方案或Visual Studio来完成其他任务,Xamarin是一个不错的选择。如果您需要高性能,可靠性和支持,这也是一个不错的选择。另一方面,Xamarin.Forms允许您开发企业应用程序,其中UI不如功能重要,但通过代码共享简化开发至关重要。

Ionic是上述三种中最经济的框架。您甚至不需要专门的移动团队。我们建议使用它来开发适合流量的应用程序,企业解决方案或针对特定事件或任务的简单临时应用程序。

但是,这并不意味着您不能将Ionic用于全面的公共应用程序。Ionic Pro为工程设计高级应用程序基础设施提供了一个很好的机会,并且随着框架的不断发展,未来它可能会变得更好。

相关推荐