我何时以及为什么要考虑asp.net MVC?

时间:2008-11-21 10:06:12

标签: asp.net-mvc webforms

我最近注意到很多关于asp.net MVC的讨论,但我没有遇到过关于何时,何地或为何要在WebForms上使用它的明确或引人注目的描述。

假设我想构建一个允许用户在线宣传某些项目的小型Web应用程序。该网站将有4个用例:

  • 搜索广告
  • 查看商家信息
  • 查看项目
  • 发布广告

我们假设:

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

所以,我的问题是:

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

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

3 个答案:

答案 0 :(得分:10)

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

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

MVC是一种旨在帮助您分离数据(模型),业务逻辑(Controller)和表示(View)的模式。它更多地依赖于Web的本质:RESTful URL,无状态。

  
      
  • 哪种情况比另一种更好?
  •   

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

对于任何其他项目,尤其是公共网站,即使是小型网站,我认为MVC是可行的方式。

  
      
  • asp.net MVC有什么问题(我知道它的问题   的WebForms)
  •   

我认为有一些学习曲线可以完全理解MVC模式及其功能。此外,由于框架仍在BETA中,因此您可以期望API在发布之前经历一些小的更改。

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

  
      
  • 对于我们的示例应用程序,使用asp.net MVC而不是   的WebForms?
  •   

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

  
      
  • 对于我们的示例应用程序,使用asp.net MVC而不是   的WebForms?
  •   

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

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

在某些方面,似乎是的。

我建议观看Phil Haack的this talk,他对该框架有一个很好的概述,并邀请Jeff Atwood谈谈他是如何用它构建StackOverflow的。

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

答案 1 :(得分: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创建网站的主要框架。我希望至少这样!

答案 2 :(得分:2)

  1. ASPNET MVC和WebForms之间的最大区别是页面的生命周期,没有困难(不必要的)回发,清晰编码,enz。
  2. 没有相关的规则
  3. ???
  4. REST-full网站,逻辑分离
  5. 设计时支持,不能使用第三方webcontrols
  6. 请不要将它们混合在一起。如果你真的想使用WebForms模型,你可以使用MVP模式,Billy McCafferty写了关于该设计模式的优秀文章
  7. 我正在重新设计我的一些应用程序,从MVP模式到MVC模式,不是因为MVC更好,而是我想使用MS提供的最新技术(模式本身很老)。

相关问题