【问题标题】:Learn MVC in a new project, or stick with WebForms?在新项目中学习 MVC,还是坚持使用 WebForms?
【发布时间】:2011-05-24 15:00:38
【问题描述】:

我是一名前端人员,通过在我的代理机构从事各种项目学习了 ASP.NET WebForms。

我有一个与开发人员合作的项目,我想为此使用/学习 MVC - 但他认为根本不值得使用 MVC。他的观点是,MVC 的好处是显而易见的,性能不会成为问题,最好还是推进 WebForms。

该项目是一个网络应用程序,它将为人们提供项目规划工具、创建个人联系人数据库以及他们自己的基本网站。

我个人的感受是,我讨厌 WebForms 网站带来的所有臃肿——ViewState,一个,巨大的 JS 文件,缺乏对标记的控制(例如验证控制)。

显然,ASP.NET WebForms 链接到资源,但 MVC 是关于 URL 结构和解释它们的。

经过讨论和研究,我现在认为,由于 MVC 的转换/学习曲线据说很大,最好还是继续使用 WebForms。

我亲眼目睹了 Ryan Singer 与 RoR MVC 的合作,我对一切的发展速度感到震惊。

我是应该接受现在使用 WebForms 更务实、更高效,而不是使用 MVC,还是应该找到一种方法让我的同事相信 MVC 是正确的做法?

【问题讨论】:

  • 抱歉,Ian,为糟糕且不一致的语法。在参加会议之前,我急于发帖。感谢您的编辑,虽然有点迂腐。

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


【解决方案1】:

我强烈推荐 ASP.NET MVC 前端 - 也许需要一些时间才能进入它!但肯定是这样的。例如,如果回过头来改变任何事情,它会更加灵活和容易。

我会将它与 LINQ 一起使用,例如,如果您使用的是数据库。

ASP.NET MVC 一开始可能看起来很困难,但是一旦你开始使用它,你可以更快地制作项目。这当然是我的意见。

另一个好处是我们为Test Driven Development 建立了良好的支持。


编辑 (添加说明)

一个原因是 MVC 是由模型、视图和控制器三部分组成的。这意味着您可以很好地共享标记中的逻辑。我不会在这里详细介绍 MVC 是如何构建的,因为这是它自己的一章! (http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller)

正如我上面提到的,您对 TDD 有很好的支持,我个人就是这样做的,我只能出于这个原因使用它。 ASP.NET MVC 中的 URL Routing 也相当狂热,我错过了 ASP.NET 中的良好支持。 ScottGu 写了一篇关于这个的非常好的博客: http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx

【讨论】:

  • 所以你的意思是,它比 Web 表单项目更容易维护?你能解释一下你为什么这么认为吗?
【解决方案2】:

MVC 是一个很大的学习曲线,因为它与 Web 表单非常不同。如果你和其他不想学习 MVC 的人一起做这个项目,那么你不妨坚持使用 Web 表单。你不能教一个不想学习的人,所以你基本上会徒劳无功,而且你已经有网络表单的背景,所以你至少会对环境足够熟悉和熟悉进展。

如果您是自己或与一个愿意学习 MVC 的团队一起做这件事,那么我建议您少走这条路,而不是为了性能和工具可用性,而是为了学习新东西并转向一个主要是建立在测试驱动开发的概念之上。

Asp.Net MVC 是一个非常不同的框架,它有一定的优势,但你也会遇到缺乏经验的缺点,所以你需要一个可以慢慢来的项目,因为你'毫无疑问,在你得到你想要的东西之前,你必须重新启动某些东西几次。你将开始,学习一些新的东西,让你回到第一格,学习一些新的东西,让你回到第一格,起泡,冲洗,重复。

【讨论】:

  • 这就是我现在的位置。我的问题是,总的来说 - 现在值得在项目开始时这样做吗?
  • @user315412 - 如果你能花时间学习它,并且有耐心在学习了一些突破性的东西后能够从头开始/停止,那么我会说是的。在我看来,MVC 似乎更适合大型项目,但即使是小型项目也适合作为学习者。
【解决方案3】:

为了教育,可能值得学习 MVC。它肯定会给前端开发人员带来好处,但对后端人员来说也有缺点。但是,对于具有正常客户端工作量的小型项目,它可能是相同的,因此您可以使用该项目来学习新技术。顺便说一句,我也更喜欢 Web 表单,因为它是更高级别的抽象。

当你有大量的动画和视觉效果的 AJAX 前端,并且对标记的控制很重要时,通常你应该选择 ASP.NET MVC。如果您有大量的数据输入和小部件样式独立控件,您应该选择 Web 表单,这些控件可以重复使用很多,因为您可以更好地封装行为。

【讨论】:

  • “后端人员的缺点” -> 怎么回事?我发现它前后非常相似。
  • @Stilgar - 我没有看到后端人员的缺点。鉴于 LINQ to SQL 和强类型模型的使用,我发现它几乎是“后端人员”的理想选择。如果您认为 Web 表单具有“更高级别的抽象”,那么我认为您没有花时间学习 MVC。我发现 MVC 比 Web 表单具有更高的抽象级别,而我只是打破了表面(我是一名正在转型的 Web 表单开发人员)。
  • @Joel 组件可以隐藏实现细节,例如呈现控件或将 HTTP POST 转换为 .NET 事件所需的 HTML。因此组件是更高级别的抽象。使用 Web 表单,您几乎不需要 HTML 知识就可以开发一个网站。它不会是有史以来最好的标记,但你可以做到。
  • @Fermin 我发现无法将表示标记和表示逻辑封装在控件中很不方便。此外,对于 MVC,您还必须考虑许多额外的安全注意事项。例如,如果您有一个删除按钮并为非管理员用户隐藏它,这对于 Web 表单来说已经足够了,但是对于 MVC,您需要记住在用户有权删除时再次检查操作。
  • @Stilgar - html 不是隐藏的实现细节。呈现 html 的代码可能是隐藏的实现细节,但这是所提供控件的细节。 MVC 具有相同的控件,只是在渲染过程中不需要相同的垃圾。它们同样抽象,并且还期望将使用的数据抽象到您自己的业务/数据层中。 Web 表单不希望您自己的代码中有这种抽象,而且它的方法通常是该抽象层的障碍。我不同意您对抽象的描述,并认为 MVC 更加抽象。
【解决方案4】:

有 100 个理由选择 MVC 或 Web 表单。但鉴于您是前端开发人员,您的学习曲线并不像后端开发人员那样多,后端开发人员通常对 HTML 编码知之甚少。

您现有的技能,如 JS、CSS 和 Html 将无缝移植到 MVC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多