【问题标题】:Usefulness of asp.net MVC framework as opposed to coding MVC style with regular asp.net?与使用常规 asp.net 编码 MVC 样式相比,asp.net MVC 框架的用处?
【发布时间】:2009-12-14 05:27:39
【问题描述】:

我是 asp.net 世界的新手(但对 .net 并不陌生),我一直在玩各种东西,看看我想如何构建我正在开发的 Web 应用程序。在玩游戏的过程中,我决定不想使用 asp.net 的控件,因为我已经完成了足够多的 php 和 ruby​​ on rails 以熟悉常规 HTML 和相当数量的 javascript。

我看到了很多 asp.net webforms 和 asp.net MVC 之间的比较,但是当我归结为它时,我并没有看到太大的差异(我承认这可能是我错过了差异而不是比他们不在那里)。我已经使用 MVC 类型的架构编写了我的 asp.net 应用程序(aspx 有视图,aspx.cs 有控制器代码,模型是 app_code 目录中的单独类)。

如果我不打算使用asp.net控件,只打算使用纯html和javascript,那么使用MVC框架有什么好处呢?到目前为止,我看到的唯一一个就是路由,我敢肯定,如果我看得更多,我可以找到简单的方法来进行自定义路由,而无需使用整个 MVC 框架。

无论如何,如果有人能详细介绍 asp.net webforms 减去 asp 控件与 mvc 框架,我将不胜感激。

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    您会发现使用 MVC 而不是 WebForms 的许多差异和原因,但这将取决于这些差异对您或您的项目是否重要。路由绝对是 MVC 的一大优势。尽管您可以在 WebForms 中实现自定义路由配置,但它的直观性明显下降。

    另一个很大的优势是单元测试。除了 IoC 容器和模拟框架,MVC 使单元测试变得轻而易举。使用 MVC 隔离动作和行为并专门测试它们要容易得多。

    第三个优点是 MVC 将有助于减少您要编写的意大利面条式代码。如果您不打算使用任何用户控件,那么很快您就会错过 MVC 中的 HTML 帮助程序。 Html、Url、ViewModel、TempData 等使处理原始 HTML 变得更加容易。

    MVC 中的内在验证也令人印象深刻。它在 MVC2 中变得越来越好,现在与客户端验证库的集成将为您节省大量时间并添加大量功能。

    不再有 VIEWSTATE。

    还有很多其他功能,但同样取决于这些功能对您是否重要。祝你的决定好运!

    【讨论】:

    • 你说:- 第三个优点是 MVC 将有助于减少你要编写的意大利面条式代码。意大利面代码是什么意思??
    【解决方案2】:

    ASP.NET MVC 建立在接口之上,这使其具有可扩展性、易于为其编写单元测试并鼓励简洁、松散耦合的架构。

    【讨论】:

      【解决方案3】:

      如果您在不使用任何服务器端控件的情况下使用“经典”ASP.Net,那么您使用的 ASP.Net 并不多——它基本上是带有 .Net 而不是 VBScript 的经典 ASP那时。

      放弃 webcontrols 是使用 ASP.Net MVC 的最大原因。如果你可以放弃它,我会使用 ASP.Net MVC 并完成它。它包含了您无论如何都需要自己编写的所有部分,而您不喜欢的部分则不必使用。

      【讨论】:

      • 我同意。如果您已经更喜欢使用裸机(并且可能来自 PHP 或 Rails),那么 asp.net MVC 是您的最佳选择。如果您使用网络表单,您将从框架中获得的收益很少,而放弃很多。如果你使用 MVC 框架,它不会妨碍你,提供一些功能来帮助处理原始 HTML 和 Ajax/JQuery 的东西,你不会失去任何东西。
      【解决方案4】:

      在我的游戏中,我决定我 不想用asp.net的 控制,因为我已经做了足够多的 php 和 ruby​​ on rails 得体 熟悉常规 HTML

      这不是决定反对 ASP.NET 控件的好理由。 ASP.NET 的重点是 Viewstate。它允许您在 Web 应用程序中使用事件驱动编程。这使得很多事情变得非常容易和富有成效。

      无论如何 - 正如你所知道的 ruby​​ on rails 我猜你会很快学会 ASP.NET MVC。

      【讨论】:

      • 对不起,我的措辞不正确(我在处理这个问题时已经是昨晚很晚了)。我知道视图状态,但是我选择不使用它,部分原因是它可能会带来负载,而不会给我的特定应用程序带来太多额外的好处。视图状态似乎是一种全有或全无的方法,并且我一次在屏幕上显示的数据量(并非所有数据都需要在每次 ajax 调用时发送到服务器或从服务器发送),再加上我可以通过jquery更轻松地管理它,我宁愿只使用纯HTML和javascript。
      【解决方案5】:

      首先,如果您使用 ASP.NET MVC,您将使用一个包含书籍、在线资源和数百篇博客文章的受支持框架。

      其次,我怀疑您需要使用 ASP.NET MVC 才能看到它的强大功能。 ASP.NET MVC 中的 WebForms 远不止于此。对于许多人来说,WebForms 是可选的(您可以使用不同的视图引擎)这一事实是一大优势。

      对我来说,我所做的一切的扩展点、更简洁的代码和单元可测试性是我永远不会回到 ASP.NET“经典”的主要原因。

      我对您的建议是获得一个体面的教程(查找 Nerd Dinner 教程),使用 ASP.NET MVC,然后自己去寻找。

      注意:ASP.NET MVC 并不适合所有人,如果您对 ASP.NET 中的回发机制非常感兴趣,或者对服务器和用户控件进行了大量投资,那么您可能不想使用 ASP .NET MVC 现在。但是对于您的下一个项目,您至少应该知道您的选择是什么。

      【讨论】:

        猜你喜欢
        • 2011-02-10
        • 1970-01-01
        • 2023-04-11
        • 2010-12-22
        • 2010-09-06
        • 2011-02-16
        • 2012-02-06
        • 1970-01-01
        • 2011-03-26
        相关资源
        最近更新 更多