Skip to main content
 首页 » 编程设计

c#之MVVM 对 Silverlight/WPF 是否比 MVP 对 Webforms 更必要/更重要

2024年02月23日35cyq1162

我希望标题能反射(reflect)我真正要问的问题。在我看来,当人们进行基于 XAML 的开发时,是否使用 MVVM 甚至都不是问题,而是一个可以理解的事实。来自 Winforms 和 Webforms 的背景,我发现我们几乎从未使用过 MVP(例如)。众所周知,采用 MVP 路径的主要原因(除了纯粹主义者)是更高级别的单元测试,以及与不同 UI 共享“ View 逻辑”的能力。就后者而言,它从来不是我项目中的要求。如果有的话,我们可能为此目的设置了多个用户控件。

就单元测试而言,我从未发现有必要测试我的代码隐藏,因为它只是处理 UI 事件并充当代理(创建实例并绑定(bind))到我的业务层。我可以理解,如果人们绕过业务层并直接在代码隐藏中创建他们最喜欢的数据访问层的实例,然后就在那里应用业务逻辑,MVP 将是一个巨大的好处。在我的事业中,我总是在 DAL 前面加上 BLL,那么就单元测试而言,真正的“胜利”在哪里?

要点是使用 MVP 从来都不是自动的。我现在正在考虑在项目中(第一次)使用 Sliverlight 的可能性,我觉得如果我不使用 MVVM,我将犯下罪行。

我知道有很多特定于 MVVM 的小事情,在我做出“是否成为 MVP”的决定之前可能没有考虑过。我读过有关 Blend 支持的信息(我什至没有 Blend),也许还有其他一些重要方面?底线是,MVVM 对 Silverlight 真的比 MVP 对 Webforms 重要得多吗?或者我们是否正处于 .NET 开发的复兴时期,模式和最佳实践正占据中心舞台(有点像 Java)。

请您参考如下方法:

我们从 Vb.Net winforms 转移到 MVVM 下的 C# 和 WPF/Silverlight。这绝对是我们 adhock 编码的节奏变化。我喜欢能够创建多个 View 来使用相同的 View 模型。无需大量编程更改,即可轻松为需要它的客户定制屏幕。

我在 Stack Overflow 中发现这些帖子可能会回答您的问题:

Benefits of MVVM over MVC

Why MVVM and what are it's core benefits?

MVVM Unique Benefits

比较 MVP 和 MVVM 有一些很好的答案。

希望对您有所帮助。

**** 另外 **

如果您指的是 Expression Blend,我在最初学习 xaml 时使用的是 blend。现在我知道我在里面做什么,我很少使用它,除非我需要做一些复杂的动画或诸如此类的事情。我使用 visual studio 对其进行编码,因为根据我的经验,Blend 仍然很麻烦。不要误会我的意思,这是一个很棒的程序,制作动画也很棒,但它是为设计师而不是真正的编码员准备的。