Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 将mvvmcross与xamarin.forms和Xamarin Native使用之间的关键区别是什么


将mvvmcross与xamarin.forms和Xamarin Native使用之间的关键区别是什么


当比较MVVMCross与Xamarin.Forms.Forms和Xamarin Anitial进行比较时,主要出现了几个关键差异,主要是在UI灵活性,代码共享和开发方法方面。

UI灵活性和控制

-xamarin.forms:此框架提供了跨平台共享的UI层,该框架通过允许您编写一次UI代码并将其部署在多个平台上来简化开发。但是,此共享的UI可以将自定义限制为特定于平台的功能,这需要自定义渲染器才能获得更高级的UI元素[7] [9]。 MVVMCross可以与Xamarin.Forms一起使用以管理业务逻辑和导航,但是UI仍然在平台上标准化[1] [10]。

-Xamarin Antial:在使用MVVMCross的Xamarin Anitial时,您可以完全控制每个平台的UI。这允许特定于平台的UI实现,从而最大程度地提高每个平台的本机外观和感觉。尽管这种方法需要更多的努力来为iOS和Android开发单独的UI层,但它提供了更大的灵活性和自定义[7] [9]。

##代码共享和重复使用

-xamarin.forms:使用Xamarin.Forms,您不仅可以共享业务逻辑(通过MVVMCross),还可以共享跨平台的UI代码。这简化了开发并减少您需要维护的代码量。但是,UI仅限于在所有平台上起作用的一组通用元素[4] [10]。

- Xamarin Native:在带有MVVMCross的本机Xamarin设置中,您可以在平台上共享业务逻辑(ViewModels),但是您必须为每个平台分别实现UI。这种方法允许在使用MVVMCROSS时在演示层和UI逻辑中进行更多代码重复使用,但仍需要特定于平台的UI开发[9]。

##开发方法

-Xamarin.Forms:使用Xamarin.Forms和MVVMCross开发的开发人员通常会喜欢没有丰富的移动经验,因为它简化了跨平台UI开发。该框架处理了许多基本复杂性,使开发人员可以专注于共享的逻辑和UI [4] [10]。

- Xamarin本地:与MVVMCross的本地Xamarin开发通常受到希望对UI进行细粒度控制并且对平台特定开发感到满意的开发人员的青睐。这种方法需要在本地iOS和Android开发方面具有更多的专业知识,但在UI设计和实施方面提供了更大的灵活性[7] [9]。

##导航和绑定

-Xamarin.Forms具有MVVMCROSS:Xamarin.Forms中带有MVVMCross的导航在ViewModel级别进行管理,从而可以清除关注点。 MVVMCROSS提供了增强的结合功能,例如后退值,尽管它缺乏某些功能,例如标准Xamarin中的源属性。Formsbindings [2] [10]。

- 带有MVVMCROSS的Xamarin天然:在本机Xamarin项目中,MVVMCross处理导航和查看/ViewModel配对,从而允许跨平台建立一致的MVVM架构。该设置使开发人员能够利用特定于平台的导航模式,同时保持共享的业务逻辑层[3] [9]。

总而言之,尽管两种方法都可以利用MVVMCross进行MVVM架构,但Xamarin.Forms提供了共享的UI层,对平台特定的UI功能的控制较少,而Xamarin Anitial可以完全控制UI自定义,但需要更多的开发工作来进行单独的UI实施。

引用:
[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-forms-mvvm-framework/
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://www.reddit.com/r/androiddev/comments/6cseds/what_are_the_the_disadvantages_of_xamarin_for_for_android/
[6] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-vs-xamarin-mvvmcross
[8] https://mentormate.com/blog/6-reasons-mvvmcross-speeds-peeds-xamarin-development-plevelopment-personalizes-ux/
[9] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx