我是一名C#开发人员,负责为我们的一个项目开发Android本机应用程序的项目,其C#中的逻辑引擎作为REST服务公开。 当前项目有一个使用Html5和JS的Web版本以及使用WPF的桌面。 我们有很好的Html5,Angular JS开发人员可供我们使用,现在经过一些研究来了解我需要做什么才能开始,以下是我的理解:
了解原始Android开发的Java / Python
,与其他选项相比,它有一些学习曲线
使用像Cordova, Titanium
这样的框架,它们能够将HTML5,JS代码转换为原生Android和IOS应用程序
现在我遇到了Xamarin,它可以帮助C#开发人员开发我们可以快速采用的Android和IOS应用程序,但我无法找到以下问题的令人信服的答案,这些问题基于我对项目要求的复杂性的理解,因为它们在一段时间内发生了变化:
任何建议/指针都会很棒,这可以帮助我们做出明智的决定。不希望继续使用框架,而不了解可能使未来变得困难的主要限制或障碍
答案 0 :(得分:9)
Xamarin不仅限于公分母,因为它会创建与本机代码的绑定。
关于Android性能,我听说Xamarin应用程序实际上表现更好,因为Mono运行时应该比Dalvik更成熟,尽管这可能只是一个谣言。
是的,Xamarin支持您在平台的本机工具链上可以做的任何事情。
使用Cordova,您只需编写一次应用程序并将其编译为多个平台。使用Xamarin,您可以共享尽可能多的业务代码,并且只为每个平台创建UI层,这就是您可以为每个平台自定义它的原因。
答案 1 :(得分:3)
我认为编制移动应用程序的工具比在大多数情况下使用本机更好。存在这些工具的原因,否则本机将是更容易和首选的方法。
Xamarin可以执行本机应用程序可以执行的任何操作。性能与本机应用程序相同,并且由于Xamarin在其下实现了非常高性能的代码,因此您可以获得Jeff提到的一些性能改进。
然而,在开发方面,我会说你应该坚持使用你所熟悉的技术。如果框架中没有人经验过,那么您不需要陡峭的学习曲线。如果您有很多C#开发经验,这对Xamarin来说非常方便。总是会有一个学习曲线进入移动开发,但使用你熟悉的语言会有很大的帮助。
就本机或表格而言,我主要使用Xamarin.Forms编程(现在已超过一年),而去年年底这是一项技术混乱,我现在可以说,一旦1.5.2点击生产,它将会是一项伟大的技术,虽然它需要一段时间来说服人们。
Xamarin.Android和Xamarin.iOS允许您创建本机应用程序,但您必须为每个平台执行UI。 Xamarin.Forms,允许您创建一次UI并在所有平台上共享,但它将其转换为本机控件。是的,如果您需要,您也可以在Forms上自定义每个平台的UI。 Xamarin甚至可以连接到每个平台的本机库。
答案 2 :(得分:2)
如果您是C#商店,那么一个可能是一个重要因素的项目是客户端和后端之间的共享代码,因为很少有应用程序不与服务器通信。通过使用Xamarin,如果您的后端是ASP .NET或其他.NET堆栈,您可以无缝地重用实体定义和其他代码。
它肯定需要一些规划和纪律,但总的来说,双方编译,强类型和单元测试代码已经为我的团队节省了大量时间,因为在同一语言之间总是会出现错误项目