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

172

我对Xamarin.Forms和Xamarin Native之间的区别感到困惑。

这两者之间有什么区别?

那么,相比Xamarin Native,使用Xamarin.Forms的技术优点和缺点是什么呢?


1
请查看2017年1月的Xamarin移动开发的优点和缺点,这是一篇非常好的讨论文章。 - Oliver
1
底线是......就选择原生应用程序吧!这是基于我的个人经验告诉你的。我已经将表单应用程序重写为本地应用程序了。 - Tejasvi Hegde
2
2015年的评论已经不能反映Xamarin Forms的现实情况了。随着.NET Core\Standard的成熟,它已经取得了长足的进步并似乎迎来了爆发。 - Sean Anderson
这个问题需要重新开放。它已经有4年的历史了,Xamarin.Forms框架已经有了巨大的发展,可以支持企业应用程序的开发。 - James Mallon
截至2022年,以下是有关如何开始使用Xamarin Native的指南。 - Saamer
3个回答

185

Xamarin.Forms

优点

  • 为所有平台创建一个UI界面
  • 使用在所有平台上都可用的基本组件(如按钮、文本框、下拉菜单等)
  • 无需学习所有本地UI框架
  • 快速跨平台开发过程
  • 自定义本地渲染器使您能够调整控件的外观和感觉

缺点

  • 它仍是一个新的框架,仍然存在错误
  • 特别是Windows RT尚不稳定
  • 有时比直接访问本地控件慢
  • 自定义本地渲染器有限,并且文档较差

Xamarin.Android、Xamarin.iOS、Windows Phone、Windows RT

优点

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

缺点

  • 跨平台开发过程要慢得多
  • 您需要学习所有本机UI框架
  • 您可能会导致有重复的代码(因为您用三种不同的平台特定方式描述了几乎相同的UI)

此外,Xamarin在https://xamarin.com/forms上说:

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

Xamarin.Forms最适合:

  • 数据输入应用程序
  • 原型和概念证明
  • 需要很少平台特定功能的应用程序
  • 代码共享比自定义UI更重要的应用程序

Xamarin.iOS和Xamarin.Android最适合:

  • 需要专业交互的应用程序
  • 拥有高度精细设计的应用程序
  • 使用许多平台特定API的应用程序
  • 对于那些强调定制化用户界面而不是代码共享的应用程序

  • 小平台功能意味着您主要作为应用程序进行数据绑定和其他业务规则。没有太多的自定义绘图,也不会试图完美地渲染所有内容。如果您可以接受一个响应式的常见布局,则Xamarin.Forms是一个很好的选择。 - Jason Short
    我认为最好的答案是:“Xamarin.Forms:为所有平台创建一个UI”,“Xamarin.iOS,Xamarin.Android:为每个平台创建一个UI”。这为我解决了疑惑。 - tedi
    @Wosi,现在已经是2017年了,我仍然在想是否有什么变化。Xamarin Forms仍然只适用于原型和基本应用程序吗? - Dibzmania
    1
    @Dibzmania 我从未说过它仅适用于原型和基本应用程序。如果您想要一个跨平台应用程序,在每个平台上具有几乎相同的UI,则Xamarin.Forms非常适合。如果您想要每个平台上的自定义UI,则可能不会从Xamarin.Forms中受益,而应改用本机UI库。 - Wosi
    1
    我认为Nathan Williams的这篇文章很有用: https://arctouch.com/blog/xamarin-forms-xamarin-native/ - Alt-WN
    显示剩余2条评论

    152
    除了 Xamarin 网站上展示的 要点之外,您还应该考虑以下内容:
    您团队的背景
    您的团队中是否有人有使用 Java 或 Obj-C/Swift 本地编码 Android 或 iOS 的经验?这种经验可以在本地 Xamarin 中重复使用,但他们需要学习另一个平台以编写 Forms。
    如果他们对 iOS/Android 一无所知,但了解一些 XAML,则情况也是如此。当然,Xamarin.Forms 与 WPF/Silverlight 不同,但了解 XAML 肯定有助于我使用 Forms。
    性能
    Xamarin Forms 仍存在一些问题,例如初始化时间。您应该考虑这是否会对最终用户造成问题。我不介意等待我偶尔使用的仪表板应用程序一段时间才能打开,但如果同样的情况发生在消息应用程序中,我会感到愤怒。
    交付时间
    由于在使用 Forms 时代码共享更多,因此您可以期望更快的交付时间。
    您的应用程序的复杂性

    考虑到前面的观点,使用表单可能会遇到一些致命的错误(毕竟这是一项非常新的技术),这将使时间节省无效。在选择之前,请考虑您的应用程序复杂性。


    2
    如果你希望有一个好看的应用程序,那么你最终将需要为每个平台使用Xamarin Native代码开发大量自定义接口。 - Roman Nazarevych
    3
    上面的回答和评论都很老旧。如果启用AOT,性能今天不再是一个大问题。关于评论中提到的好看的应用程序也不正确。Xamarin Forms已经得到改进,您可以轻松实现漂亮的应用程序。 - Emil
    Xamarin Forms在轻松获得漂亮的UI方面并没有太大的改进。Xamarin.Shell将在这方面取得重大进展,但目前为止,如果不为每个平台编写自定义组件,仍然很难从Xamarin中获得任何远程吸引人的东西。 - Alexander
    @Alexander,请探索Xamarin中提供的标准和社区提供的UI组件。我猜想高度可定制化是让初学者觉得实现良好的UI很困难的原因。 - Abhijith C R

    45

    来自Xamarin网站

    Xamarin.Forms最适用于:

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

    Xamarin.iOS&Xamarin.Android最适用于:

    • 需要特殊交互的应用程序

    • 具有高度精美设计的应用程序

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

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


    3
    这个回答已经过时了,请使用Prism表单。获得愉快的体验。我是一个单独开发者,正在构建一款庞大的应用程序,我的生产力很高,我的应用程序可以在任何设备上运行。如果你想要漂亮的应用程序,可以使用各种第三方视图库,比如Grial UI Kit(请查看他们的免费XAML实时预览器)。记住,默认情况下,Xamarin Forms仍然使用原生控件。 - Sean Anderson

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接