本文概述
跨平台应用程序开发可能是完全本机工程的替代方案。在经典的本机方法中, 我们产生两种不同的应用程序:一种是用Java编写的, 适用于Android, 另一种是Swift或iOS的Objective-C。这种方式的开发非常耗时且昂贵, 因为在这种情况下, 我们必须编写两次相同的代码。另一方面, 它可以确保最高的代码一致性, 其外观与原始应用程序相似。
相反, Cross-Development允许工程师编写一次代码, 并将部分代码应用于整个平台。通常, 这是以性能和行为为代价的。跨平台社区通过不断引入新的方法和工具来减少这些优势。
在这里, 我们将研究跨平台框架Xamarin和Ionic来构建移动应用程序。
快速摘要:
Ionic和Xamarin是用于构建混合应用程序的两个流行框架。从过去的几年来看, 这两个框架都是争论的焦点。 Xamarin和Ionic之间的区别不仅限于性能, 还适用于应用程序的大小, UX / UI体验, 代码可重用性, 第三方SDK等。
在首先进行Xamarin和Ionic的比较之前, 我们应该先了解跨平台框架的好处。
跨平台移动开发的好处
根据市场和市场研究, 跨平台应用程序在市场中的普及度迅速增长, 估计值从2015年的251.9亿美元增加到2020年的804.5亿美元。
跨平台开发是一种允许针对软件环境的多个平台开发单个代码库的方法。
跨平台开发的优势是
成本效益
它可以在一个团队中进行一次调查。
一个技术栈
开发人员可以将单个技术堆栈用于多种工程任务。
可重用代码
多达90%的代码库可以从一个平台重用到另一个平台, 而不用用另一种语言设计相同的功能。
易于维护
由于不需要分别在每个平台上维护应用程序, 因此更容易维护和部署更改。
如果我们要开发跨平台应用程序, 那么下一个挑战就是确定我们要使用的工具。每个框架都有其优点和缺点。在这里, 我们将考虑Xamarin和Ionic框架的基本选择标准, 这将有助于我们做出正确的决定。
- Xamarin是Microsoft支持的跨平台移动应用程序开发框架, 该框架使用包装在.NET层中的C#和本机库。
- Ionic是一个框架, 旨在使用HTML5和Angular开发混合应用程序。
这里是我们要比较Xamarin和Ionic框架的一些内容。
Xamarin和Ionic之间的区别
以下是Xamarin和Ionic基于某些标准的区别:
一般信息:定义, 类型等
什么是Ionic ?:是”跨平台”框架还是”混合”?
Ionic是用于开发HTML5混合移动应用程序的前端框架。 Ionic不是跨平台框架, 因为它用于创建混合HTML5应用。混合是指Web和本机应用程序开发的结合。 Ionic使用网络技术(JavaScript, HTM和CSS)来创建应用程序, 这些应用程序会在网络视图中显示给移动设备。 Ionic框架不称为跨平台框架, 因为它不使用本机窗口小部件。
由于采用了混合应用程序开发框架, Ionic赋予了移动应用程序开发人员以下自由:
- 使用一个命令为所有设备生成图标和启动屏幕:Ionic资源, 可以节省至少一天的各种尺寸的图像准备。
- 即使我们直接在模拟器或设备上运行, 也可以立即反映出代码更改。
- 同时构建和测试iOS和Android应用程序, 并立即查看更改。
- 与世界各地的客户, 客户和测试人员共享我们的Ionic应用程序, 而无需浏览App / play商店
- 使用ng-Cordova快速访问设备的完整本机功能。
什么是Hamarin?
Xamarin是一个跨平台框架, 使我们能够使用C#开发iOS, Android和Mac应用程序。 Xamarin使用C#语言和.Net框架。
当我们使用非本机应用程序时, 性能可能是一个重要问题。但是Xamarin可以利用硬件加速来提高性能, 这与其他混合平台(包括Ionic)不同。
去年, 我们进行了一项实验, 以测量Native VS Cross-Platform应用程序的计算性能。我们发现, 跨平台框架的性能与本机应用程序开发框架几乎可比。
如果我们担心应用程序的性能, 那么我们应该转向Xamarin应用程序开发。 Xamarin应用程序具有大量的API访问权限, 可以为应用程序添加不同的功能。 Xamarin应用程序使用本机界面控件构建, 因此Xamarin应用程序的外观看起来像本机。
Xamarin开发平台的类型:
Xamarin支持所有主要平台, 包括Android, iOS和Windows。 Xamarin提供了本机开发环境来构建应用程序。这些开发平台是:
- Xamarin.Android:与Native开发不同, 这里我们使用C#而不是Java。我们可以在活动中定义UI, 类似于Native开发。
- Xamarin.iOS:它使用C#而不是Objective-C或Swift来开发应用程序。运行时环境类似于Native iOS开发, 因此开发人员需要使用C#进行代码编写, 并且Xamarin通过使用Objective-C包装器使代码与iOS平台兼容来完成构建工作。
- Xamarin.Forms:使用Xamarin.Forms, 我们可以构建一个跨平台应用程序, 该应用程序可与所有平台(即Android, iOS和Windows)一起使用。可以在所有平台上共享代码和业务UI。否则, 我们必须为每个平台创建单独的UI层和代码库。
Xamarin VS Ionic中的响应式UI / UX设计
图像滑块
在Ionic中, 如果我们设置一个简单的图像滑块, 则滑块最初不会响应, 直到手动微调包含应用程序的窗格为止。但是在Xamarin(Xamarin本机和Xamarin.Forms)中, 创建响应式设计很容易。
动画
在Ionic中实现动画和过渡效果不尽如人意。另一方面, Xamarin可提供流畅, 效果更好的动画和过渡效果。 Xamarin还支持自定义动画。
在动画方面, Ionic性不是构建游戏或图形复杂应用程序的理想选择。在Ionic中, 要设计高度密集的图形或高度交互的过渡, 我们没有很多工具。但是, 通过使用材质设计组件, 我们可以在Xamarin应用程序中构建自定义或奇怪的动画。
企业移动设备管理
Xamarin为企业提供的移动设备管理要比Ionic更好。 Xamarin应用程序可以轻松地与Microsoft Intune服务集成, 以处理使用BYOD设备的组织。
对于Ionic, Microsoft启动了Cordova插件, 该插件可与Ionic应用程序一起使用以远程管理企业设备。
移动数据库支持
Xamarin VS Ionic的领域
对于重视应用程序性能的开发人员, 我们使用单个和自定义API来构成高级查询并为复杂数据建模。为此, 我们使用REALM工具。
REALM不支持Ionic。但是Ionic建立了具有API支持的REALM数据库, Xamarin Apps可以使用它。
Firebase
Firebase支持Ionic应用程序, 但是对于Xamarin, Objective-C中有几个包装器可用, 但没有真正的支持。尽管使用了Firebase, 还是有一些MBaas供应商(例如IBM bluemix, Microsoft Azure和Kinvey)提供了对Xamarin Platform的支持, 以在云中构建高度可用和可扩展的应用程序。
与现有企业架构集成
Xamarin的优势在于, 可以使用现有的.NET库与Web和其他数据服务进行交互, 同时在客户端和服务器之间共享C#代码和业务逻辑。
但是Ionic只能与Node.Js, Ruby on Rails和Express.Js等现有后端技术集成。如果总体架构有所不同, 那么如果我们不熟悉Angular.Js, 那么就不会有任何共享代码库, 事情就会变得混乱, 这将极大地影响快速开发和集成。
Angular将支持所有可能的架构, 即MVC, MVVM, MVW等。在这里, 我们可以期望更平滑的集成, 但是我们必须准备花费大量时间。
第三方SDK和库支持
性能
Xamarin的性能接近Native, 因为其跨平台开发功能基于重用业务逻辑, 而不是在两种应用程序之间共享相同的代码库。开发人员可以使用Xamarin.Android和Xamarin.iOS使用Xamarin快速开发高性能应用程序。
另一方面, Ionic的性能与Native应用程序的性能不尽相同, 因为它利用Web视图来包装应用程序。
质量比较
Ionic平台使用Web技术生成混合应用程序。与Xamarin应用程序相比, Ionic应用程序将提供平均的用户体验, 而重要性则要低一些。 Xamarin将提供最接近本机应用程序的体验, 并且如果我们要与市场上的其他用户竞争, 它将成为首选工具。以下是突出显示混合HTML移动应用程序和跨平台移动应用程序的性能的分析:
- 跨平台本机应用程序的加载速度比混合应用程序快25%。
- 跨平台本机应用程序加载大型数据集的速度比混合HTML应用程序快62%。
- 跨平台本机应用程序使用的内存平均比混合HTML应用程序少50%。
- 跨平台本机应用程序使用的CPU平均比混合HTML应用程序少76%。
比较表
比较因素 | Xamarin | Ionic |
---|---|---|
Purpose | Xamarin是跨平台应用程序的需要。 | Ionic框架用于混合应用程序。 |
Language Stack | 使用C#语言。 | 使用网络技术-CSS, HTML, JavaScript。 |
支持者(支持) | Microsoft | Drift.co |
Code Reusability | 它没有任何特定的平台代码可重用性。 | 代码重用性的最佳范围。 |
Performance | 在Xamarin中, 具有最佳性能(接近于Native)。 | 在Ionic中, 性能要比使用WebView的Xamarin慢。 |
Testing | 在Xamarin中, 高级工具选项使测试过程更加顺畅。 | 在ionic中, 可以使用任何浏览器测试代码。 |
Learning Curve | Xamarin的学习曲线中等。 | Ionic涉及平滑的学习曲线。 |
社区与支持 | 强而稳定 | 强而稳定 |
Github星 | 34k | 66k |
Companies Using | Xamarin用于Justwatched和Untapped中。 | Ionic用于Cognizant, Curse和Dow Jones。 |
使用哪个框架
如果我们将Xamarin和Ionic比较用于特定的移动应用程序开发项目, 则我们的选择将取决于每个框架的特性。
例如:如果我们正在计划将与现有企业应用程序和体系结构集成的复杂业务应用程序。在这种情况下, Ionic将不是最佳选择。 Xamarin在这种情况下会更好, 因为它使用C#。它启用了代码和业务逻辑, 这些代码和业务逻辑将在客户端和服务器之间共享。
Xamarin也是构建应用程序的最合适框架, 它充分利用了本机设备功能。 Ionic仅支持有限的本机API。 Ionic的问题在于, 当我们创建包含许多代码行的复杂应用程序时, 这会使开发人员的生活变得困难。
另一方面, 如果需要开发一款小型应用程序, 而无需进行大量的自定义和少许本机外观, 那么在这种情况下, Ionic是一个不错的选择。特别是在开发团队熟悉Web技术的情况下。