Xamarin.Forms和Xamarin Cross平台之间的区别

我在Xamarin Environment工作了2年,大部分时间都使用过Xamarin.Forms。 但是,我不知道Xamarin Cross Platform是什么? 有人可以提供一些结构差异吗?

Xamarin有两种构建移动应用程序的方法,Xamarin.Forms和Xamarin.Native。 两种方式都可以让您编写代码跨平台。

跨平台只是一个概念。 这意味着您编写的代码可以在多个平台上运行。 Xamarin是跨平台的(主要是Xamarin.Forms),因为它允许您编写在多个(跨)平台上运行的代码。

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

  • 传统的Xamarin方法
  • Xamarin.Forms

Xamarin网站有一个很好的引用

随处共享代码。 使用相同的语言,API和数据结构在所有移动开发平台上共享平均75%的应用程序代码。 使用Xamarin.Forms构建用户界面并分享近100%。

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

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

在此处输入图像描述

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

Xamarin还引用了传统方法:

你可以在Objective-C,Swift或Java中做的任何事情都可以使用Visual Studio在C#中使用Xamarin完成。

与Xamarin传统的项目结构如下: 在此处输入图像描述

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

有关Xamarin传统的更多信息,请点击这里

现在关于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优缺点的博文。

有关Xamarin.Forms的更多信息,请参阅此处 。

我希望这个答案不会让你感到困惑,并且只用一两句话就可以得出结论……使用Xamarin Traditional你可以在特定于平台的项目之间共享你的代码逻辑 ,并且使用Xamarin.Forms你可以共享代码逻辑代码整个项目的UI

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

如果你在谈论Xamarin.iOSXamarin.AndroidXamarin Native ),我会说主要的不同之处在于,在Xamarin Forms中 ,你不仅仅分享业务逻辑,还分享用户界面 。 在Xamarin表单中 ,您将在所有平台(Button,Label等)上使用基本组件。 这就是为什么它被称为Xamarin.Forms的原因,因为它适用于基本forms。

但对于Xamarin Native ,您将为每个平台创建一个UI (一个用于iOS,一个用于Android)。 您可以使用Xamarin Native做更多事情,因为您将使用本机组件。

希望能帮助到你!

我认为Xamarin Cross Platform是指编译共享代码(您的PCL或共享项目)的技术,以便在最终编译到本机平台之前,它可以被不同的平台(如Xamarin.Android或Xamarin.IOS)使用。

所以我想用某种方式说Xamarin.Forms是你用来构建跨平台兼容代码的工具之一,然后可以使用Xamarin Cross Platform技术将它们放在一起,这有意义吗?