当我们谈论 Xamarin 时,本机应用程序的开发有两种方法:
- 传统的 Xamarin 方法
- Xamarin.Forms
Xamarin 网站有一个很好的引用
到处共享代码。使用相同的语言、API 和数据结构
在所有移动开发中平均共享 75% 的应用程序代码
平台。使用 Xamarin.Forms 构建用户界面并分享
100%。
重要提示是,这些数字可能因项目而异,因此这是 Xamarin 一般使用的一些假设。
正如您从下图中看到的,这两种方法之间的“差异”。传统的 Xamarin 方法(Xamarin.iOS 和 Xamarin.Android)均构建在 Mono(.NET Framework 的开源版本)之上。要开发这些应用程序,您可以使用 C#,并且有机会共享高达 75% 的代码库,如下图所示以及 Xamarin 的引用。
Using Xamarin 传统版您可以使用 C# 作为编程语言来编写模型、调用 Web 服务等。因此,您只需编写一次代码逻辑,然后在 Xamarin.Android 和 Xamarin.iOS 项目以及这些单独的项目中使用/共享它您正在编写特定于该平台的代码,并且您可以访问其 API。
另外,Xamarin 引用了关于传统方法的一段话:
在 Objective-C、Swift 或 Java 中可以做的任何事情都可以在 C# 中完成
使用 Visual Studio 与 Xamarin 一起使用。
And project structure with Xamarin traditional looks like this:
-
共享代码项目:对于其他项目来说是通用且可重用的代码库。
-
Xamarin.Android:适用于您的 Android 应用程序的项目,您可以在其中使用 Android 特定的 API 编写代码、编写 UI 代码等。
-
Xamarin.iOS:您正在编写代码的 iOS 应用程序的项目
使用 iOS 特定的 API、编写 UI 代码等。
有关 Xamarin 传统版的更多信息here https://www.xamarin.com/platform.
现在关于Xamarin.Forms,最好的定义引用自Xamarin网站:
Xamarin.Forms 是一个允许开发人员快速创建
跨平台用户界面。它提供了自己的抽象
将使用 iOS 上的本机控件呈现的用户界面,
Android、Windows 或 Windows Phone。这意味着应用程序可以
共享大部分用户界面代码并仍然保留
目标平台的本机外观和感觉。
正如您从上面的文本中可以得出的结论,Xamarin.Forms 是一个框架,允许您使用 C# 或 XAML 编写 UI,并有机会使用 MVVM...使用 Xamarin.Forms,您可以编写代码库和 UI,这将跨平台共享。
注意:这是一个非常简单的项目结构,当然,您可以为不同的层添加更多项目
-
共享代码项目:保存您的通用代码库,并且因为您使用的是 Xamarin.Forms,所以您可以为您的 UI 编写代码
-
Xamarin.iOS 和 Xamarin.Android:特定平台的代码,以及一些高级主题,例如自定义渲染器和依赖项服务。
当然,如果您使用的是开箱即用的 Xamarin.Forms,则存在一些限制,例如您只能使用所有平台上通用的 UI 控件。您可以阅读我关于 Xamarin.Forms 优缺点的博客文章here https://almirvuk.blogspot.ba/2016/12/xamarinforms-pros-and-cons.html.
有关 Xamarin.Forms 的更多信息here https://www.xamarin.com/forms.
我希望这个答案不会让您感到困惑,并作为一两句话的结论......使用Xamarin传统的你可以分享你的代码逻辑在特定于平台的项目之间,并使用 Xamarin.Forms 您可以共享代码逻辑并且用户界面代码跨您的项目。
注意:对于共享项目和代码共享策略,您可以使用“共享项目”和“PCL”,这是另一个问题的主题...所以在这个答案中,我简化了这一点,并在中使用共享项目术语来表示该类型的项目Xamarin 应用解决方案。
2020 年夏季更新:
.NET Maui 于 2020 年 5 月发布,有关 MAUI 和 Xamarin.Forms 之间差异的问题可以在 StackOverflow 线程中找到:什么是毛伊岛? MAUI 和 Xamarin 之间有什么区别 https://stackoverflow.com/questions/62729794/what-is-maui-and-what-are-differences-between-maui-and-xamarin