我最近注意到很多关于asp.net MVC的讨论,但我没有遇到过关于何时,何地或为何要在WebForms上使用它的明确或引人注目的描述。
假设我想构建一个允许用户在线宣传某些项目的小型Web应用程序。该网站将有4个用例:
我们假设:
所以,我的问题是:
感谢任何花时间提供答案的人。
答案 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)
我正在重新设计我的一些应用程序,从MVP模式到MVC模式,不是因为MVC更好,而是我想使用MS提供的最新技术(模式本身很老)。