是否有任何特定的网站使用MVC与webforms有意义。
决定这些选项的决策过程是什么?
答案 0 :(得分:5)
现在有很多关于MVC的热情,但是如果你现在正在开始一个新的开发项目,我仍然建议你在跳上MVC列车之前仔细考虑。
对于任何非平凡项目的大多数开发团队,都有一些严肃的考虑因素。以下是我认为最相关的内容:
MVC需要您的开发人员提供更多技能。他们需要在HTML / CSS的内部工作方面具有重要的专业知识,并且需要很好地理解HTTP的工作原理。对于客户端代码,他们需要强大的javascript和JQuery技能,并在服务器端高级掌握OO主体。如果您打算从MVC中获得最大收益,也可以使用单元测试和模拟框架。
MVC 1.x框架目前对Visual Studio的RAD功能没有太大影响。你得到一个文本编辑器和智能感知,但这就是它。没有向导,没有拖放组件,没有属性编辑器等。虽然这并不是那么糟糕,但它通常意味着构建非平凡的UI将花费更长的时间,特别是对于经验不足的开发人员。
MVC非常新,因此很难获得代码示例,教程和示例应用程序,并且范围非常有限。文档目前也有点薄。
MVC框架的最大缺点可能是缺乏成熟且成熟的第三方市场。通过Web表单,市场上有大量非常先进的UI套件和组件,以及大量可以借用的开源项目。
对于许多应用程序,尤其是商业应用程序,仅MVC框架缺乏第三方报告,图表和推荐的网格控制应该是一个主要问题。
MVC太棒了,如果您处于可以使用它的位置,我强烈推荐它。但是,对于任何可能使您在网络表单上停留一段时间的重大项目,存在实际成本和风险。
我确实希望MVC的下一个主要版本可能会解决许多这些问题,尤其是缺乏RAD功能。我也期待围绕MVC的热情也将为平台带来很多第三方支持。但要完全建立所有这些还需要一些时间。
答案 1 :(得分:1)
我不会说某种类型的网站会对网站的需求产生更大或更好的效果。
如果您需要一个可以在没有大量代码的情况下快速拼凑在一起的网站,并且您不关心HTML标记。比WebForms更好。
如果你是一个控制狂,你想控制正在发生的一切,并生成标记。比MVC可能适合你。
MVC不再是HTTP模型的抽象,意味着为您做的事情要少得多。它不像WebForms的ViewState那样保持状态。
答案 2 :(得分:1)
我花了4周的时间阅读MVC上的可用资料并完成各种视频和教程。今天我开始研究一个实际的应用程序(有一个客户等待很快看到结果)。我同意以前的答案(需要学习很多东西,许多新概念,很少代替第三方组件)。我很高兴我花时间学习mvc。 - 你必须克服你对使用webforms隐藏的行html / css / jscript的恐惧。习惯html标签需要时间。完成后,您将了解可用的可能性。你不会错过标签。 - 如果您没有使用单元测试的经验,那么我认为mvc可以很好地介绍单元测试的可能性。 - 在mvc中,OO更加存在并且“显而易见” - 关注点的分离是可能和自然的。您不会错过在aspx.cs文件中混合gui和业务逻辑 - 不再有page_load(以及n个不同的阶段)。如果你从来不喜欢asp.net的数据绑定,你会喜欢mvc。我很高兴不必再这样做了!
缺点: - 很慢。一开始它很慢。在webforms中花费很少时间的东西,可能需要很长时间才能使用mvc - 不再有页面也是一个巨大的变化。但是一旦你“内化”了这个(时间......),你就不会错过这些页面。 - 还需要一个O / R Mappers。还有一件事需要学习。 - 如果您有兴趣充分利用框架,有很多东西需要学习和习惯。 MVC只有半毫伏,没有单元测试。没有模拟框架的单元测试实际上是不可能的,所以你也必须学习它。当您认为自己正在进行单元测试时,您会发现需要自动完成部分工作,也必须学习。它只是无穷无尽......但是,一旦你开始使用这些技术,你会想知道你是如何在没有这些技术的情况下进行管理的。
答案 3 :(得分:0)
对我而言,决策过程非常简单。所有新的开发都将使用ASP.NET MVC完成。需要稍作修改的现有站点将继续是WebForms。需要进行重大修改的现有站点将成为迁移到MVC的候选者。
我正在进行切换的基本原因与可测试性和设计有关。 IMO MVC网站显着更易测试。我可以使用单元测试来测试除了视图逻辑之外的所有内容,通过使用和测试HtmlHelper扩展,我甚至可以测试相当多的视图逻辑。使用WebForms,我不得不跳过很多箍来测试代码隐藏,结果留下了很多用于手动测试的应用程序。
从设计的角度来看,我也觉得架构更好。由于关注点的明显分离,将业务逻辑插入错误的位置(例如视图)并不那么诱人。它使概念化和理解应用程序变得更加容易。我也能够以更少的工作量重复使用视图代码,因为我没有来自其他层的多余逻辑来阻碍它。
我目前看到的唯一真正的缺点是它没有那么成熟,而且你还没有为它构建那么多的可重用组件。不过,随着时间的推移,我希望能够改变。此外,即使可以将MVC与WebForms混合使用,我也不认为将现有应用程序改造为可行的替代方案,除非还有其他重要的工作要做。再一次,只是我的意见,但我宁愿从头开始使用MVC,而不是试着让现有的应用程序使用它。我想这取决于应用程序的大小,但任何有大量页面的内容都会有很多路由异常。