我应该使用什么MVVM框架? [关闭](What framework for MVVM shou

2019-07-17 17:33发布

我开发与MVVM模型的应用程序,但我已经达到了一个点,我需要选择要使用的架构。

在可能的选项有:

  • MVVM工具包
  • MVVM基金会
  • WPF应用程序框架(WAF)
  • 光MVVM
  • 卡利
  • 肚带
  • 棱镜

在你的经验,哪一个更好?

Answer 1:

这真的取决于你想要达到的目的,以及你多么希望基础设施已经到位,加上难易程度,你可以找到样本,帮助你。 我要在这里申报利益,因为我一直积极参与至少一个MVVM框架,我已经通过WPF弟子组有输入到别人,所以我有点偏。 话说,这里有云:

微软MVVM工具包 -这是处于alpha阶段非常多。 当它最初被发布了,花了一个有点肆虐的距离,因为它没有做弟子。 话说,MS正在牛肉这个框架了所以这是一个看 - 它只是还没有准备好。

MVVM基础 -啊约什-史密斯的版本的框架。 乔希是MVVM的爸爸之一,并一直格局的巨大的倡导者和老师。 其结果是,很多东西你会在其他框架中发现有Josh的指纹一切都结束吧。 该框架旨在提供MVVM的基础知识,并没有解决一些更深奥的问题。 本来这原本只为WPF,但人们如洛朗比尼翁和我已经补充说,意味着这将是一个Silverlight兼容框架以及功能/项目。

WAF -没有它的经验,所以我不能对此发表评论我害怕。

MVVM光 -洛朗比尼翁的取就可以了,刚刚更新为2。这是一个非常好的框架版本,但同样它不打算涵盖的MVVM应用程序的每一个方面。 鉴于洛朗的背景,它有很强的Silverlight和它混合能力的支持。

更新洛朗·刚通知我,.NET 3.5和.NET 4.0版本功能兼容。 瓦乌去洛朗。

莲花 - 萨沙理发优秀WPF唯一MVVM框架。 这包括比我上面谈到的框架更地上。 这是一个很好的框架,并利用覆盖在比尔·肯普夫的优秀概念玛瑙项目。 玛瑙旨在补充MVVM框架,并在功能上的是通常被人们很难在MVVM / WPF做补充道。 再次,原本打算只WPF,玛瑙已发展到包括SL兼容性 - 工作我特别自豪曾参与英寸

棱镜 -再一次,我从来没有使用过它,但我已经听说了很多关于它的好东西。

海洋 -卡尔Shifflett,对苹果酒团队项目经理,最近发布了一个功能齐全的WPF MVVM框架。 再次,这是一个很好的框架,有很多可取之处。

底线是,下载不同的框架来看看他们的工作是哪一个最适合直观地你的思考方式,并与您的要求。 如果你认为你可能想从相同的代码,则仅WPF框架要打折扣支持的Silverlight。



Answer 2:

我发现这篇文章非常有用http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/所以,我把它在这里为即将到来的用户

我更新腰带部分,其功能添加Silverlight的支持

我的故事很长很抱歉

共同特征:

•ViewModelBase类(INotifyPropertyChanged接口的实现)

•像类RelayCommand到UI命令链接到视图模型的处理程序

•单元测试自带的框架

肚带

•作者:萨沙理发

•Silverlight的支持:无(莲花2版支持的Silverlight)

•文档:优良,6篇在CodeProject上发表

•主机:CodePlex上

•许可证:代码项目开放许可证

• 特征:

  1. 附加的行为

  2. 使用IDataErrorInfo的验证

  3. 对于IEditableObject支持

  4. 弱事件的产生和订阅

  5. 使用弱事件调解人消息

  6. IOC / DI支持(使用Unity)

  7. 服务:事件记录器,消息框,打开保存对话框,弹出

  8. 线程助手

  9. 菜单项支持

  10. 可关闭的ViewModels

  11. MVVM代码生成器

MVVM光工具包

•作者:洛朗•比尼翁

•Silverlight的支持:是

•文件:关于Laurent的博客+其他开发人员提供了许多文章,以及

•主机:CodePlex上

•许可证:MIT许可证

• 特征:

  1. MSI安装程序

  2. VS工程和项目模板

  3. VS代码段

  4. 信使系统 - 视图模型间通信

  5. 处理事件的命令

MVVM助手

•作者:马克·史密斯

•Silverlight的支持:无

•文件:关于马克的博客的一些文章

•主机:个人网站

•许可证:没有定义

• 特征:

  1. 附加的行为

  2. 使用标记扩展视图模型的创建

  3. 基于属性验证

  4. IOC / DI使用的ServiceProvider方法

  5. 可关闭的视图模型

  6. 等待光标(使用新的WaitCursor(){//你的代码在这里})

MVVM基金会

•作者:约什 - 史密斯

•Silverlight的支持:无

•文档:有关乔希或马龙格列奇的博客上的Messenger实现文章

•主机:CodePlex上

•许可证:MS-PL

• 特征:

  1. 信使系统 - 视图模型间通信

  2. PropertyChanged事件监控器

卡利

•作者:罗布·艾森伯格

•Silverlight的支持:是

•文档:提供完整的在线文档

•主机:CodePlex上http://www.codeplex.com/caliburn

•许可证:MIT许可证

• 特征:

  1. 命令是建立在操作的顶部,从而共享许多相同的特征,包括多个输入参数,过滤器和自动异步执行

  2. 主持人来处理UI生命周期的问题,如处理激活,去激活和关闭语义各种UI组件

  3. 卡利应用是完全可测试

  4. 各种实用程序,如后台任务管理器

  5. 支持各种UI模式(不仅MVVM)

  6. 依赖注入容器

缟玛瑙

•作者:威廉·肯普夫ê

•Silverlight的支持:无

•文档:在CodePlex上可用的基本介绍

•主机:CodePlex上

•许可证:未指定

• 特征:

  1. 服务定位模式

  2. 视图模型创建使用自定义标记扩展

  3. UI相关的服务,如IDisplayMessage

•作者:丹尼尔·沃恩

•Silverlight的支持:无

•文档:2篇CodeProject上很详细的文章(第1部分和第2部分)

•主机:CodePlex上

•许可证:使用,复制,修改和/或分发,并保留版权!

• 特征:

  1. 模块管理器,用于启用或者在运行时模块的停用

  2. 使用相同的API从客户机或服务器的用户交互信息服务

  3. 命令服务时的活动视图或视图模型实现了接口内容接口WPF个ICommand,只有变得活跃关联

  4. 区域适配器的工具栏和菜单

  5. 客户端 - 服务器日志准备工作外的开箱

  6. 包括模块,如Web浏览器,文本编辑器,输出窗口,更多的人

  7. 用脏文件指示标签界面(可重复使用的跨模块)

nRoute

•作者:仙人

•Silverlight的支持:是

•文件:关于作者的博客获得许多文章(见链接CodePlex项目主页)

•主机:CodePlex上

•许可证:MS-PL

• 特征:

  1. 支持共混物3的行为,并触发模式

  2. 资源定位器框架

  3. 鉴于服务:打开文件对话框,ShowMessage ...

  4. 使用属性映射视图和视图模型一起

它MVVM

•作者:沙玛

•Silverlight的支持:无

•文档:无

•主机:CodePlex上

•许可证:未指定

• 特征:

  1. 该ICommand接口的各种MVVM友好的实现

海洋

•作者:卡尔Shifflet

•Silverlight的支持:无

•文件:关于卡尔的博客提供的文章

•主机:个人网站

•许可证:未指定

• 特征:

  1. 写在VB.Net

  2. 基于属性的验证

  3. 视图模型基类:relaycommand,closeableviewmodel ...

  4. SQL服务器数据访问层

基本MVVM框架

•作者:莱斯特路宝

•Silverlight的支持:无

•文档:可用库示例应用程序

•主机:CodePlex上

•许可证:MS-PL

• 特征:

  1. 委托命令\键绑定

  2. 虚拟机之间的通讯

  3. 处理事件的命令与附加的行为

  4. 处理对话框(及以上)为服务

  5. VS代码段

GoodLight

•作者:彼得·奥汉隆•Silverlight的支持:是

•文档:可用库示例应用程序

•主机:CodePlex上

•许可证:MS-PL

• 特征:

  1. “工作区”的管理(文件组可关闭)

  2. 皮肤支持

  3. 虚拟机之间的通讯



Answer 3:

我试图描述的框架在皮特的伟大答案丢失:

MVVM工具包(微软)是应该支持这种模式初学者Visual Studio项目模板非常轻巧库。 如果微软取得了良好的反馈,他们的工具包,然后他们有可能实现这是一个新的Visual Studio(也许2010)项目模板。

棱镜(微软P&P)是提供比用于MVVM图案支撑更多的框架。 该项目的主要目标是帮助你构建模块化 WPF和/或Silverlight应用程序。 当你只需要实现MVVM模式或您是在.NET初学者/ WPF我不会推荐这个项目。 另请参阅: 链接 。

WPF应用程序框架(WAF)是一种轻量级的框架,可以帮助你创建WPF与MVVM应用程序。 这只是为WPF,所以它不支持Silverlight的。 它会有点另一种方式比引进的大多数其他MVVM框架控制器 。 他们是负责应用程序的工作流程和各种它们之间的ViewModels调解。



Answer 4:

咩。 MVVM并不真正需要一个完整的框架,以支持IMO。 如果你理解这个概念,这是相当简单的使用实现inotify的清洁VM基类开始,并从那里才行。



Answer 5:

另外,也要看看:

卡利和玛瑙 !



Answer 6:

混合你自己!

我用EventAggregator从PRISM,与ViewModelBase从MVVM基础等。 我还调整了RelayCommand(DelegateCommand称为在某些地方)接受过,等其他数据。

我不建议本身只是一个框架。



Answer 7:

我的选择将是对卡利和MVVMlight,似乎没有多少这些MVVM框架支持的Silverlight。 我可以预见,将会有更多的MVVM框架从比IoC框架来选择,因为它是难以成立的功能边界的MVVM框架。 我想找出哪一个更适合你的项目将通过列出/比较它们的功能的最佳途径。

还检查了MIX10。 我学到了很多谈资:建立你的MVVM框架。



Answer 8:

此外鸡尾酒和DevForce框架, Ideablade



Answer 9:

我使用棱镜和喜欢它。 其中一个对我来说很重要的事情是,会有其他人在那里,如果需要,并很好的例子谁可以帮我。 一旦你的基本运行,有一大堆您需要为您的应用程序扩展,它就是这么容易得多,当你与他人作为同一个框架工作。



Answer 10:

总而言之,我90%是通过我的应用程序和所有我已经使用MVVM工具包是工厂函数,建立一个命令,我给出一个委托功能启动的执行。 我想我可以切换到其他任何框架或在几个小时没有框架。



Answer 11:

另外一个要考虑的是MEFedMVVM 。 我已经用它的一对夫妇的项目,它是轻量级的,非侵入性,并支持Silverlight和WPF。 它也能够支持设计时数据的混合,对于那些谁使用该产品。



Answer 12:

如果你正在寻找扩展性上的WPF / MVVM应用框架的顶部(写插件的能力),那么你可能有兴趣在肥皂盒核心 免责声明:我写的 。 它是开放的来源,所以即使你不使用它,则可能是有一些好的想法给你。 它使用MEF两个扩展性和IOC。



Answer 13:

还有nRoute

为WPF / Silverlight的一个非常好的应用程序框架,它支持MVVM



文章来源: What framework for MVVM should I use? [closed]