关于性能:Xamarin跨平台用户体验与本机开发

Xamarin cross-platform user experience vs. native development

我正在评估Xamarin是否是我项目的一个好选择。这个项目是一个大型的,复杂的Android和iOS应用程序,有很多客户机-服务器通信。用户界面是一个主要的焦点,必须非常快速和流畅。此外,我们计划大量使用UX图形效果(与Spotify应用程序相当)。

目前,我们正计划使用Java/ObjtoV.C两个独立的本地应用程序。当然,跨平台代码共享的可能性对于我们来说当然是非常方便的。

到目前为止,我听到的大多数观点都认为Xamarin——尽管比HTML5应用要好得多——无法与本地应用的UX相匹配。此外,我还测试了使用xamarin(在Android上)制作的以下应用程序:

  • RDIO
  • 市场观察
  • 布希花园发现指南
  • 平方
  • 斯图罗

从我的印象来看,没有一款软件能与一款优秀的本地应用程序媲美。

如果我们关注的是一流的用户体验,那么Xamarin真的是一个可行的选择吗?它真的能匹配本地用户体验吗?我特别想从对大型和复杂跨平台Xamarin应用程序有经验的开发人员那里寻求意见。一些批评的声音会很有帮助。

非常感谢!


我是RDIO移动开发团队的成员,所以我可以从这个角度进行一些个人思考。

Xamarin允许您用C语言编写本机应用程序。任何缓慢、刺耳、丑陋或糟糕的快乐通常与Xamarin层本身无关。

您可以节省一些时间在不同的客户机之间共享核心业务逻辑,但您仍然可以从头开始编写UI,具体到平台。你只是用C写的。

但是,当你节省时间的时候,你却把它花在了其他方面。您想要使用的所有SDK可能都与Xamarin不兼容。你不会安装这个iOS框架的pod,你可能会重新设计一个轮子来装上很多东西。Xamarin利用了nuget repo,因此您有一个组件库,可以处理大多数人需要的许多东西(分析、测试、facebook sdk、json解析、数据库等),但它并不涵盖所有内容。当然,它也不包括苹果或谷歌产品发布当天的内容。

要导入到项目中的任何第三方代码都将通过编写自定义绑定来完成。虽然通常不难,但却很费时。Xamarin有一个专门帮助你的团队。这个事实说明这个过程有时是混乱的。

因此,虽然缓慢、刺耳、丑陋或糟糕的快乐可能不是Xamarin的错,但这可能是你花时间在你通常不会去的地方的错,或者你不能利用你通常会利用的功能。如果第三方合作伙伴SDK给您带来了问题,则故障排除可能需要两倍的时间,因为存在一个您无法控制的层。

  • UI是一种洗涤。不管怎样,你是白手起家写的。
  • 业务逻辑是共享的。取决于应用程序,如果您设计应用程序以利用它,那么这可能是一个胜利。
  • 缺乏兼容性/出血边缘能力。这可能对您一点都不重要,或者您可能是希望在下一个OS发布当天利用这个热门的新API的人。

我个人的想法是,如果你想构建一个你计划在几年后使用的应用程序,这将充分利用最新和最伟大的应用程序,我会告诉你为每个平台编写本地的应用程序。除非你能真正看到分享业务逻辑的巨大收益,否则前期收益是最小的。或者如果你真的喜欢C。


Xamarin使用本地控件。因此,您为每个平台设计一个完全本地的UI。用户无法看到你的应用程序是用XAMARIN或Java/ObjaveC.C制作的。有时,在与平台无关的UI包装器Xamarin.Forms结合使用时会出现性能问题。但你不会被迫使用它。当您的Xamarin.AndroidXamarin.iOS应用程序中仍然存在性能问题时,您可以在代码中生成它们。

Android应用程序的基准测试结果与EDCOX1、1和EDCOX1、4个应用程序相比:有没有与XAMARIN C和Java编写的Android应用程序性能比较的基准(代码和结果)?

正如你所看到的,随着时间的推移,Xamarin的内部性能越来越好。

结论:是的,您可以使用xamarin编写流畅的本地应用程序。