您对下一个ASP.NET项目的选择是什么:Web窗体还是MVC?

时间:2009-04-03 01:10:44

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

假设您明天将启动一个新的ASP.NET网站/应用程序。你会选择Web Forms还是MVC,为什么?

29 个答案:

答案 0 :(得分:85)

MVC宝贝!还有JQuery!

编辑:好的,公平地说我的回复需要更多信息。

我选择MVC的原因如下:

  1. 我在Rails工作并发现它非常高效。 ASP MVC从Rails那里借了很多东西,在某些方面它感觉像是一个直接端口(这在我看来是件好事。)
  2. AJAX很重要,但我讨厌微软“Atlas”的AJAX方法(无论现在的产品名称是什么)。如果你要做AJAX,你需要了解HTML和JavaScript。隐藏你的框架比你帮助你(IMO)更伤害你。
  3. JQuery在JavaScript框架方面已经占据了世界。 ASPMVC与它很好地集成在一起。我想学习它,所以这里有很好的一致性。
  4. 整个“控制”模型是一个很好的想法,但它比表面上看起来更复杂。例如,在SO上查看有关UserControl如何找到包含控件的最高级别等问题。控制层次结构抽象中有漏洞。如果网格能够满足您的需求,那么网格就很棒,但要定制它们以做一些他们不想做的事情是非常困难的。市场上最好的网格控制(高度可定制的网格控制)是庞大,臃肿,过于复杂的野兽。也许这表明我们应该回退到HTML并让我们的视图中的循环为我们做这样的事情。
  5. 我相信我可以在ASPMVC中构建完整,漂亮的应用程序,速度比ASP.Net快得多(而且我已经有了几年的ASP.Net)。看看使用JQuery在ASPMVC上快速构建的StackOverflow ...它使用IMO快速,可扩展且令人愉快。
  6. 哦,这是完全开源的!可以阅读源代码,关于它的博客,甚至修改然后重新分发它!

答案 1 :(得分:21)

我会选择MVC只是因为它的设计是可测试的和可模拟的。这将是我决定的主要因素。

WebForms对单元测试来说要困难得多,因为它们根植于几个具体的类,这些类很难在Mock中完成。这些包括HttpContext,HttpResponse,HttpRequest和HttpCookie。

MVC旨在可测试,它的API极大地方便了这样做。

关于MVC可测试性的好文章:http://dotnetslackers.com/articles/aspnet/ASPNETMVCFrameworkPart2.aspx

答案 2 :(得分:16)

就个人而言,我决定同时使用两者......

如果它是一个网站(在线查看),我决定使用ASP.NET MVC。 如果它是一个应用程序(具有单一目的的Web应用程序),我决定使用Web表单。

此决定完全基于案例使用和您尝试提供的解决方案。如果您对优秀的搜索引擎优化和更快的网站感兴趣,那么MVC会更清晰,并且比网络表单更快。

但是,如果您在同一页面上使用大量过滤器,网格,回发以及您在Web窗体中经验丰富的复杂功能之后,请坚持使用它。

答案 3 :(得分:13)

如果我今天开始,我可能仍会坚持使用网络表格,因为它周围有大量的知识和资源。

那就是说我真的想给MVC一个机会,而其他人已经提到社区内的兴奋意味着它不会花很长时间才会得到很多支持。

答案 4 :(得分:13)

MVC FTW!,原因?

  • 对我的HTML的完全控制
  • 没有Web Forms魔力
  • 没有复杂的页面生命周期
  • 更接近金属
  • 与HTTP
  • 一起使用是很自然的事情

答案 5 :(得分:8)

MVC是“当天的风味”,还是具有持久力?

我曾与MVC合作过,并拥有大量的网络体验经验。我经常想知道MVC的持久力。

选择其中一个时,您应该考虑这个问题。您希望在整个产品生命周期中支持什么?

答案 6 :(得分:7)

我不能说我还没有尝试过MVC。但我现在有点担心将它用于一个非常大的企业项目。

