猿问
下载APP

我应该使用什么样的MVVM框架?

我应该使用什么样的MVVM框架?

我正在使用MVVM模型开发一个应用程序,但我已经达到了需要选择使用哪个框架的程度。

可能的选择包括:

  • MVVM工具包

  • MVVM基金会

  • WPF应用框架(WAF)

  • 轻MVVM

  • 卡利

  • 肚带

  • 棱镜

  • ReactiveUI

根据您的经验,哪个更好?


慕姐829404
浏览 51回答 3
3回答

一只名叫tom的猫

这实际上取决于您要实现的目标,以及您想要的基础设施数量,以及您可以轻松找到可以帮助您的样本。我将在这里宣布一个兴趣,因为我已经积极参与至少一个MVVM框架,并且我已经通过WPF Disciples小组输入了其他人,所以我有点偏颇。说,这里说:微软MVVM工具包 - 这仍处于alpha阶段。当它最初被释放时,由于它没有做到这一点,它从门徒那里受到了一些抨击。说,MS正在寻求加强这个框架,所以它是一个值得关注的 - 它还没有准备好。MVVM Foundation - 啊Josh Smith的框架版本。Josh是MVVM的老兄之一,并且一直是该模式的倡导者和教师。因此,你在其他框架中发现的很多东西都有Josh的指纹。该框架旨在提供MVVM的基础知识,而不是解决一些更深奥的问题。最初这只适用于WPF,但像Laurent Bugnion和我这样的人添加了功能/项目,这意味着这也将是一个Silverlight兼容框架。WAF - 没有它的经验,所以我不能评论它我害怕。MVVM Light - Laurent Bugnion对它的看法,刚刚更新到版本2.这是一个非常好的框架,但它并不打算涵盖MVVM应用程序的每一个方面。鉴于Laurent的背景,它具有非常强大的Silverlight和Blendability支持。更新 Laurent刚刚通知我,.NET 3.5和.NET 4.0版本兼容功能。Wau要去Laurent。Cinch - Sacha Barber的优秀WPF唯一MVVM框架。这比我上面谈到的框架更多。这是一个优秀的框架,并利用Bill Kempf优秀的Onyx项目中涵盖的概念。Onyx旨在补充MVVM框架,并增加了人们在MVVM / WPF中很难做到的功能。同样,最初只打算成为WPF,Onyx已经发展到包括SL兼容性 - 我特别自豪地参与其中。棱镜 - 再一次,我从来没有使用它,但我听到了很多关于它的好东西。Ocean - Cider团队项目经理Karl Shifflett最近发布了一个功能齐全的WPF MVVM框架。同样,这是一个很好的框架,有很多可以推荐它。最重要的是,下载不同的框架,看看它们,并根据您的想法和您的要求找出哪一个最直观。如果您认为您可能希望从相同的代码库支持Silverlight,则应仅打折仅WPF框架。

茅侃侃

