2010-08-25 45 views
4

可能重复:
What’s your choice for your next ASP.NET project: WebForms or MVC?在什么情况下,你比较喜欢ASP.NET webforms而不是MVC?

你能列举一些原因,这将使你使用ASP.NET web表单的一个新的项目,而不是MVC?我听到很多关于相反的事情,但不是通过webforms完成更容易或更好的事情。我并不是在讨论开发者偏好,而是在于技术特征以及他们如何映射到项目特征。

+2

有一天,猪会飞,地狱会冻结,stackoverflow.com将不会再得到webforms与mvc问题。 :/ http://stackoverflow.com/search?q=mvc+vs+webforms – jfar 2010-08-25 13:19:09

+0

我没有找到答案,我标记为接受任何其他问题。随意关闭,我觉得我问了一个理由,并得到了一个很好的答案。相似的事实并不总是意味着它是同一个问题。 – Slavo 2010-08-26 11:11:18

+0

SO关闭无人机,欢迎光临。保存现金在Atwood口袋 – Jonathan 2010-08-27 10:30:07

回答

7

WebForms唯一的参数是需要设计高度复杂(读取杂乱)的接口与大量相互关联的元素,全部或部分应该对其他元素的变化作出反应。

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

构建这样的接口是否是一个好主意完全是另一回事。


在WebForms元素事件触发页面回发。他们访问相同的网址并进行统一处理。这使得架构非常具有可扩展性。

使用MVC来实现这一点,您必须设置一堆服务URL来处理来自不同控件的帖子,然后处理这些帖子并相应地更新视图模型。这一切都涉及很多欺骗和杂耍。并不是说它不可行 - 它是,但不是大规模。这种方法不可扩展。迟早你会达到理解你需要建立自己的框架,像WebForms这样的有状态的面向对象的HTML/HTTP抽象方向。

+1

+1迄今为止唯一的答案,实际上回答实际问题 – PHeiberg 2010-08-25 09:49:05

+0

我不知道这是否真的如此。你意味着在那里发回并“同步控制”。根据我的经验,这对于复杂的Web界面绝对不可接受,所以几乎总是使用某种形式的JS。这是完全兼容的,实际上在MVC环境中是有利的 – Jonathan 2010-08-25 09:55:17

+0

总之,最大的优势是能够在需要时做回发。有道理,谢谢。 @Jonathan为什么在MVC中使用JS而不是webforms是有利的? – Slavo 2010-08-25 11:34:13

2

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

webforms我用于更复杂的事情,如网站的用户端。我制作的网站显示人们可以学习的课程。注册一个课程是一个5步程序,在MVC中,我没有真正的想法如何去做。我确信它可以在MVC中完成,但我认为它在webforms中更好/更快。

但是最后我还是喜欢MVC。它感觉工作起来非常干净。

0

这取决于!

WebForms和MVC之间的区别是如果你可以TDD和控制完整的标记。

+1

不完全是答案。它依赖于什么? – Slavo 2010-08-25 11:34:49

+0

这取决于您拥有哪种类型的项目以及开发团队的工作方式。 – 2010-09-10 21:34:06

2

我唯一会考虑在新项目中使用Web窗体的时候,是否有为Web窗体创建的组件,它解决了使用MVC解决更难解决的特定问题。

1

除了一些不应该被禁止的技巧之外,我不能再看到Webforms比MVC更有优势了。

[本来我认为MVC与webcontrols不兼容,所以希望使用Dundas图表控件是不可能的。根据您的要求,使用webforms会是一个很好的参数。但我相信这不再的情况下,并且无论如何,您可以在你的MVC项目作为最坏情况的WebForms]

3

可能推我(回)有几件事情对的WebForms:

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

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

+0

谢谢。对于前三点,我猜LightSwitch会是你的方式:) – Slavo 2010-08-25 11:36:28

3

如果你只知道的WebForms MVC附带了一个学习的过程,所以你将需要花费相当长的一段时间的训练(或风险进行认真的安全性和性能的错误)

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

丰富的控件 GridView是一个很好的控制,有排序等所有内置为你只需少量代码,只要你的自定义要求很小。

缺乏Web开发经验 Web表单更容易。它需要更多关注你的盘子。对于一个新手来说,这很好,因为它很难出错。尽管如此,如果你知道自己在做什么,或者有时间学习,并且想要建立一个持久的站点,那么MVC是非常好的。还有更多乐趣。

我会补充说,没有什么是错误与web窗体。完全可以用它来构建高性能的应用程序。自从它首次推出以来,时代已经发生了变化,MVC已经很好地解决了这些变化。

相关问题