MVVMCROSS和XAMARIN.FORMS是跨平台移动应用程序开发中使用的两种不同的技术,每个技术都具有不同的目的,并具有独特的优势。
Xamarin.forms的概述
Xamarin.Forms是由Microsoft开发的框架,允许开发人员使用共享C#codebase和XAML为用户界面创建跨平台应用程序。它使开发人员可以写一次并在包括iOS,Android和UWP在内的多个平台上运行。 Xamarin.Forms非常适合需要跨平台的UI一致的项目,并且通过为UI组件提供统一的API来简化开发过程。但是,这种一致性是以灵活性为基础的,因为UI仅限于每个平台中的一个共同元素的子集,这可能会导致实现本机外观和高级UI自定义的限制[4] [7]。
mvvmcross概述
MVVMCROSS是支持Xamarin.ios,Xamarin.android,Xamarin.Forms和其他平台的跨平台MVVM(模型视图-ViewModel)框架。它着重于将业务逻辑与UI分开,使开发人员可以在不同平台上共享其代码的很大一部分。 MVVMCROSS提供了诸如数据绑定,导航,控制倒置和依赖注入之类的功能,从而有助于复杂应用的开发。与Xamarin.Forms不同,MVVMCross不会执行特定的UI框架;相反,它允许开发人员选择他们想要如何为每个平台实现UI,从而在实现本机UI体验方面具有更大的灵活性[7] [10]。
##密钥差异
1。UI实施:
-Xamarin.Forms:在平台上使用共享的UI层,这简化了开发,但可能会限制自定义和本机外观和感觉。
-MVVMCROSS:允许在每个平台上实现本机UI实现,或与Xamarin.Forms共享UI,从而在实现特定于平台的UI设计方面具有更大的灵活性。
2。代码共享:
- 这两个框架都启用了代码共享,但是MVVMCross专注于共享业务逻辑(ViewModels),同时允许不同的UI实现。 Xamarin.Forms共享UI和业务逻辑。
3。导航和数据绑定:
-MVVMCross提供了强大的导航系统和数据绑定功能,可在不同的UI框架(包括Xamarin.forms)上使用。 Xamarin.Forms依赖于其自己的导航和数据绑定机制。
4。项目复杂性:
- 对于需要高级UI自定义或特定于平台功能的复杂项目,由于其灵活性,MVVMCross可能更合适。对于一致的UI足够的简单项目,Xamarin.Forms可以更加简单地实现。
5。发展方法:
- Xamarin.Forms通常受到熟悉XAML和.NET的开发人员的喜好,因为它提供了统一的开发体验。 MVVMCROSS对需要与UI脱钩的业务逻辑的项目有益,从而可以对每个平台上的UI实现进行更多控制。
总而言之,尽管这两个框架都支持跨平台开发,但Xamarin.Forms着重于跨平台共享UI层,而MVVMCross则强调共享业务逻辑并允许更灵活的UI实施选择。它们之间的选择取决于项目对UI自定义,复杂性和代码共享策略的要求。
引用:[1] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[2] https://github.com/rogerwcpt/xamarin-mvvvm-frameworks
[3] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-xamarin-forms-version
[4] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-vs-xamarin-mvvmcross
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[6] https://canbilgin.wordpress.com/tag/mvvmcross/
[7] https://www.mvvmcross.com/documentation/getting-started/getting-started
[8] https://www.reddit.com/r/csharp/comments/a9mph1/mvc_or_mvvm_for_for_xamarin/
[9] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[10] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/