我发现这篇文章非常有用http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/所以我把它带给了即将到来的用户我更新了Cinch部分并为其功能添加了silverlight支持对不起,我很抱歉共同特征:•ViewModelBase类(用于实现INotifyPropertyChanged接口)•RelayCommand类将UI命令链接到ViewModel的处理程序•单元测试随框架一起提供肚带•作者:Sacha Barber•Silverlight支持:否(Cinch版本2支持Silverlight)•文档:优秀,在CodeProject上发表了6篇文章•托管:CodePlex•许可证:代码项目开放许可证• 特征:附加行为使用IDataErrorInfo进行验证支持IEditableObject弱事件创建和订阅使用弱事件的调解员消息传递IOC / DI支持(使用Unity)服务:事件记录器,消息框,打开保存对话框,弹出窗口线程助手支持菜单项可关闭的视图模型MVVM代码生成器MVVM Light Toolkit•作者:Laurent Bugnion•Silverlight支持:是的•文档:Laurent博客+其他开发人员提供的许多文章•托管:CodePlex•许可证:MIT许可证• 特征:MSI安装程序VS项目和项目模板VS代码片段用于视图间模型通信的Messenger系统将事件作为命令处理MVVM助手•作者:马克史密斯•Silverlight支持:没有•文档:Mark的博客上的一些文章•托管:个人网站•许可证:未定义• 特征:附加行为使用标记扩展创建viewmodel基于属性的验证IOC / DI使用ServiceProvider方法可关闭的viewmodel等待游标(使用新的WaitCursor(){//你的代码在这里})MVVM基金会•作者:Josh Smith•Silverlight支持:没有•文档:关于Josh或Marlon Grech博客上的Messenger实现的文章•托管:CodePlex•许可证:MS-PL• 特征:用于视图间模型通信的Messenger系统PropertyChanged事件监视器卡利•作者:Rob Eisenberg•Silverlight支持:是的•文档:提供完整的在线文档•托管:CodePlex http://www.codeplex.com/caliburn•许可证:MIT许可证• 特征:命令构建在Actions之上,因此共享许多相同的功能,包括多个输入参数,过滤器和自动异步执行处理UI生命周期问题的演示者,例如处理各种UI组件的激活,停用和关闭语义Caliburn应用程序完全可测试各种实用程序,例如后台任务管理器支持各种UI模式(不仅限MVVM)依赖注入容器缟玛瑙•作者:William e Kempf•Silverlight支持:没有•文档:CodePlex上提供的基本介绍•托管:CodePlex•许可证:未指定• 特征:ServiceLocator模式使用自定义标记扩展创建ViewModelUI相关服务,如IDisplayMessage钙•作者:Daniel Vaughan•Silverlight支持:没有•文档:关于CodeProject的2篇非常详细的文章(第1部分和第2部分)•托管:CodePlex•许可:使用,复制,修改和/或分发并保留版权!• 特征:模块管理器,用于在运行时启用或禁用模块消息传递服务,用于使用相同的API从客户端或服务器与用户交互命令服务将WPF ICommands与仅在活动视图或视图模型实现接口时才变为活动状态的内容接口相关联工具栏和菜单的区域适配器客户端 - 服务器日志记录已准备好开箱即用包括模块,例如Web浏览器,文本编辑器,输出窗口等等带有脏文件指示的选项卡式界面(可跨模块重复使用)nRoute•作者:Rishi•Silverlight支持:是的•文档:作者博客上提供了许多文章(参见CodePlex项目主页的链接)•托管:CodePlex•许可证:MS-PL• 特征:支持Blend3行为和触发器模型资源定位框架查看服务:OpenFileDialog,ShowMessage ......使用属性将View和ViewModel一起映射Nito MVVM•作者:Shammah•Silverlight支持:没有•文件:没有•托管:CodePlex•许可证:未指定• 特征:ICommand接口的各种MVVM友好实现海洋•作者:Karl Shifflet•Silverlight支持:没有•文档:Karl博客上提供的文章•托管:个人网站•许可证:未指定• 特征:用VB.Net编写基于属性的验证viewmodel基类:relaycommand,closeableviewmodel ...SQL服务器数据访问层基本的MVVM框架•作者:Lester Lobo•Silverlight支持:没有•文档:库提供的示例应用程序•托管:CodePlex•许可证:MS-PL• 特征:委派命令\ KeybindingVM之间的消息传递将事件处理为具有附加行为的命令处理对话框(以及更多)作为服务VS代码片段GoodLight•作者:Peter O'Hanlon•Silverlight支持:是的•文档:库提供的示例应用程序•托管:CodePlex•许可证:MS-PL• 特征:“工作区”管理(可以关闭的文档集)皮肤支持VM之间的消息传递

白衣非少年

我试着描述Pete最好的答案中遗漏的框架:MVVM Toolkit(Microsoft)是一个非常轻量级的库,带有Visual Studio项目模板,应该支持具有此模式的初学者。如果微软获得了对他们的Toolkit的良好反馈,那么他们可能会将其作为一个新的Visual Studio(可能是2010年)项目模板来实现。Prism(Microsoft p&p)是一个框架,它提供的不仅仅是对MVVM模式的支持。该项目的主要目标是帮助您构建模块化 WPF和/或Silverlight应用程序。当您只需要实现MVVM模式或者您是.NET / WPF的初学者时,我不会推荐这个项目。另见:链接。WPF应用程序框架(WAF)是一个轻量级框架,可帮助您使用MVVM创建WPF应用程序。它仅适用于WPF,因此不支持Silverlight。与引入控制器的大多数其他MVVM框架相比,它有点不同。他们负责应用程序工作流程,并在各种ViewModel之间进行调解。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答