c# - Xamarin.Forms 和 Xamarin 跨平台的区别

标签 c# xamarin xamarin.forms cross-platform

我使用 Xamarin Environment 已有 2 年时间,大部分时间我使用的是 Xamarin.Forms。但是,我不知道什么是 Xamarin Cross Platform?谁能提供一些结构差异?

最佳答案

当我们谈论 Xamarin 时,有两种开发 native 应用程序的方法:

  • 传统的 Xamarin 方法
  • Xamarin.Forms

Xamarin 网站上有一句很好的话

Share code everywhere. Use the same language, APIs and data structures to share an average of 75% of app code across all mobile development platforms. Build user interfaces with Xamarin.Forms and share nearly 100%.

重要的是,这些数字可能因项目而异,因此这是对 Xamarin 一般用法的一些假设。

正如您从下图中看到的这两种方法之间的“差异”。传统的 Xamarin 方法(Xamarin.iOS 和 Xamarin.Android)它们都构建在 Mono 之上,Mono 是 .NET Framework 的开源版本。要开发这些应用程序,您可以使用 C#,并且有机会共享多达 75% 的代码库,如下图和 Xamarin 的引述所示。

enter image description here

使用 Xamarin Traditional 方法,您可以使用 C# 作为编程语言来编写您的模型、调用 Web 服务等。因此您只需编写一次该代码逻辑并在 Xamarin 中使用/共享它.Android 和 Xamarin.iOS 项目,在这些单独的项目中,您正在编写特定于该平台的代码,并且您可以访问它们的 API。

此外,Xamarin 引用了有关传统方法的一段话:

Anything you can do in Objective-C, Swift, or Java can be done in C# with Xamarin using Visual Studio.

Xamarin 传统项目结构如下所示: enter image description here

  • 共享代码项目:通用且可重复用于您的其他项目的代码库。
  • Xamarin.Android:您的 Android 应用程序项目,您可以在其中使用特定于 Android 的 API 编写代码、编写您的 UI 代码等。
  • Xamarin.iOS:您正在编写代码的 iOS 应用项目 使用 iOS 特定的 API,编写您的 UI 代码等。

有关 Xamarin 传统的更多信息 here .

现在关于Xamarin.Forms,最好的定义引用自Xamarin网站:

Xamarin.Forms is a framework that allows developers to rapidly create cross-platform user interfaces. It provides it's own abstraction for the user interface that will be rendered using native controls on iOS, Android, Windows, or Windows Phone. This means that applications can share a large portion of their user interface code and still retain the native look and feel of the target platform.

正如您可以从上面的文本中得出的结论,Xamarin.Forms 是一个框架,允许您使用 C# 或 XAML 编写 UI,并有机会使用 MVVM...使用 Xamarin.Forms,您可以编写代码库和您的将跨平台共享的 UI。

enter image description here

注意:这是一个非常简单的项目结构,当然你可以为不同的层添加更多的项目

  • 共享代码项目:拥有您的通用代码库,而且由于您使用的是 Xamarin.Forms,您可以为您的 UI 编写代码
  • Xamarin.iOS 和 Xamarin.Android:特定平台的代码,以及一些高级主题,例如自定义渲染器和依赖服务。

当然,如果您使用开箱即用的 Xamarin.Forms,则存在一些限制,例如您只能使用所有平台通用的 UI 控件。您可以阅读我关于 Xamarin.Forms 优缺点的博文 here .

有关 Xamarin.Forms 的更多信息 here .

我希望这个答案不会让您感到困惑,并作为一两句话的结论......使用 Xamarin Traditional,您可以在平台之间共享您的代码逻辑 - 特定项目,并使用 Xamarin.Forms,您可以在您的项目中共享代码逻辑以及UI 代码

注意:对于共享项目和代码共享策略,您可以使用“共享项目”和“PCL”,这是另一个问题的主题...所以在这个答案中,我简化了这个并使用共享项目术语适用于 Xamarin 应用解决方案中的此类项目。

2020 年夏季更新:

.NET Maui 于 2020 年 5 月发布,有关 MAUI 和 Xamarin.Forms 之间区别的问题可以在此处的 StackOverflow 线程中找到:What is MAUI? and what are differences between MAUI and Xamarin

关于c# - Xamarin.Forms 和 Xamarin 跨平台的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43031120/

相关文章:

c# - 使WinForms富文本框忽略 "CTRL + >"和 "CTRL + <"热键

android - FusedLocationProviderClient - 找不到类型或命名空间(错误)

c# - 有什么方法可以将 Unity3d 带到前台?

c# - Entity Framework 并向查找表添加引用/条目

c# - Xamarin iOS app.config 文件

css - Xamarin 和 CSS

c# - 在 Xamarin Forms 中居中对齐工具栏项目

android - Xamarin Forms 主详细信息页面将返回按钮更改为汉堡菜单

c# - 具有 2 个不同读者的阅读流

android - Xamarin android 内存消耗在使用量达到一定阈值后无限增长