滚动浏览通过问题,你会发现MVC存在很多问题/问题(与好的o'WebForms相比)。仅此一点让我担心。许多问题似乎都是针对特殊的UI需求。再一次没有尝试过,我不知道它有多成熟,但我仍然有点担心。

也许有人将它用于企业项目可能会有所启发。

答案 7 :(得分:6)

虽然MVC是块中的新手,但使用Web窗体模型进行设计仍然有很多好处。

  • 熟悉该工具
  • 外观与现有项目的一致性
  • 工具/设计者
  • 回传
  • 事件驱动
  • 抽象控件
  • 第三方控件正常工作
  • 快速发展
  • 声明式

Rachel Appel在MIX就这个话题做了精彩的演讲。您可以在此处观看视频:
在ASP.NET Web窗体和MVC之间进行选择 http://videos.visitmix.com/MIX09/T23F

答案 8 :(得分:5)

我会为具有丰富业务逻辑的本地/内部网应用程序选择Webforms,为公共/互联网站点(博客/论坛/演示文稿/简单服务)选择MVC。 “富有国家支持至关重要的领域”中最好使用“WebForms应用程序模型”

答案 9 :(得分:5)

我在一周前为自己的产品创建了一个新网站,我对ASP.NET MVC感到高兴。一切看起来很自然,我总是知道去哪里,看看有什么东西不起作用或看起来不像我想要的那样。

坦率地说,我花费的最大时间是CSS。编码,与jQuery集成......花生。

OTOH,如果您不是经验丰富的开发人员,ASP.NET将吸引您,因为它鼓励您一路走来并控制您网站的所有方面 - HTML标记,CSS等。 ,这反过来意味着没有控制,拖放视觉编辑等。

与您自己留下的传统ASP.NET不同,并且通常最终会在各种页面中混合使用各种UI,持久性(DB)和业务逻辑代码,MVC将指导您并帮助您更加一致地构建应用程序。如果您不喜欢“自以为是”的框架和/或只是想在不关心网站结构,可维护性,可扩展性等的情况下完成工作,那么这不会与您同在。

请注意,如果您构建的所有内容都是一次性内部网站,那么完全有可能不关心这一点,但对于公共Internet站点,我每次都会选择MVC而非经典ASP.NET。

答案 10 :(得分:3)

MVC

......看起来很明显,未来就是

答案 11 :(得分:3)

在ASP.NET MVC中,您牺牲了控件工具箱, URL路由已经在ASP.NET(Web表单)

所以我会坚持使用ASP.NET Web表单(我不是说MVC不好。)

jQuery,您认为IT人员会让您使用它吗?

答案 12 :(得分:2)

如果您正在为Intranet开发,请对ASP.NET MVC说“不”。对于互联网,当然。

答案 13 :(得分:2)

MVC。我们将重做一个SEO密集的应用程序和MVC接缝,以适应开箱即用。另外,我想和操场上很酷的孩子们一起出去玩。

答案 14 :(得分:2)

我在所有以前的项目中使用webforms后,刚刚在MVC平台上发布了一个主要的公共站点。毫无疑问,它是要走的路,IMO。

使用webforms,我发现这些网站随着时间的推移会变得一团糟,因为代码隐藏中的代码块可以处理视图逻辑和控制器逻辑。随着网站的增长和逻辑变得越来越复杂,很难追踪正在发生的事情和地点。

我发现MVC迫使你以更合乎逻辑的方式解决问题。控制器和模型类使您可以更好地控制应用程序的组织。此外,视图更灵活,因为有一种通过模型向他们提供数据的特定方式。

此外,就像其他人提到的那样,你可以更好地控制标记和网址,并且它可以更好地使用像mvc这样的客户端库。

我唯一一次使用MVC是因为我正在构建和内部网站点,专注于报告某种类型的数据,其中asp.net附带的内置控件可以节省开发时间,而我并不关心外观和感觉。我绝不会再次使用asp.net webforms进行面向公众的主要网站。

答案 15 :(得分:2)

两个!

我正在向MVC长期致敬。我有太多代码可以在Web窗体中使用。 MVC是幻想,但它在诸如模板化网格和列表,基本UI控件(日历,自动完成等)和scafolding等生产区域中留下了很多。这些都是Web Forms擅长的领域,但如果您想要精确控制并希望保持简单,那么它们就会脱轨。

如果他们愿意弥合两者之间的差距,MVC 3和EF Code-Only可能是一个伟大的婚姻。大多数使用Ruby的人都将它用于Rails,ActiveRecord使其易于使用。

此外,我希望看到一个与MSC支持的并行“功能包”项目,类似于他们使用Microsoft Ajax Toolkit的方式,可以说有季度更新。我发现MVC Futures和MVCContrib都缺乏。但我知道他们只有这么多预算。所以,这是希望MVC 3改变这一切。

答案 16 :(得分:2)

ASP.NET MVC,因为我想学习如何使用它。

答案 17 :(得分:2)

我目前正在使用jQuery和jQuery-ui在Asp.net MVC上开展一个项目,这很有趣。

如果您熟悉html和javascript(或者像rails这样的其他MVC框架),MVC比旧的webforms更有意义。并且你控制输出,而不是对表单上的一些模糊控制,所以如果页面上有错误或者你想改变布局,你可以:)。

