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

Mr *_*ery 18 c# cross-platform xamarin xamarin.forms

我已经在Xamarin环境工作了2年,而且大多数时候我都使用过Xamarin.Forms.但是,我不知道Xamarin Cross Platform是什么?谁能提供一些结构差异?

Alm*_*Vuk 51

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

  • 传统的Xamarin方法
  • Xamarin.Forms

Xamarin网站引用了一句好话

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

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

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

在此输入图像描述

使用Xamarin Traditional方法,您可以使用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中使用该类型项目的共享项目术语应用解决方案

  • 对两个并排的图表进行了投票,这些图表说明了那些努力寻找tldr的人们. (3认同)
  • 最好的解释,这应该标记为答案。 (2认同)

min*_*fAi 13

如果你在谈论的Xamarin.iOSXamarin.Android(Xamarin母语),我想说的主要区别是在Xamarin形式,大家分享NOT ONLY业务逻辑,而且UI.在Xamarin表单中,您将在所有平台上使用基本组件(Button,Label等).这就是它被称为Xamarin.Forms的原因,因为它适用于基本形式.

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

希望能帮助到你!


jze*_*ino 7

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

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