Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]

Posted

技术标签:

【中文标题】Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]【英文标题】:What is the difference between Xamarin.Forms and Xamarin Native? [closed]Xamarin.Forms 和 Xamarin Native 有什么区别? [关闭] 【发布时间】:2015-11-19 04:55:24 【问题描述】:

我对 Xamarin.Forms 和 Xamarin 本机感到困惑。

两者有什么区别?

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

【问题讨论】:

查看 The Good and The Bad of Xamarin Mobile Development 以获得截至 2017 年 1 月的精彩讨论。 底线...选择 Native!我是根据我自己的经验告诉这个的。我将表单应用程序重写为 Native。 2015 年的评论不再反映 Xamarin Forms 的实际情况。在 .NET Core\Standard 成熟之后,它已经走过了漫长的道路,并且似乎爆发了。 这个问题需要重新打开。它现在已有 4 年的历史,并且在 Xamarin.Forms 框架内取得了巨大的发展,以支持企业应用程序的开发。 【参考方案1】:

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 的应用 自定义 UI 比代码共享更重要的应用

【讨论】:

关于“需要很少特定平台功能的应用程序”,是否有示例来了解我们正在谈论的功能类型? 小平台功能意味着您主要作为应用程序执行数据绑定和其他业务规则。没有很多自定义绘图,或者试图将所有像素完美地渲染。如果您对响应式的通用布局感到满意,那么 Xamarin.Forms 非常适合。 我认为的最佳答案。这让我明白了:“Xamarin.Forms:为所有平台创建一个 UI”和“Xamarin.ios、Xamarin.android:为每个平台创建一个 UI”。谢谢! @Dibzmania 我从来没有说过它只适用于原型和基本应用程序。如果您想在每个平台上拥有一个具有几乎相同 UI 的跨平台应用程序,那么 Xamarin.Forms 非常棒。如果您希望每个平台都有一个自定义 UI,那么您可能不会从 Xamarin.Forms 中受益,而应该使用本机 UI 库。 我觉得 Nathan Williams 的这篇文章很有用:arctouch.com/blog/xamarin-forms-xamarin-native【参考方案2】:

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

您的团队背景

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

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

性能

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

交货时间

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

应用的复杂性

考虑到前一点,使用 Forms 您可能会偶然发现一些阻碍时间的错误(毕竟这是一项非常新的技术)。在选择之前考虑您的应用程序的复杂性。

【讨论】:

如果您希望拥有漂亮的应用程序,我会补充一点,您最终会为每个平台使用 Xamarin 本机代码提供大量自定义界面 这个答案和上面的评论太老了。如果您启用 AOT,性能今天不是一个大问题。关于评论中好看的应用程序也是不正确的。改进了 xamarin 表单,您可以轻松实现美观的应用程序。 Xamarin Forms 在轻松获得美观的 UI 方面并没有太大改进。 Xamarin.Shell 将在这方面做出重大改进,但到目前为止,如果不为每个平台编写自定义组件,Xamarin 仍然很难获得任何有吸引力的东西。 @Alexander,请探索 Xamarin 中提供的标准和社区提供的 UI 组件。我的猜测是,高水平的可定制性让初学者觉得实现良好的 UI 很困难。【参考方案3】:

来自Xamarin Website

Xamarin.Forms 最适合:

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

Xamarin.iOS 和 Xamarin.Android 最适合:

需要专门交互的应用

设计精美的应用

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

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

【讨论】:

这个答案是陈旧的/旧的。使用 Prism 表格。愉快的经历。我是一个开发大型应用程序的开发人员,我的工作效率很高,我的应用程序适用于所有东西。如果您想要外观精美的应用程序,可以使用各种第三方视图,例如 Grial UI Kit(查看他们的免费 XAML 实时预览器)。请记住,Xamarin Forms 默认仍使用本机控件。

以上是关于Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?

如何在 xamarin.forms 中获取状态栏高度?

Xamarin.Forms 手势密码实现

CollectionView Xamarin.Forms 中的 RefreshView

从 xamarin.mac / xamarin.forms 的编辑菜单中删除表情符号和符号

ScrollView 问题中的 Xamarin.Forms 捏手势