答案 18 :(得分:2)

一如既往,这取决于您正在开发的应用程序类型和个人情况。我们正在SharePoint中开发许多内部应用程序,因为这是我们内部网类型应用程序的首选内部平台。

这会自动将我们限制在标准型号的ASP.Net上。

我真的想要接触MVC,但我在工作中没有理由这样做,我家里有2个孩子和一个妻子,所以没有时间在家里开发。

有时情况迫使你的手,如果只有我们都可以选择确切的平台,框架等开发。

答案 19 :(得分:2)

如果是个人项目,那么我会使用MVC。只是为了了解更多信息。如果它是一个正在工作的项目,我会使用WebForms,可能与DynamicData结合使用,用于管理部分。原因是我使用我所知道的技术会更有效率,并且使用DynamicData作为管理部分可以让我在几分钟内设置该部分。

答案 20 :(得分:2)

我在.net上等待MVC很长一段时间了。 我认为超过90%的人会选择MVC而不是网络形式。

答案 21 :(得分:2)

它真的取决于项目,因为我没有用MVC构建任何东西,如果项目交付时间很短,我可能会发现MVC中的一些障碍可能使我无法及时交付项目。

答案 22 :(得分:2)

我目前选择ASP.NET MVC有两个原因:1)我想学习掌握它。 2)围绕ASP.NET MVC已经形成了一个很好的社区,每个人似乎对它的使用都非常积极。我迫不及待地想看看它到底在哪里,我想成为它的一部分。

答案 23 :(得分:2)

我想和MVC一起去。当我使用WebForms时,我总是在接触抽象。

要有效地使用WebForms,您实际上需要了解更多关于Web的工作方式,而不是使用像PHP这样的东西。我发现自己使用<asp:Literal代替<asp:Label来避免在文本周围放置<span>并运行实验来确定事件的顺序等。

答案 24 :(得分:1)

嗯..此刻我很困惑,就像你一样,即将开始建立一个新网站:)。我将从Webforms开始,但现在我看到了人群前进的方向,我想我现在要给MVC一个旋转。

感谢您提出这个问题。

答案 25 :(得分:1)

现在它是RTMed,现在有一些非常好的资源,我会说ASP.net MVC将是我的强烈偏好,但它并没有削减和干燥。

Web表单尚未消失,它仍然存在,它仍然受到支持,我已经在几个主要站点上工作并且非常成功地使用了Web表单,所以如果还有其他外部因素,例如客户偏好,或者可能是拥有扎实Web窗体体验的团队,我仍然乐于使用Web窗体。那说我已经在MVC的一个项目上工作了(虽然它还在预览中),我更喜欢它 - 我的理由与上面提到的相似,所以我不再重复。我会说,如果可测试性不是最好的原因,那肯定是最重要的原因:)。

答案 26 :(得分:1)

我会选择MVC,因为设计人员和开发人员可以在同一个项目上并行工作。设计人员可以处理视图部分(JavaScript,CSS,HTML),而后端开发人员可以处理控制器代码。

答案 27 :(得分:0)

我想做ASP.Net MVC,尽管我还是MVC的新手。但它不是在可预见的未来。

答案 28 :(得分:0)

我实际上将在接下来的几周内开始重建一个网站,这是在ASP.NET 2.0中编写的,我将使用ASP.NET MVC。出于与上述相同的许多原因。我宁愿不使用自定义.NET控件并自己处理HTML / JavaScript(使用jQuery)。我也做了很多Java Web开发,所以对基础HTML / JavaScript / CSS有一个很好的理解对我来说很重要。