【.com快译】统计显示:目前全球共有52.2亿人在使用移动设备,其中46.6亿人通过设备访问各种移动设备应用程序。显然,创造新的应用已经成为企业在激烈竞争中的标配。目前,有多种技术和框架可用于应用程序开发,尤其是移动应用程序开发。其中最常见的是Xamarin和ReactNative。它们都支持跨平台开发,都可以提供“一次编写,随处部署”的功能。但鉴于它们在市场份额、代码编译、SDK环境等方面的差异,本文将对两者进行比较,让您了解它们的基本原理,并在实际项目中做出明智的选择。什么是ReactNative?ReactNative是一个基于JavaScript和JSX的开源框架,由Facebook于2015年创建并启用。其目的是为iOS和Android构建原生应用程序。其中,JSX代表了XML-Esque标签的合并,可以在ReactNative框架中使用。React可以运行应用程序并将其呈现到目标设备的本机平台。相应地,各种应用程序将具有与使用原生应用程序开发框架(例如用于Android的Java或用于iOS的Objective-C)构建的应用程序相同的性能。同时,ReactNative移动应用程序开发还允许开发人员创建特定于平台的组件版本。由于独立的代码库,这些组件可以在不同的平台上共享和使用。统计数据显示,截至2020年,全球42%的开发者正在使用ReactNative构建可在99%的移动设备上运行的应用程序。Facebook、Walmart、Bloomberg和Instagram等明星公司都在使用ReactNative开发他们的移动应用程序。ReactNativeScalable社区支持的优势:全球开发爱好者在ReactNative社区分享大量知识并提供热情支持。这个社区的每个人还可以免费获得大量可用于移动应用程序开发的免费组件。实时热重载:React的实时重载功能允许框架实时编译和读取开发人员所做的更改。也就是说,它会验证更改并刷新整个应用程序而无需实际重新加载。另一方面,热重载意味着当向模拟器提供新文件时,可以从头读取整个文件以更新更改。在这里,它只会更新已更改的组件。代码可重用性:ReactNative是减少代码大小的首选。它允许开发人员重用90%的代码来构建iOS和Android应用程序。此外,ReactNative还节省了大量开发时间,因为代码只需少量修改即可重用。第三方插件支持:由于ReactNative不可能将所有组件都包含在同一个框架中,因此开发者在使用这个JavaScript驱动时可以使用地图和双因素身份验证等第三方功能来渲染或增强React框架。本机应用程序。提供最佳性能:应用程序的性能及其提供更好客户体验的能力直接取决于构建它的框架。由于开发人员可以使用ReactNative的原生模块和组件来构建应用程序,因此他们可以创建互不干扰的原生API和程序代码。也就是说,他们可以创建代码量更小、开发周期更快的以性能为中心的应用程序。什么是Xamarin?由Microsoft创建的Xamarin目前仅占开发社区的14%(2019年为26%,https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/)。Xamarin虽然和ReactNative类似,但更适合.Net这个开源平台。Xamarin的主要功能是保持共享代码和平台代码之间的通信。Xamarin通过使用独立于平台的工具和代码库扩展了.Net开发人员平台的功能。同时Xamarin可以使用底层平台提供的所有功能。也就是说,当应用程序在Android上运行时,它会利用特定于平台的功能来提供预期的用户体验。此功能也适用于在iOS设备上运行的应用程序。此外,Xamarin还可以使用底层平台的硬件加速功能。XamarinOne技术栈的优势:作为一个内置技术的生态系统,Xamarin使开发人员能够一次构建多平台应用程序。例如:使用运行在.Net框架上的C#语言,开发者可以实现96%的代码重用。当然,他们也可以使用.Net和VisualStudio。共享代码:Xamarin旨在方便用户通过通用代码库开发可以在不同平台上运行的应用程序。同时,应用程序可以共享相同的业务逻辑、数据库访问和网络通信。开发人员唯一需要更改的是用户界面,以确保应用程序在每个平台上都具有本地外观。原生性能:与其他跨平台开发工具相比,Xamarin可以提供高度原生且无可比拟的应用程序性能。在图片加载速度方面,Xamarin仅比原生应用慢14%。XamarinForms提供流畅的用户体验:Xamarin.Forms拥有一个包含100%可重用代码API组件和元素的库。开发者可以使用内置的Xamarin.iOS自定义各种元素。当然,在Android平台上同样适用。代码库数量的增加:过去,Xamarin没有可供开发人员使用的广泛代码库。如今,Microsoft开发团队正在不断构建各种常见用例和组件。例如:Xamarin可以提供双因素认证(2FA)等,可以直接塞进使用的代码库中。开发商该如何选择?通过上面的介绍,我们并不能发现,虽然两者功能相似,但ReactNative比Xamarin拥有更大的开发者群体。下面,我们就从各个原创特性入手,帮大家梳理一下它们不同的适用场景。编译其跨平台开发功能——即时(JIT),使开发人员能够在运行时编译字节码或源代码。但是,Android允许JIT,而iOS不允许JIT限制任何形式的跨平台应用程序开发框架。ReactNative:由于iOS不允许JIT,源代码的任何更改都需要开发人员返回到Android代码进行更改。只有完成后,它们才能作为iOS应用程序运行。Xamarin:为了绕过这个问题,Xamarin计算代码编译的提前时间(AOT)。AOT编译器的任务是分析字节码,用机器语言编译它,然后对选定的路径执行相同的操作。虽然这可以减少启动时间并提高应用程序性能,但也会增加文件大小。同时,由于Xamarin默认启用了JIT,因此您可以在使用前配置AOT。性能无论是原生的还是Xamarin开发的移动应用,都需要通过优秀的性能给用户留下良好的印象,并与之流畅交互。ReactNative:NativeThread、JavaScriptThread,以及ReactNative中连接它们的中介桥,都可以提升性能。其中,NativeThread通过桥向JavaScriptThread发送信号。但是,由于JavaScriptThread可以处理的消息数量有限,当消息数量增加时,应用程序的UI会出现滞后。通过使用为此目的构建的特定第三方库,例如Proguard,我们可以更快地优化字节码。Xamarin:虽然Xamarin.Forms的性能指标不如原生框架,但作为补偿,Xamarin可以以更低的成本和更少的时间完成处理API请求、序列化、反序列化、图片保存、加载等简单的开发任务。此外,由于Xamarin.Forms包括Xamarin.Android和Xamarin.iOS,它们都允许开发人员自定义共享代码库,从而为用户提供原生外观和体验。可以说,在某些操作上,Xamarin.Android甚至可以表现出比原生框架更好的性能。总的来说,Xamarin不仅可以提升性能,还可以匹配原生框架的指标。应用程序架构应用程序架构是指那些能够建立合理的编程模型和结构的开发框架。可以说,更强大、更快、更稳定的基础设施,往往能让开发者以最小的成本解决各种复杂的开发问题。ReactNative:ReactNative架构由四个关键组件组成:React、JavaScript(JSC)、Bridge和NativeSide。习惯于使用单向数据流和最新版本的JavaScript的开发人员可以轻松使用它。对于iOSReactNative移动应用的开发,JavaScriptCore将运行时(runtime)的所有代码分离出来;对于Android,它们需要捆绑在应用程序中。虽然将代码捆绑在一起确实可以带来更好的原生性能,但是这样做的代价就是性能问题。随着应用程序本身大小的增加,延迟很可能会逐渐出现。Xamarin:Xamarin支持不同的架构模式,包括:MVVM(Model、View、View、Model)、MVC(Model、View、Controller)、BusinessFacade、Singleton、Asynchronous等。对于使用Xamarin的开发者来说非常容易到使用ASP.NET、MVC、Web窗体和其他相关模型和视图工具。同时,XamarinMVP非常适合那些使用该框架构建的原生应用程序。当然,为了充分利用Xamarin,开发者也可以采用MVVM模式。可以看出,这两个框架在应用架构方面表现不相上下。社区支持和帮助社区支持对于初学者和经验丰富的开发人员之间的问答、分享和相互学习至关重要。ReactNative:虽然ReactNative是一个较新的框架,但Facebook已经为它构建了一个庞大且可扩展的社区支持。目前,社区拥有超过2200名专业开发者和19800个直播项目。同时,它有专门的Discord频道和论坛,每天帮助开发者了解框架的最新信息。Xamarin:Xamarin在开发社区中有着深厚的根基。它在120个国家/地区拥有约140万开发人员。与ReactNative类似,它也是一个开源网络,因此各种贡献者可以通过协作努力相互学习和成长。不过,与ReactNative的开放社区不同,Xamarin提供了两个官方渠道,分别是XamarinBlog和XamarinQ&A。当然,还有其他类型的社区支持:StackOverflow和Reddit。让最终用户开心的用户体验往往是开发人员的最终目标。因此,对于移动应用来说,用户体验往往决定着软件产品的成败。ReactNative:ReactNative在响应Android和iOS不断变化的原生元素需求方面较慢。ReactNative主要提供现成的UI工具包,包括ReactVirgin和Shoutem,可以帮助开发者创建各种原生UI组件。其中,内部元素如:分页、快速轮播、活动标记等,可以帮助开发者提升跨平台的用户体验。Xamarin:Xamarin允许用户分别为Android和iOS自定义应用程序元素和组件。同时允许开发者使用原生API和SDK进一步提升用户体验。此外,它通过利用原生UI和硬件加速极大地“催化”了Xamarin移动应用程序的开发。因此,对于希望提供更好用户体验的开发人员来说,Xamarin可能更可取。总结综上所述,Xamarin在很多方面都超越了ReactNative。不过有趣的是,ReactNative的使用率仍然远高于Xamarin。根本原因在于:开发者掌握编程语言的能力。根据2018年的统计(,全球有1070万JavaScript开发者和620万C#开发者。客观地说,选择哪种框架其实完全取决于你是否想通过一个简单的UI来使用它。你是否想构建一个应用程序。,或具有类似原生UI的软件产品,可以利用平台硬件来提高性能。如果你的目标是前者,请选择Xamarin;如果是后者,请考虑ReactNative。原标题:XamarinvsReactNative:2021年选择合适的平台,作者:HimanshuPatel
