7

最近我注意到很多关于 asp.net MVC 的讨论,但是我还没有看到关于何时、何地或为什么要在 WebForms 上使用它的清晰或令人信服的描述。

假设我想构建一个小型 Web 应用程序,允许人们在线宣传一些商品。该网站将有 4 个用例:

  • 搜索广告
  • 查看列表
  • 查看项目
  • 放置广告

让我们假设:

  • 我对单元测试我的控制器不是特别感兴趣。该页面将正确呈现项目列表,或者不会。
  • 我对更多地控制 HTML 标记感兴趣。
  • 我对仅仅为了它而使用最新的嗡嗡声技术不感兴趣。
  • 我有兴趣使用在最终解决方案的生产力、性能、可维护性和简单性方面最适合工作的工具。
  • 我不想为了得到一些简单的工作而不得不解决一堆细微差别。

所以,我的问题是:

  • 两种模型之间的根本区别是什么?
  • 在哪种情况下,一种比另一种更好?
  • 什么是 asp.net MVC 的陷阱(我知道 WebForms 的陷阱)
  • 对于我们的示例应用程序,使用 asp.net MVC 而不是 WebForms 可以获得什么?
  • 对于我们的示例应用程序,如果使用 asp.net MVC 而不是 WebForms,我会失去什么?
  • 在同一个小型应用程序中混合和匹配模型是否可行?

感谢任何花时间提供答案的人。

4

3 回答 3

10
  • 两种模型之间的根本区别是什么?

WebForms 试图模仿 WinForms 开发,允许您重用大量预制控件,并通过隐藏的 _VIEWSTATE 机制伪造 Web 应用程序状态。

MVC 是一种旨在帮助您分离数据(模型)、业务逻辑(控制器)和表示(视图)的模式。它更符合 Web 的真实性质:RESTful URL,无状态。

  • 在哪种情况下,一种比另一种更好?

在我看来,对于大量使用控件的 Intranet 应用程序,WebForms 在减少开发时间方面很有用,因为借助设计器,您可以非常快速地创建 UI 并让框架自动管理应用程序的状态。

对于任何其他项目,尤其是公共网站,即使是小型项目,我认为 MVC 是要走的路。

  • 什么是 asp.net MVC 的陷阱(我知道 WebForms 的陷阱)

我想说有一些学习曲线可以完全理解 MVC 模式及其功能。此外,由于该框架仍处于 BETA 阶段,您可以预期 API 在发布前会经历一些细微的变化。

由于 JavaScript 在 MVC 中对您不可见,因此如果您不熟悉它,也需要一些时间来学习。jQuery 极大地简化了这一点。

  • 对于我们的示例应用程序,使用 asp.net MVC 而不是 WebForms 可以获得什么?

您将获得对 HTML 标记和 Javascript 行为的更好控制、更清晰的关注点分离和一些易于测试的代码库(即使您似乎对单元测试不感兴趣)。

  • 对于我们的示例应用程序,如果使用 asp.net MVC 而不是 WebForms,我会失去什么?

您将失去构建页面和应用程序状态管理的“拖放”快速方式。

  • 在同一个小型应用程序中混合和匹配模型是否可行?

在某些方面,是的,它似乎。

我建议观看Phil Haack 的演讲,他对框架进行了很好的概述,并邀请 Jeff Atwood 谈论他如何使用它构建 StackOverflow。

他解释了 SO 如何将一些 WebForms 控件用于 CAPTCHA,这些控件将自己呈现到视图中。

于 2008-11-26T00:51:24.910 回答
3

主要区别在于 MVC 更像是其他编程世界使用的“常规”Web 开发,而标准 ASP.NET 旨在让 Windows 开发人员轻松成为 Web 开发人员。我通过学习 Ruby on Rails 学习了 Web 编程,而 MVC 似乎正在成为 Rails 的 .NET 版本。

与常规的 ASP.NET 相比,MVC 更注重标准合规性、不显眼的 javascript 和关注点分离。您需要了解 HTML 和 CSS 如何协同工作。当你掌握 MVC 时,你会学到更多的 javascript。对我来说,MVC 的最大优势之一是您可以使用 jQuery 比在常规 ASP.NET 中更轻松、更好地完成一些令人惊叹的 AJAX 工作。

如果您刚刚学习 Web 开发,那么我强烈建议您学习 MVC。将来,您至少可以将一些新技能转移到其他框架中。

如果您正在寻找可以快速获得 Web 开发工作的学习方法,那么我将不得不强烈建议您使用 ASP.NET。

一旦 MVC 成为 RTM,我认为我们将看到一个缓慢而稳定的采用曲线,随着它的成熟,MVC 可能成为使用 ASP.NET 创建网站的主要框架。我希望至少如此!

于 2008-11-22T17:11:20.440 回答
2
  1. ASPNET MVC 和 WebForms 之间最大的区别在于页面的生命周期,没有困难(不必要的)回发,干净的编码,enz。
  2. 没有规则
  3. ???
  4. REST-full网站,逻辑分离
  5. 设计时支持,不能使用第三方网页控件
  6. 请不要混合在一起。如果你真的想使用 WebForms 模型,你可以使用 MVP 模式,Billy McCafferty写了关于该设计模式的优秀文章

我正在将我的一些应用程序从 MVP 模式重新设计为 MVC 模式,并不是因为 MVC 更好,而是我想使用 MS 提供的最新技术(模式本身已经很老了)。

于 2008-11-22T16:38:37.387 回答