【问题标题】:Is ASP.net Model View Presenter worth the time?ASP.net Model View Presenter 值得花时间吗?
【发布时间】:2009-05-04 02:12:20
【问题描述】:

本周末我正在阅读有关 ASP.net MVP 模式的信息,如果以 MVP 模式执行,似乎即使是最简单的任务也需要付出太多的努力,而回报似乎是在更大的项目中,但我认为如果我将跟随MVP。为什么不直接在 ASP.net MVC 中做项目?

我正在研究 MVP 模式的原因是因为我注意到在我所有的 ASP.net Webform 项目中,如果我有很多服务器控制,背后的代码中有很多代码仅用于事件处理在网络表单上,所以我正在寻找减少这种情况的方法并遇到 MVP 模式。

是否值得努力遵循 MVP 模式或只是切换到 ASP.net MVC?

【问题讨论】:

  • 简短回答:是的,值得付出努力,因为您可以从代码隐藏文件中获取大量代码。这有助于提高测试能力、维护能力、可读性和设计能力。
  • 大多数团队和项目(包括我的)根本无法证明完全重写 MVC 或全有或全无“切换”到 MVC。

标签: asp.net asp.net-mvc mvp


【解决方案1】:

我建议您阅读以下两个链接,以帮助您快速了解 MVP 和 MVC:

你应该切换吗?
根据您告诉我的内容,我建议您使用上面文章中提到的被动 MVP 模型。

我的主要假设是:

  1. 您正在处理现有的 WebForms 应用程序代码库
  2. 您需要为现有功能使用第三方 .Net 控件
  3. 您正在处理现有应用,但没有时间重新构建它们
  4. 您将来使用的任何 ASP.Net Web 应用程序,您都可以逐步应用被动 MVP 并立即获得 TDD 的好处

您的视图(代码隐藏 + aspx)本质上变得愚蠢,只执行简单的任务:

  • 获取演示者提供的信息
  • 响应事件并向演示者提供信息

我已将此模型广泛用于 Web 表单开发,我无法想象无法对我的模型和演示器代码进行单元测试。一旦您建立了不需要很长时间的基本模型并看到了单元测试的强大功能,使用 Web 表单就会变得很愉快。

我使用的模型所基于的 MVP 内容的一些链接:

我还建议您学习 MVC。
在时间允许的情况下,将现有的 App 移植到 MVC。这样,您唯一的重点就是了解 MVC,当您将逻辑移入 MVC 模式时,您会发现您在 WebForms 中实现的东西,并且从未考虑过,但现在需要以另一种方式解决。比较模式并查看适合您的方法的好方法。

希望对您有所帮助,如有任何问题,请随时提出。

【讨论】:

    【解决方案2】:

    如果您开始一个新项目,那么 ASP.net MVC 是一个更好的选择。但是如果你只是想重构一个你刚才说的现有项目,那么 MVP 是一个选择,因为没有简单的方法可以将这些 web-forms 代码转换为 MVC。

    【讨论】:

    • 为什么 ASP.NET MVC 会是更好的选择?
    • 首先,MVC 提供了很多开箱即用的脚手架,可以让您开始使用。这使得路由、脚手架、测试等变得非常容易。
    • @aleemb,另一方面,“传统”asp.net“webforms”提供了丰富的内置和第 3 方可重用 UI 控件,而不是您可以控制每一位的 asp.net MVC向上/向下连接,但与 webforms 相比,必须编写更多的 html.. 总是有最好的工具来完成这项工作,而 mvc 并不总是最好的选择。
    • @Jack0fshad0ws 对不起。如果您没有足够的透明度来对它们进行单元测试,那么所有“第三方可重用 UI 控件”都是毫无价值的。将 DataSource 与 GridView 结合起来看起来既快速又方便,但是当您尝试调试任何东西时,请注意它会分崩离析。 ASP.Net Webform 是有状态的 + 紧耦合的。让它RIP。
    • @Jack0fshad0ws “单元测试是 MVC 的唯一好处,而不是它没有太大的好处”应该把它放在第一位,这样我就可以停止阅读了。
    【解决方案3】:

    在我看来,开发新应用程序的理想方式是 MVC。但是,如果您有很多代码已经在使用 WebForms,那么 MVP 模式就是最佳选择。

    【讨论】:

    • ASP.NET MVC 让您可以更好地控制 HTML,使您的代码更易于测试。它允许您遵循最佳实践,例如“关注点分离”。
    【解决方案4】:

    如果它是一个新项目,我会使用 Asp.Net MVC,但我同意,MVP 可能是遗留 Webforms 项目的一个很好的模式。

    这是我博客中的一个示例: http://www.unit-testing.net/CurrentArticle/How-To-Use-Model-View-Presenter-With-AspNet-WebForms.html

    【讨论】:

      【解决方案5】:

      我个人的看法是,如果后面的代码有很多代码,除了采用 M-V-P 之外,还有其他方法可以瘦身、重构、可测试。

      如果您的页面具有广泛的用户交互(例如按钮/链接启用/禁用、面板和控件出现/消失),M-V-P 将是值得的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-09
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 2011-02-12
        相关资源
        最近更新 更多