假设您明天将启动一个新的ASP.NET网站/应用程序.你会选择Web Forms还是MVC,为什么?
MVC宝贝!还有JQuery!
编辑:好的,公平地说我的回复需要更多信息.
我选择MVC的原因如下:
我曾在Rails工作并发现它非常高效.ASP MVC从Rails那里借了很多东西,它在某些方面感觉像是一个直接的端口(这在我看来是件好事).
AJAX很重要,但我讨厌微软的"Atlas"AJAX方法(无论现在的产品名称是什么).如果你要做AJAX,你需要了解HTML和JavaScript.隐藏你的框架比你帮助你(IMO)更伤害你.
JQuery在JavaScript框架方面已经占据了世界.ASPMVC与它很好地集成在一起.我想学习它,所以这里有很好的一致性.
整个"控制"模型是一个很好的想法,但它比表面上看起来更复杂.例如,在SO上查看有关UserControl如何找到包含控件的最高级别等问题.控制层次结构抽象中有漏洞.如果网格能够满足您的需求,那么网格就很棒,但要定制它们以做一些他们不想做的事情是非常困难的.市场上最好的网格控制(高度可定制的网格控制)是庞大,臃肿,过于复杂的野兽.也许这表明我们应该回退到HTML并让我们的视图中的循环为我们做这样的事情.
我相信我可以比ASP.Net更快地在ASPMVC中构建完整,漂亮的应用程序(我已经有了几年的ASP.Net).看看使用JQuery在ASPMVC上快速构建的StackOverflow ...它具有快速,可扩展和使用IMO的乐趣.
哦,它是完全开源的!可以阅读源代码,关于它的博客,甚至修改然后重新分发它!
我会选择MVC只是因为它的设计是可测试的和可模拟的.这将是我决定的主要因素.
WebForms对单元测试来说要困难得多,因为它们根植于几个具体的类,这些类很难在Mock中完成.这些包括HttpContext,HttpResponse,HttpRequest和HttpCookie.
MVC被设计为可测试的,它的API极大地方便了这样做.
关于MVC可测试性的好文章:http://dotnetslackers.com/articles/aspnet/ASPNETMVCFrameworkPart2.aspx
就个人而言,我决定同时使用......
如果它是一个网站(在线查看),我决定使用ASP.NET MVC.如果它是一个应用程序(具有单一目的的Web应用程序),我决定使用Web表单.
此决定纯粹基于案例使用和您尝试提供的解决方案.如果您对优秀的搜索引擎优化和更快的网站感兴趣,MVC更清晰的HTML并且比网络表单更快.
但是,如果您在同一页面上使用大量过滤器,网格,回发以及您在Web窗体中经验丰富的复杂功能之后,请坚持使用它.
如果我今天开始,我可能仍会坚持使用webforms,因为它周围有大量的知识和资源.
这就是说我真的想给MVC一个机会,而其他人已经提到社区内的兴奋意味着它不需要很长时间才会有很多支持.
MVC FTW!,原因?
完全控制我的HTML
没有Web Forms魔术
没有复杂的页面生命周期
更接近金属
使用HTTP是很自然的事情
MVC是"当天的风味",还是具有持久力?
我曾与MVC合作过,并拥有大量的webform经验.我经常想知道MVC的持久力.
选择其中一个时应该考虑这一点.您希望在整个产品生命周期中提供什么支持?
我还不能说我还没有尝试过MVC.但我有点担心将它用于一个非常大的企业项目.
滚动浏览通过问题,你会发现MVC存在很多问题/问题(与优秀的WebForms相比).仅此一点让我担心.许多问题似乎都是针对特殊的UI需求.再一次没有尝试过,我不知道它有多成熟,但我仍然有点担心.
也许有人将它用于企业项目可能会有所启发.
虽然MVC是块中的新手,但使用Web窗体模型进行设计仍然有很多好处.
熟悉该工具
外观与现有项目的一致性
工具/设计师
回传
事件驱动
控制抽象
第三方控件有效
快速发展
明确的风格
Rachel Appel在MIX上就这个话题做了精彩的演讲.您可以在此处观看视频:
在ASP.NET Web窗体和MVC之间进行选择
http://videos.visitmix.com/MIX09/T23F
我会为具有丰富业务逻辑的本地/内部网应用程序选择Webforms,为公共/互联网站点(博客/论坛/演示文稿/简单服务)选择MVC."富有国家支持至关重要的领域"更适合"WebForms应用程序模型"
我在一周前为我们自己的产品创建了一个新网站,我对ASP.NET MVC感到高兴.一切看起来很自然,我总是知道去哪里,看看有什么东西不起作用或看起来不像我想要的那样.
坦率地说,我花费的最大时间是CSS.编码,与jQuery集成......花生.
OTOH,如果您不是经验丰富的开发人员,ASP.NET将不会吸引您,因为它鼓励您一路走来并控制您网站的所有方面 - HTML标记,CSS等,这反过来意味着没有控制,拖动和删除视觉编辑等
与您自己留下的传统ASP.NET不同,并且通常最终会在各种页面中混合使用各种UI,持久性(DB)和业务逻辑代码,MVC将指导您并帮助您更加一致地构建应用程序.如果您不喜欢"自以为是"的框架和/或只是想在不关心网站结构,可维护性,可扩展性等的情况下完成工作,那么这不会与您同在.
请注意,如果您构建的所有内容都是一次性内部网站,那么完全有可能不关心这一点,但对于公共Internet站点,我每次都选择MVC而不是经典ASP.NET.