我应该迁移到ASP.NET MVC吗?

52

我刚刚听了 StackOverflow 团队的第 17 期播客,他们非常高度评价了 ASP.NET MVC ,因此我决定去看看它。

但是首先,我想要确定它是否值得。我已经为即将开始的一个项目创建了一个基础 Web 应用程序(供其他开发人员构建),想知道根据你的经验,我是否应该花时间学习 MVC 的基础知识并使用这个模型重新创建基础的 Web 应用程序。

有没有真正的优点使其值得?

编辑:这不是一个现有的项目,而是即将开始的项目,所以如果我要做就应该现在做...


我刚刚发现这篇文章

然而,它并不使用现有的 post-back 模型与服务器进行交互。相反,您将把所有最终用户的交互路由到控制器类中 - 这有助于确保关注点分离和可测试性 (这也意味着 MVC 视图中没有 ViewState 或页面生命周期)。

那会是什么样子?没有 ViewState 吗?没有事件吗?

20个回答

65
如果您对WebForms很满意,那么ASP.NET MVC可能不适合您。
我长时间以来一直对WebForms感到沮丧。在这方面,我绝对不是孤独的。智能客户端、有状态的网络抽象在复杂场景下会严重崩溃。我碰巧喜欢HTML、Javascript和CSS。而WebForms试图隐藏它们。它还有一些对于那些并不复杂问题的复杂解决方案。WebForms本质上也很难测试,并且虽然可以使用MVP,但与MVC相比,它并不是一个很好的Web环境解决方案。
如果... - 您希望更多地控制自己的HTML - 希望像其他平台一样拥有无缝的ajax体验 - 希望彻底具备可测试性 - 希望URL具有实际含义 - 讨厌处理postback和viewstate问题
那么MVC将非常吸引您。
至于框架是否为Preview 5,它非常稳定,设计大部分已完成,升级也不困难。我从Preview 1开始了一个应用程序,并在最新预览版本发布几个小时后进行了升级。

30

需要记住的是,MVC和WebForms并非竞争关系,也不是一个比另一个更好。它们只是不同的工具。大多数人似乎将MVC与WebForms视为“一个一定比另一个更好的锤子”。这是错误的。一个是锤子,另一个是螺丝刀。两者都用于把东西组合在一起的过程中,但它们各自具有不同的优缺点。

如果你感到不满意,可能是因为你试图使用螺丝刀敲打钉子。某些问题在WebForms中很繁琐,而在MVC中变得简洁而简单,反之亦然。


完全正确。这应该是经常性的答案。 - David
我看不出WebForms比MVC有什么优势。我能用WebForms做什么比MVC更好? - gdoron
1
快速应用程序开发 - Sai Avinash

11

我曾使用过ASP.NET MVC(甚至编写了一个HTTP模块,可以在web.config中定义路由),但是我仍然对它感到非常不满。

它似乎在组织和生产力方面是一个巨大的倒退。也许对于某些人来说不是这样,但是对于我来说,我已经掌握了WebForms,并且在使它们易于维护方面没有任何挑战。

此外,我不赞同当前的“测试一切”潮流......


11

ASP.NET MVC基本上允许你将代码的不同部分责任分离,这使你能够测试应用程序。你可以测试你的视图、路由等。它也加速了应用程序,因为现在没有ViewState或Postback。

但是,也存在一些缺点。由于你没有使用WebForms,所以不能使用任何ASP.NET控件。这意味着如果你想创建一个GridView,你将需要运行一个for循环并手动创建表格。如果你想在MVC中使用ASP.NET向导,则必须自己创建。

如果你已经对ASP.NET WebForms感到厌倦,并且希望自己完成所有事情,那么这是一个不错的框架。但是你需要记住,你是否从重新创建所有东西中获益?

总的来说,我更喜欢WebForms框架,因为它具有丰富的控件套件和自动化的马达。


