Xamarin的优点和缺点Vis访问其他框架

我是一名C#开发人员,负责为我们的一个项目开发Android本机应用程序的项目,其C#中的逻辑引擎作为REST服务公开。 当前项目有一个使用Html5和JS的Web版本以及使用WPF的桌面。 我们有很好的Html5,Angular JS开发人员可供我们使用,现在经过一些研究来了解我需要做什么才能开始,以下是我的理解:

  • 学习用于原生Android开发的Java / Python ,它与其他选项有一些学习曲线

  • 使用像Cordova, Titanium这样的框架,它们能够将HTML5,JS代码转换为原生Android和IOS应用程序

  • 现在我遇到了Xamarin,它可以帮助C#开发人员开发我们可以快速采用的Android和IOS应用程序,但是我无法找到令人信服的答案,这些问题基于我对复杂性的理解。项目要求,因为它们在一段时间内发生变化:

    • Xamarin生成的应用程序在真正的Android系统中有任何性能问题吗?
    • Xamarin应用程序是专为Android开发时优化的还是我们还有一个共同的分母代码?
    • Xamarin是否支持大多数复杂UIfunction,如地图,网格,默认情况下可在原生Android上使用?
    • Xamarin如何看待像Phonegap这样的JS类似的混合系统,哪一个是更好,更可采用的框架

任何建议/指针都会很棒,这可以帮助我们做出明智的决定。 不希望继续使用框架,而不了解可能使未来变得困难的主要限制或障碍

Xamarin不仅限于公分母,因为它创建了对本机代码的绑定。

关于Android性能,我听说Xamarin应用程序实际上表现更好,因为Mono运行时应该比Dalvik更成熟,尽管这可能只是一个谣言。

是的,Xamarin支持您在平台的本机工具链上可以做的任何事情。

使用Cordova,您只需编写一次应用程序并将其编译为多个平台。 使用Xamarin,您可以共享尽可能多的业务代码,并且只为每个平台创建UI层,这就是您可以为每个平台自定义它的原因。

我认为对移动应用程序进行编程的工具比在大多数情况下使用本机更好。 存在这些工具的原因,否则原生将是更容易和首选的方法。

Xamarin可以执行本机应用程序可以执行的任何操作。 性能与本机应用程序相同,并且由于Xamarin在其下实现了非常高性能的代码,因此您可以获得Jeff提到的一些性能改进。

但是,在开发方面,我会说你应该坚持使用你熟悉的技术。 如果框架中没有人经验,那么您不需要陡峭的学习曲线。 如果你有很多C#开发经验,这对Xamarin来说很方便。 总是会有一个学习曲线进入移动开发,但拥有一门你熟悉的语言会有很大帮助。

就本机或表格而言,我主要使用Xamarin.Forms编程(现在已经超过一年),而去年年底这是一项混乱的技术,我现在可以说,一旦产生1.5.2的命中,这将是一个伟大的技术虽然需要一段时间才能让人们相信这一点。

Xamarin.Android和Xamarin.iOS允许您创建本机应用程序,但您必须为每个平台执行UI。 Xamarin.Forms,允许您创建一次UI并在所有平台上共享,但它将其转换为本机控件。 是的,如果您需要,您也可以在Forms上自定义每个平台的UI。 Xamarin甚至可以连接到每个平台的本机库。

如果您是C#商店,那么一个可能是一个重要因素的项目是客户端和后端之间的共享代码,因为很少有应用程序不与服务器通信。 通过使用Xamarin,如果您的后端是ASP .NET或其他.NET堆栈,您可以无缝地重用实体定义和其他代码。

它肯定需要一些规划和纪律,但总的来说,在双方编译,强类型和unit testing代码已经为我的团队节省了大量时间在同一项目中的语言之间总是会出现的错误。