1
8
所以,我认为很多新的MVVM开发人员都忘记了这一点——模式是有帮助的 你 而不是相反。以这种方式构建软件 倾向于 为了让你的生活更轻松,当你的项目变得更大时,但如果它完全阻碍了你完成一项特定任务,退一步问,“在这个特定的场景中,MVVM是否在帮助我?”如果它能让你的生活更轻松,你就可以时不时地“作弊”。 |
2
5
实际上,我已经非常有效地将MVVM用于使用命令和消息传递的WindowsPhone7框架的导航应用程序。但是,如果有人告诉您,您可以使用Silverlight的每一个功能,而不向代码后面添加一些代码,那么他们就是在愚弄自己。在有帮助和有意义的地方使用模式,当某个特定功能需要自定义时,使用“关闭模式”。 |
3
4
假设你的问题也适用于wpf,我想知道在你尝试mvvvm之前,问题是否不仅仅是wpf/silverlight的巨大学习曲线。想一想WPF中需要学习的所有新东西(我假设是Silverlight):XAML、依赖属性、附加属性、路由事件、路由命令、静态资源、动态资源、样式、数据模板、控制模板、数据绑定等。然后考虑到Microsoft使用不完整的一套,至少是WPF,皮肤很粗糙的控制,你会有一个让人沮丧的配方,以及不可避免的感觉,那就是你正在处理一项“还没有准备好迎接黄金时间”的技术。我的意思是,在WPF工具箱出现之前,甚至没有一个合适的数据报控件。 一旦你了解了所有这些,MVVM是另一个障碍,但我不认为它是人们跳上WPF/Silverlight的主要障碍。也就是说,如果微软能像支持ASP.NET MVC那样支持它,那就太好了。现在,您必须下载并使用第三方工具,如 MVVM Foundation 和 MVVM Toolkit (顺便说一句,它有很多重叠,应该合并成一个单独的项目)。 因此,我同意你的观点,但我认为MVVM所面临的大部分挑战可能是由于缺乏微软的支持,以及WPF/Silverlight固有的复杂性,而不是MVVM模式本身的任何缺陷。 |
4
3
顺便说一下,答案很好。讨论得好,而且很重要。毫无疑问,学习Silverlight对新开发人员来说是一种威胁,MVVM框架无疑会使之复杂化。 但是,我同意,不理解这一点的人并不是在挖苦框架。我仍然有开发人员告诉我,控制/依赖注入的反转太令人困惑,无法学习,但这会导致这些无效模式吗?事实证明,“现场”软件依赖于这些概念,这告诉我,即使一开始很难掌握或理解这些概念,它们也很合理。 再说一次,当我开始学习外国语的时候,学习起来很困难,但一旦我努力学习,现在我就可以轻松地说出来了,我想知道为什么一开始就这么难。 我想最让我害怕的趋势是,这个概念认为,由于某些原因,复杂的企业应用程序应该很容易地由初学者开发,他们要么不能,要么不会掌握复杂的概念。归根结底就是这样。你没有医生说,“帮助,让这个脑部手术更容易让任何人都能做。”这是专门的。构建优秀的软件也是专门化的,这就是为什么咨询师要为他们的服务支付很高的报酬:这是他们在理解正确的方法来设计和开发解决方案时所提供的价值。 如果你正在制作小行星游戏、奇幻游戏、媒体网站、YouTube盗版等,那么你可能不需要MVVM,而且它太过杀伤力了。如果你正在用一些表格和图表构建一个小站点,那么就以你觉得舒服的方式构建它,并完成它。 如果您正在构建一个由多个动态模块组成的大型、复杂的站点,移动数千或数百万条记录,并且需要扩展到大量并发用户,那么您就不能指望设计会在浏览几页书或浏览几个站点后突然出现。像这样的软件很复杂,有很多移动部件,需要对体系结构有一个牢固的理解。 让我吃惊的是,人们可能正在构建这些更复杂的应用程序,但他们仍然无法构建这些更复杂的应用程序。团队中是否有经验丰富的人?您是否有一个架构师来消除您可以使用的框架? 我的意思是,实际上,这个例子告诉我问题不是MVVM,而是开发人员。”因为MVVM而避免导航?“真的?MVVM和它有什么关系?写下导航片段,让视图模型活在页面中。为什么我的导航必须从视图模型驱动? 来吧。如果它如此复杂,我认为它与模式没有任何关系,所有与开发人员有关的事情只是不理解开发。别怪这种模式。也许他们需要坚持使用更简单的应用程序。在我的经验中,那些逐渐了解模式的人对软件的理解足够好,他们知道何时何时不使用模式。 我知道有很多运动可以简化它,让它对“普通消费者”来说更简单,但我认为这就像是在说,“微积分是找出曲线下面积的错误方法,因为它太难学了。”虽然MVVM没有微积分那么复杂,但构建复杂的软件是一项复杂的努力,我认为你永远不会去做。把它简化或归结为一个简单的公式(你也不应该这样做)。如果你与MVVM斗争,请不要使用它-找一些简单和容易的东西。如果你的项目足够复杂,以至于你还没有掌握它,请雇佣一个这样做的人,让他们找出它,并向他们学习。 不,我不希望微软告诉我要使用什么模式,我也不认为这是他们的责任。我是一名专业人士,投入时间学习和了解我正在建设的东西是我肩负的责任,因此我可以为客户构建最好的方式。微软不一定知道我的客户需要什么,所以他们怎么可能告诉我要使用什么模式?像Prism这样的项目之所以伟大,是因为它们是一个折衷方案:它们提供指导,并共享如何完成某项工作的“最佳实践”,而不必强制开发人员执行。 |
5
2
我正在使用MVVM来安装Windows Phone 7应用程序。我真的很喜欢这个想法,但是有太多的黑客、语言障碍和第三方工具需要运行它。 Silverlight的每一个版本都在改善,但我仍然认为这项技术是“前沿技术”。 |
6
1
不,MVVM只是许多模式中的一种,坦率地说,甚至不是最流行的模式。影响Silverlight开发的是a)flash b)而不是flash c)以微软为中心d)学习曲线。 另外,WPF似乎并没有真正抓住这个事实也没有多大帮助。 |
7
1
有人无法确定如何将导航框架与MVVM一起使用=>有人不使用导航框架=>MVVM正在杀死导航框架=>MVVM正在杀死Silverlight开发。 你能说这条推理链没有什么缺陷吗? |
Bigeyes · 如何在MVVM模式中添加行? 8 年前 |
User9898 · 悬停回到原始颜色时为什么选择 8 年前 |
Huma Ali · WCF已完成事件中的异常处理 8 年前 |
Nerd in Training · 文件副本发布错误 9 年前 |