假设我想构建一个允许一个人在线宣传某些项目的小型Web应用程序.该网站将有4个用例:
>搜索广告
>查看列表
>查看项目
>发布广告
我们假设:
>我对我的控制器的单元测试不是特别感兴趣.页面将正确呈现项目列表,否则不会.
>我有兴趣更多地控制HTML标记.
>我对使用最新的嗡嗡声技术不感兴趣.
>我对使用最适合工作的工具感兴趣,无论是在生产率,性能,可维护性等方面.简单的最终解决方案.
>我不想为解决一些简单的工作而解决一些细微差别.
所以,我的问题是:
>两种模型之间的根本区别是什么?
>哪种情况比另一种更好?
> asp.net MVC有什么问题(我知道WebForms的问题)
>对于我们的示例应用程序,使用asp.net MVC而不是WebForms可以获得什么?
>对于我们的示例应用程序,使用asp.net MVC而不是WebForms会丢失什么?
>在同一小型应用程序中混合和匹配模型是否可行?
感谢任何花时间贡献答案的人.
解决方法
- What are the fundamental differences between the two models?
WebForms尝试模仿WinForms开发,允许您重用大量预制控件,并通过隐藏的_VIEWSTATE机制伪造Web应用程序状态.
MVC是一种旨在帮助您分离数据(模型),业务逻辑(Controller)和表示(View)的模式.它更多地依赖于Web的真实性质:RESTful URL,无状态.
- In which scenario is one better than the other?
在我看来,对于大量使用控件的Intranet应用程序,WebForms可以减少开发时间,因为感谢设计人员可以非常快速地创建UI并让框架自动管理应用程序的状态.
对于任何其他项目,特别是一个公共网站,甚至是一个小网站,我认为MVC是要走的路.
- What are the gotchas with asp.net MVC (I’m aware of the gotchas with
WebForms)
我要说有一些学习曲线可以完全理解MVC模式及其功能.此外,由于框架仍在BETA中,因此您可以期望API在发布之前经历一些小的更改.
由于JavaScript不会在MVC中隐藏,因此如果您不熟悉它,还需要一些时间来学习. jQuery大大简化了这一点.
- For our sample app,what would I gain by using asp.net MVC instead of
WebForms?
您可以更好地控制HTML标记和Javascript行为,更清晰地分离关注点和一些易于测试的代码库(即使您似乎对单元测试不感兴趣).
- For our sample app,what would I lose by using asp.net MVC instead of
WebForms?
- Is it feasible to mix and match models within the same small
application?
在某些方面,似乎是的.
我推荐观看由Phil Haack观看的this talk,他对框架进行了很好的概述,并邀请Jeff Atwood谈谈他是如何用它构建StackOverflow的.
他解释了SO如何使用CAPTCHA的一些WebForms控件将其自身呈现在视图中.