Xamarin.Forms 和 Xamarin Native 有什么区别?

What is the difference between Xamarin.Forms and Xamarin Native?

我对 Xamarin.Forms 和 Xamarin native 感到困惑。

两者有什么区别?

那么使用 Xamarin.Forms 而不是 Xamarin Native 的技术优势和劣势是什么?

来自Xamarin Website

Xamarin.Forms 最适合:

  • 数据录入应用程序
  • 原型和概念验证
  • 几乎不需要平台特定功能的应用程序
  • 代码共享比自定义更重要的应用程序 UI

Xamarin.iOS & Xamarin.Android 最适合:

  • 需要专门交互的应用程序

  • 设计精美的应用程序

  • 使用许多特定于平台的 API 的应用程序

  • 自定义 UI 比代码共享更重要的应用程序

Xamarin.Forms

优点

  • 为所有平台创建一个UI
  • 使用所有平台上可用的基本组件(如按钮、文本字段、微调器等)
  • 无需学习所有原生 UI 框架
  • 快速的跨平台开发过程
  • 自定义本机渲染器使您能够调整控件的外观和感觉

缺点

  • 它仍然是一个新框架,仍然包含错误
  • 特别是WindowsRT还不稳定
  • 有时比直接访问本机控件慢
  • 自定义本机渲染器有边界并且记录很少

Xamarin.Android,Xamarin.iOS,WindowsPhone,WindowsRT

优点

  • 每个平台创建一个 UI
  • 轻松调整特定于平台的 UI 功能和组件
  • 充分利用你的 UI

缺点

  • 跨平台开发过程要慢得多
  • 您需要学习所有原生 UI 框架
  • 您可能会导致重复代码(正如您在三种不同平台特定方式中描述的几乎相同UI)

除了 Xamarin 在 https://xamarin.com/forms 上所说的:

哪种 Xamarin 方法最适合您的应用程序?

Xamarin.Forms 最适合:

  • 数据录入应用程序
  • 原型和概念验证
  • 几乎不需要平台特定功能的应用程序
  • 代码共享比自定义更重要的应用程序 UI

Xamarin.iOS & Xamarin.Android 最适合:

  • 需要专门交互的应用程序
  • 设计精美的应用程序
  • 使用许多特定于平台的 API 的应用程序
  • 自定义 UI 比代码共享更重要的应用程序

除了 Xamarin 网站中显示的 points,您还应该考虑:

你的团队背景

您团队中的任何人以前是否有过为 Android 或 iOS(使用 Java 或 Obj-C/Swift)进行本地编码的经验?这种经验在本机 Xamarin 中得到重用,但他们必须学习另一个平台才能在 Forms 中编码。

如果他们对iOS/Android一无所知但知道一些XAML,情况也是如此。当然 Xamarin.Forms 与 WPF/Silverlight 不同,但了解 XAML 确实帮助了我使用 Forms。

性能

Xamarin Forms 仍然存在一些问题,例如初始化时间。您应该考虑这是否会对您的最终用户造成问题。我不会费心等待一段时间才能打开我偶尔使用的仪表板应用程序,但如果消息传递应用程序发生同样的事情,我会很生气。

交货时间

由于使用 Forms 时代码共享更大,因此您可能期望更快的交付时间。

您的应用程序的复杂性

考虑到前一点,使用 Forms 您可能会偶然发现一些显示停止程序错误(毕竟这是一项非常新的技术),这将使时间收益无效。选择之前请考虑您的应用程序的复杂性。