在什么情况下你更喜欢ASP.NET webforms而不是MVC?

时间:2010-08-25 09:15:53

标签: asp.net asp.net-mvc webforms

  

可能重复:
  What’s your choice for your next ASP.NET project: WebForms or MVC?

您能否列出一些可以让您将ASP.NET网页用于新项目而不是MVC的原因?我已经听过很多关于相反的事情,但不是通过webforms更容易或更好的事情。我不是在谈论开发人员首选项,而是技术功能以及它们如何映射到项目功能。

7 个答案:

答案 0 :(得分:7)

WebForms的唯一论据是需要设计高度复杂(读杂乱)的接口,其中包含大量互连元素,这些元素全部或部分应对其他元素的变化做出反应。

一个典型的例子是某些企业应用程序(来自SAP或较小的供应商)。它们通常具有接近疯狂的界面。如果您使用的是MVC,那么您很难尝试使用JavaScript手动同步控件。使用WebForms,它更容易。

构建此类接口是否是一个好主意完全是另一回事。


在WebForms元素事件中触发页面回发。它们转到相同的URL并以统一的方式处理。这就是使体系结构具有可扩展性的原因。

使用MVC来完成此任务,您必须设置一堆服务URL来处理来自不同控件的帖子,然后处理这些帖子并相应地更新视图模型。这一切都涉及很多诡计和杂耍。并不是说它不可行 - 它是,但不是大规模的。这种方法不具备可扩展性。迟早,您将达到理解,您需要在面向有状态的面向对象的HTML / HTTP抽象(如WebForms)的方向上构建自己的框架。

答案 1 :(得分:3)

有些事情可以推动我(回头)走向WebForms:

  • 我需要制作一些可以由主要不是Web应用程序开发人员(比如WinForms程序员)接管的东西,并且可以通过Visual Studio的Forms Designer实际维护该应用程序。 IDE支持使开发模型更接近WinForms。
  • 需要查看Ajax-y但将由不会学习JavaScript的人维护的应用程序。我认为像UpdatePanel这样的东西(虽然在很多方面都很可怕)实际上对这种情况来说非常好。
  • 可能是某种类型的demoware,再次因为IDE和ASP.NET AJAX。在没有太多思考的情况下,相当快速地敲击一些合理的智能屏幕。
  • 我需要一个功能强大的CMS,需要留在.NET中。在这一点上,看起来WebForms中的选择比MVC更好(尽管希望这种情况有所改变)。
  • 我正在与一个已经熟悉它并且不会学习MVC的团队合作。

其中,CMS可能是我现在想到的,实际上会让我使用WebForms。

答案 2 :(得分:3)

如果你只知道webforms MVC带有学习曲线,那么你需要花一些时间进行培训(或冒着严重的安全性或性能错误的风险)

你现在需要一个小小的应用程序如果你选择反模式的话,在webforms中构建一个丢弃的模拟应用程序可能会更快。例如。 SqlDataSource,代码中的逻辑等等。

丰富的控件 GridView是一个出色的控件,只要您的自定义要求很小,所有内置的排序等都需要很少的代码。

缺乏Web开发经验 Web表单更容易。你的盘子需要更多的担忧。对于一个新手来说好多了,因为它很难出错。

话虽如此,如果你知道自己在做什么或有时间学习,并且你想建立一个持久的网站,MVC太棒了。而且更有趣。

我将补充说,网页表单中没有任何错误的。使用它构建高性能应用程序是完全可能的。自从它首次问世以来,它已经发生了变化,MVC已经很好地解决了这些变化。

答案 3 :(得分:2)

就个人而言,我发现MVC非常适合管理员页面。因为它们通常有一堆表格,并且用于数据输入和编辑。 MVC是为这些东西“制作”的,因此制作这些页面的速度非常快。

webforms我用于更复杂的事情,比如网站的用户端。我制作的网站展示了人们可以参加的课程。注册课程是一个5步骤的过程,在MVC中,我不知道如何做到这一点。我确信它可以在MVC中完成,但我认为它在webforms中更好/更快。

然而最后我更喜欢MVC。与之合作感觉更加清晰。

答案 4 :(得分:2)

我唯一想考虑在新项目中使用Web窗体的方法是,是否为Web窗体创建了一个组件,解决了使用MVC难以解决的特定问题。

答案 5 :(得分:1)

我不能再看到Webforms相对于MVC的任何优势,除了一些不应过高的技能。

[原本我认为MVC与webcontrol不兼容,所以不希望以Dundas图表控件为例。根据您的要求,这将成为使用webforms的一个很好的理由。但我相信情况已经不再如此,无论如何,你可以在你的MVC项目中包含webforms作为最坏的情况。]

答案 6 :(得分:0)

取决于!

WebForms和MVC之间的区别在于您是否可以TDD并控制完整标记。