我最近注意到很多关于asp.net MVC的讨论,但我没有遇到过关于何时,何地或为何要在WebForms上使用它的清晰或引人注目的描述.
假设我想构建一个允许一个人在线宣传某些项目的小型Web应用程序.该网站将有4个用例:
搜索广告
查看列表
查看项目
放置广告
我们假设:
我对我的控制器的单元测试不是特别感兴趣.页面将正确呈现项目列表,或者不会.
我有兴趣更多地控制HTML标记.
我对使用最新的嗡嗡声技术不感兴趣.
我感兴趣的是在最终解决方案的生产率,性能,可维护性和简单性方面使用最适合工作的工具.
我不想在一堆细微差别之间解决这些问题.
所以,我的问题是:
两种模型之间的根本区别是什么?
在哪种情况下哪一种比另一种更好?
asp.net MVC有什么问题(我知道WebForms的问题)
对于我们的示例应用程序,使用asp.net MVC而不是WebForms可以获得什么?
对于我们的示例应用程序,使用asp.net MVC而不是WebForms会丢失什么?
在同一小型应用程序中混合和匹配模型是否可行?
感谢任何花时间贡献答案的人.
两种模型之间的根本区别是什么?
WebForms尝试模仿WinForms开发,允许您重用大量预制控件,并通过隐藏的_VIEWSTATE机制伪造Web应用程序状态.
MVC是一种旨在帮助您分离数据(模型),业务逻辑(Controller)和表示(View)的模式.它更多地依赖于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如何使用CAPTCHA的一些WebForms控件将其自身呈现在视图中.