2008-11-21 103 views
7

我最近注意到了很多关于asp.net MVC的讨论,但是我还没有遇到过关于什么时候,何地或为什么要在WebForms上使用它的明确或有说服力的描述。何时以及为什么我应该考虑asp.net MVC?

比方说,我想建立一个小型的网络应用程序,允许一个人在网上做广告。该网站将有4个用例:

  • 搜索广告
  • 查看房源
  • 查看项目
  • 广场的广告

假设:

  • 我对单元测试我的控制器并不特别感兴趣。该页面将正确呈现项目列表,否则将不会。
  • 我对更多控制HTML标记感兴趣。
  • 我对使用最新的buzz技术并不感兴趣。
  • 我有兴趣使用最适合该作业的工具,从生产力,性能,可维护性等角度考虑最终解决方案的简单性。
  • 我不想为解决一些细微差别而努力工作。

所以,我的问题是这样的:

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

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

回答

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

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

MVC是一种旨在帮助您分离数据(模型),业务逻辑(控制器)和演示文稿(视图)的模式。它更坚持网络的真实性质:RESTful URL,无状态。

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

在我看来,对于一个Intranet应用程序使得控制大量使用,WebForms的可以减少开发时间是有用的,因为得益于设计师可以非常快速地创建你的用户界面,让框架管理的应用的自动状态。

对于任何其他项目,尤其是公共网站,甚至是小型项目,我都认为MVC是一条路。

  • 什么是与ASP的陷阱。净MVC(我知道有 的WebForms的陷阱中)

我会说有一些学习曲线,充分了解MVC模式,它的力量。另外,由于该框架仍处于BETA中,因此您可以期望API在发布之前经历一些较小的更改。

由于JavaScript在MVC中并未隐藏,因此如果您不熟悉JavaScript,也需要一些时间来学习。 jQuery大大简化了这一点。

  • 对于我们的示例应用程序,你会得到我用asp.net MVC代替 的WebForms?

你会获得对HTML标记和JavaScript行为,关注清洁分离和一些容易测试的代码库(即使看起来你不感兴趣的单元测试它)更好的控制。

  • 对于我们的示例应用程序,你会失去我用asp.net MVC代替 的WebForms?

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

  • 是否可行相同的小 应用程序中的混搭模式?

在某些方面,似乎是。

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

他解释了SO是如何将一些WebForms控件用于呈现在视图中的CAPTCHA的。

+0

优秀的答案! – 2008-11-26 21:15:54

2
  1. ASPNET MVC和WebForms的最大区别是页面的生命周期,没有困难(不必要的)回发,干净的编码,enz。
  2. 对此没有规定
  3. ???
  4. REST的完整的网站,逻辑的分离
  5. 设计时支持,不能使用第三方器WebControls
  6. 请不要混在一起了。如果你真的想使用你可以使用MVP模式的WebForms模型,Billy McCafferty写上设计模式

我重新设计了一些来自MVP模式我的应用MVC模式,而不是因为方位的文章MVC更好,但我想使用MS提供的最新技术(模式本身很旧)。

3

主要区别在于MVC更像是编程世界其余部分使用的“常规”网络开发,而标准ASP.NET旨在使Windows开发人员成为Web开发人员容易死脑筋。我通过学习Ruby on Rails学习了Web编程,而MVC似乎正在成为Rails的.NET版本。

MVC更多地围绕标准合规性,不引人注意的javascript和与普通ASP.NET分离关注点。您需要了解HTML和CSS如何协同工作。当你掌握MVC时,你会学到更多的JavaScript。 MVC对我来说最大的优点之一就是你可以使用jQuery来做一些令人惊讶的AJAX东西,比在普通的ASP.NET中更容易和更好。

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

如果你正在寻找哪些学习快速获得Web开发工作,那么我将不得不强烈建议ASP.NET。

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

相关问题