我正在尝试评估Xamarin是否适合我的项目。该项目是适用于Android和iOS的大型复杂应用程序,具有大量客户端 - 服务器通信。用户界面是一个重点,必须非常快速和流畅。此外,我们计划大量使用UX图形效果(与Spotify应用程序相当)。
目前我们计划使用Java / Objective-C寻找两个独立的本机应用程序。但是,当然,跨平台代码共享的可能性对我们来说非常方便。
到目前为止,我所听到的大多数观点都说Xamarin - 虽然远比HTML5应用程序好 - 但却无法与原生应用程序的用户体验相媲美。此外,我测试了以下使用Xamarin(在Android上)制作的应用程序:
从我的印象来看,它们都不能与一个好的原生应用程序的速度和流畅度相匹配。
如果我们专注于一流的用户体验,Xamarin真的会成为一个可行的选择吗?它能真正匹配原生UX吗?我特别期待那些拥有大型复杂跨平台Xamarin应用程序经验的开发人员的意见。一些批评声音会非常有用。
非常感谢你!
答案 0 :(得分:6)
我在Rdio移动开发团队,所以我可以从这个角度做一些个人反思。
Xamarin允许您使用C#编写本机应用程序。任何缓慢,笨拙,丑陋或糟糕的应用通常与Xamarin层本身无关。
您可以节省一些时间来在不同客户端之间共享核心业务逻辑,但您仍然从头开始编写UI,特定于平台。你只是用C#编写它。
但是当你节省那段时间时,你会以其他方式花钱。您想要使用的所有这些SDK可能与开箱即用的Xamarin不兼容。你不会 pod install 那个iOS框架,你可能正在重新发明一些东西。 Xamarin利用了NuGet repo,因此您拥有一个组件库,可以处理大多数人需要的东西(分析,测试,Facebook SDK,JSON解析,数据库等等),但它并不涵盖所有内容。它肯定不包括苹果或谷歌产品公告当天的内容。
您希望导入项目的任何第三方代码都将通过编写custom bindings来完成。虽然通常困难,但这很耗时。 Xamarin拥有一支专门协助您的团队。这个事实说明这个过程有时很混乱。
因此,虽然缓慢,笨拙,丑陋或糟糕的表现可能不是Xamarin的错,但是你可能有时间在你通常不会去的地方,或者无法利用功能你通常会。如果第三方合作伙伴SDK给您带来问题,那么您的故障排除可能需要两倍的时间,因为有一个您无法控制的图层。
我个人的想法,不知道具体细节,就是如果你想要构建一个你计划在几年后的应用程序,这将利用最新和最好的,我告诉你为每个人写本机平台。除非你能真正看到分享业务逻辑的巨大收益,否则前期收益微乎其微。或者如果你真的喜欢C#。
答案 1 :(得分:2)
Xamarin使用原生控件。因此,您为每个平台设计了一个完全原生的UI 。用户无法看到您的应用程序是使用Xamarin或Java / Objective-C制作的。
与平台无关的UI包装器Xamarin.Forms
一起,有时会出现性能问题。但是你没有被迫使用它。如果您的Xamarin.Android
或Xamarin.iOS
应用仍然存在性能问题,那么请在代码中生成这些问题。
针对Xamarin.Android
和Java
个应用的Android应用有基准测试结果:Does anyone have benchmarks (code & results) comparing performance of Android apps written in Xamarin C# and Java?
正如您所看到的,Xamarin的内部表现随着时间的推移变得越来越好。
结论:是的,您可以使用Xamarin编写流畅的本机应用程序。