Xamarin.Forms和Xamarin Cross Platform之间的区别

时间:2017-03-26 16:05:46

标签: c# xamarin xamarin.forms cross-platform

我在Xamarin环境中工作了两年,大多数时候我都使用过Xamarin.Forms。但是,我不知道Xamarin Cross Platform是什么?任何人都可以提供一些结构差异吗?

4 个答案:

答案 0 :(得分:45)

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

  • 传统的Xamarin方法
  • Xamarin.Forms

Xamarin网站有一个很好的引用

  

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

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

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

enter image description here

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

Xamarin还引用了传统方法:

  

您可以在Objective-C,Swift或Java中执行的任何操作都可以在C#中完成   使用Xamarin使用Visual Studio。

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

  • 共享代码项目:您的常用代码库和可重复使用的代码库 其他的项目。
  • Xamarin.Android :适用于您的Android应用的项目 使用Android特定API编写代码,编写UI代码等。
  • Xamarin.iOS :您正在编写代码的iOS应用的项目 使用iOS特定的API,编写UI代码等

有关Xamarin traditional here的更多信息。

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

  

Xamarin.Forms是一个允许开发人员快速创建的框架   跨平台用户界面。它提供了自己的抽象   将在iOS上使用本机控件呈现的用户界面,   Android,Windows或Windows Phone。这意味着应用程序可以   共享他们的用户界面代码的大部分仍然保留   目标平台的原生外观。

正如您可以从上面的文本中得出的结论,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 传统,您可以在特定平台之间共享代码逻辑项目,使用Xamarin.Forms,您可以在项目中共享代码逻辑以及 UI代码

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

答案 1 :(得分:13)

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

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

希望它有所帮助!

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

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

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