9
我会先创建一个测试网站,看看团队的想法,但是对我来说,在使用MVC后我不会回到WebForms。
有些人不喜欢将代码与HTML混合在一起,我可以理解,但我更喜欢其灵活性,例如Page Lifecycle、渲染HTML和最重要的 - 没有viewstate垃圾嵌入页面源代码中。
有些人喜欢MVC以获取更好的可测试性,但就个人而言,我的大部分代码都在中间层,很容易进行测试...

6

@Juan Manuel 你曾经使用过经典ASP吗?当你需要编写所有自己的事件和“viewstatish”项目(例如下拉菜单在表单提交后调用其选择的值)时怎么办?

如果是这样,那么ASP.NET MVC一开始就不会感到那么尴尬。我建议查看Rob Conery的Awesome系列 "MVC商店",他一直在介绍该框架并为商店网站构建每个预期组件。这真的很令人印象深刻,也很容易跟随(赶上进度很困难,因为Rob一直非常活跃并发布了很多内容)。

就个人而言,与Jeff Atwood 关于此主题的感觉截然相反,我更喜欢Webform模型。它肯定与vbscript/classic ASP时代完全不同,但控制视图状态并编写自己的CSS友好控件是令人愉快的。

再说一遍,注意我说的是“喜欢”。ASP.NET MVC真的很棒,更像其他网络技术。如果您需要在多个平台上工作,从ASP.NET MVC切换到RAILS肯定更容易。虽然很明显它非常稳定(这个网站就是用它做的),但如果您的公司不允许使用任何颜色的“beta”软件,则此时将其纳入生产可能会成为问题。

5
如果你是一名专业的ASP.NET开发人员,并且有时间学习新知识,我强烈建议你花些时间尝试ASP.NET MVC。它可能不是解决你所有问题的方案,也有很多项目可能更适合传统的WebForm实现,但是在尝试理解MVC的过程中,你肯定会学到很多东西,它可能会带来许多你可以应用于工作中的想法。
通过尝试开发MVC宠物项目时,我注意到的一个好处是,大多数博客文章和视频教程都遵循当前的最佳实践(TDD,IoC,依赖注入,以及较低程度上的POCO),加上大量的JQuery使用户体验更有趣,这些是我可以应用于当前的WebForm应用程序的东西,而且我之前没有接触过这些深度的东西。
ASP.NET MVC的做事方式与WebForm截然不同,这将稍微震撼一下你的思维,而对于开发人员来说这是非常好的!
另一方面,对于完全初学者来说,我认为MVC绝对是更好的起点,因为它提供了一个良好的设计模式,并且更接近Web的实际工作方式(毕竟HTML是无状态的)。在MVC中,你决定每个字节在网络上传输(至少在你不对HTML帮助程序疯狂使用时)。一旦人们掌握了这些,他或她将更好地准备好使用ASP.NET WebForm和服务器控件提供的“人工”设施。

听起来这正是经典 ASP 所做的,你需要自己编写所有 HTML、所有 DOM 操作和 Javascript 等,没有视图状态、服务器控件等... 回到未来了吗? - joedotnot

5
如果你喜欢使用为你完成大量工作的服务器控件,那么你可能不会喜欢MVC,因为在MVC中你需要手动编写很多代码。如果你喜欢GridView,那么你需要自己编写一个或者使用别人的。

MVC并不适合所有人,特别是如果你不擅长对GUI部分进行单元测试。如果你习惯于Web Forms,请继续使用它。Web Forms 4.0将修复一些当前存在的缺陷,例如由ASP.NET自动分配的ID。在下一个版本中,你将有对这些ID的控制权。


5

@Jonathan Holland 我看到你被投票否决了,但那是一个非常有效的观点。我在互联网上阅读了一些帖子,人们似乎混淆了ASP.NET MVC 框架和MVC 模式

MVC本身是一种设计模式。如果你只是想要“关注点分离”,那么你可以通过WebForms来实现。个人而言,在标准的n层环境中,我非常喜欢MVP模式

如果你真的想要在ASP.NET世界中完全控制你的标记,则MVC框架适合你。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接