MVVM对Silverlight/WPF比MVP对Webforms更必要/重要吗?

本文关键字:MVP Silverlight WPF MVVM Webforms | 更新日期: 2023-09-27 17:50:23

我希望标题反映了我真正的问题。在我看来,当人们进行基于XAML的开发时,是否使用MVVM甚至不是一个问题,而是一个众所周知的事实。从Winforms和Webforms的背景来看,我发现我们几乎从未使用过MVP(例如)。很明显,沿着MVP路径走下去的主要原因(而不是纯粹主义者)是更高级别的单元测试,以及与不同的ui共享"视图逻辑"的能力。至于后者,这在我的项目中从来都不是一个要求。如果有的话,我们应该有几个用户控件来实现这个目的。

就单元测试而言,我从来没有发现有必要测试我的code behind,因为它除了处理UI事件和充当代理(创建实例和绑定)到我的业务层之外什么都没有做。我可以理解,如果人们绕过业务层,直接在后面的代码中创建他们喜欢的数据访问层的实例,然后在那里应用业务逻辑,MVP将是一个巨大的好处。在我的事业中,我总是用BLL来面对DAL,那么就单元测试而言,真正的"胜利"在哪里呢?

关键是从来没有自动使用MVP。我现在正在考虑在一个项目中可能使用Sliverlight(第一次),我觉得如果我不使用MVVM,我将会犯一个罪。

我知道有很多小事情是MVP特定的,也许在我做出"MVP或不MVP"的决定之前没有考虑过。我读过关于Blend的支持(我甚至没有Blend),也许还有其他一些重要的方面?最重要的是,MVVM对Silverlight来说真的比MVP对Webforms更重要吗?或者我们正处于。net开发的复兴时期,模式和最佳实践占据了中心舞台(有点像Java)。

MVVM对Silverlight/WPF比MVP对Webforms更必要/重要吗?

我们从Vb迁移过来。Net winforms到c#和WPF/Silverlight在MVVM下。这绝对是我们的adhock编码节奏的改变。我喜欢能够创建多个视图来使用相同的视图模型。使它很容易为我们的客户定制屏幕,而不需要大量的编程更改。

我在Stack Overflow找到了这些帖子,可能会回答你的问题:

MVVM相对于MVC的优点

为什么是MVVM ?它的核心优势是什么?

MVVM独特的优点

这些都是比较MVP和MVVM的好答案。

希望对你有帮助。

****另外**

如果你指的是Expression Blend,当我第一次学习xaml时,我使用了Blend。现在我知道我在做什么,我很少使用它,除非我需要做一些复杂的动画或什么的。我使用visual studio进行编码,因为根据我的经验,Blend仍然很麻烦。不要误解我的意思,这是一个很棒的程序,动画效果也很棒,但它是为设计师设计的,而不是真正的程序员。

从我使用WPF和MVVM的有限经验来看,我的看法是:

MVVM是一种模式,但并不是WPF的全部。特别是在MVVM"纯粹主义者"的情况下。即使是在WPF中,事件处理程序和代码也有使用的时间和地点。xaml开发和MVVM的好处是将逻辑与设计分离,但有时,逻辑比MVVM更直接地涉及到设计。

我想MVVM被如此推崇的主要原因是数据绑定的强大功能。

以web表单为例,你需要创建自己的接口、框架等。来实现MVP,而在Silverlight/WPF中,数据绑定就在那里,所以你是否使用它,这取决于你。

在我看来,我认为MVVM只是添加了一层可测试的视图逻辑(ViewModel),而不是像MVP模式那样,您的业务逻辑可以真正在演示器本身。

总之,如果它已经存在,易于使用,使用它…这就像你有一辆车,但你仍然可以选择步行10英里到最近的市场,或者你可以开车(大多数人会建议你开车)。