【问题标题】:What's your choice for your next ASP.NET project: Web Forms or MVC? [closed]您的下一个 ASP.NET 项目的选择是什么:Web 窗体还是 MVC? [关闭]
【发布时间】:2010-10-17 06:25:30
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

MVC 宝贝!还有 JQuery!

编辑:好的,可以说我的回答需要更多信息。

我会选择 MVC 的原因如下:

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

【讨论】:

  • 现在这是一个论点!谢谢! :)
  • @Charlie Flowers:很好的答案。 +1
  • 对每一点都完全同意。我在 3 个生产项目中使用 MVC,对此我非常满意。好吧,也许有点,但它很棒。
  • 不能再同意了!不要忘记查看其他用于 GUI 工作的开源框架,例如 extjs.com 和 mochaui.com/demo
  • 我的印象是 MVC 将您锁定在 Linq 中:是吗?如果是这样,您是否愿意被这样锁定?
【解决方案2】:

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

WebForms 的单元测试要困难得多,因为它们植根于几个难以模拟的具体类,完全有可能。这些包括 HttpContext、HttpResponse、HttpRequest 和 HttpCookie。

MVC 被设计成可测试的,它的 API 极大地方便了测试。

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

【讨论】:

    【解决方案3】:

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

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

    此决定完全基于案例使用和您尝试提供的解决方案。如果您对良好的 SEO 和更快的网站感兴趣,MVC 比 Web 表单更干净且速度更快。

    但是,如果您在同一页面上使用了具有大量过滤器、网格、回发的复杂功能,并且您在 Web 表单方面经验丰富,那就坚持下去。

    【讨论】:

    • +1 承认 MVC 和 WebForms 并不相互排斥,事实上,它们非常适合创建“混合”网站/应用程序,可以在需要时使用两者的功能。
    • +1 再次指定差异! =)
    【解决方案4】:

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

    也就是说,我真的很想尝试 MVC,正如其他人所提到的,社区内的兴奋意味着很快就会有很多支持。

    【讨论】:

    • “大量的知识和资源。” - 好点!
    • +1。同样的原因,我暂时还在使用网络表单。
    • 我在某处读到的一条规则是,对于 Microsoft,您应该始终等待 2.0。直到我想起自己尝试从 ASP 迁移到 .NET 1.0/1.1 的经历,我才开始对 MVC 进行炒作。我会在一年后发布 MVC 2.0 时切换。恕我直言
    • 仅供参考,现在我将使用 MVC
    【解决方案5】:

    MVC FTW!,原因?

    • 完全控制我的 HTML
    • 没有 Web 表单魔法
    • 没有复杂的页面生命周期
    • 更接近金属
    • 使用 HTTP 是很自然的事情

    【讨论】:

    • 网络表单魔法 :D , true true
    【解决方案6】:

    MVC 是“当下的味道”,还是具有持久力?

    我曾使用过 MVC,并且拥有大量的网络表单经验。我经常想知道 MVC 的持久力。

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

    【讨论】:

      【解决方案7】:

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

      滚动通过问题,您会发现 MVC 有很多问题/问题(与好的 o' WebForms 相比)。仅这一点就让我很担心。很多问题似乎是针对特殊 UI 需求的。再次没有尝试过,我不知道它有多成熟,但我还是有点担心。

      也许有人在企业项目中使用过它。

      【讨论】:

        【解决方案8】:

        虽然 MVC 是新手,但使用 Web 表单模型进行设计仍有很多好处。

        • 熟悉工具
        • 外观与现有项目的一致性
        • 工具/设计师
        • 回发
        • 事件驱动
        • 要抽象的控件
        • 第三方控件有效
        • 快速发展
        • 声明式风格

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

        【讨论】:

        • 回发是一个优势:D
        【解决方案9】:

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

        【讨论】:

          【解决方案10】:

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

          坦率地说,我花在 CSS 上的时间最多。编码,与 jQuery 的集成......花生。

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

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

          请注意,如果您要构建的只是一次性 Intranet 站点,则完全有可能不关心这一点,但对于公共 Internet 站点,我每次都会选择 MVC 而不是经典的 ASP.NET。

          【讨论】:

            【解决方案11】:

            MVC

            ...这就是未来所在的地方似乎如此明显

            【讨论】:

              【解决方案12】:

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

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

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

              【讨论】:

                【解决方案13】:

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

                【讨论】:

                  【解决方案14】:

                  我目前选择 ASP.NET MVC 有两个原因:1)我想学习掌握它。 2) 围绕 ASP.NET MVC 已经形成了一个很棒的社区,而且每个人似乎都对它的使用非常积极。我迫不及待地想看看这一切的结局,我想成为其中的一员。

                  【讨论】:

                  • “围绕它形成了一个充满活力的伟大社区”我也在考虑这个问题!
                  • 我认为你的理由是错误的。你认为 Webforms 周围的社区没有那么强大吗?
                  • Gupta:我的回答与 Webforms 社区无关,它是基于我在 ASP.NET MVC 社区中看到的。我喜欢每个人对 MVC 的热情,我认为这种能量将有助于使其成为构建 Web 应用程序的绝佳选择。
                  【解决方案15】:

                  我想使用 MVC。当我使用 WebForms 时,我总是希望与抽象作斗争。

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

                  【讨论】:

                  • 使用
                  • @adolfojp: 或者当你想给它分配一个 cssclass 时:)
                  【解决方案16】:

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

                  【讨论】:

                    【解决方案17】:

                    我在.net 上等待 MVC 很长时间。 我认为超过 90% 的人会选择 MVC 而不是 webform。

                    【讨论】:

                    • 90% 是值得怀疑的......因为大多数 ASP.NET 开发人员可能永远不会知道 MVC 的存在。
                    【解决方案18】:

                    如果是个人项目,那么我会使用 MVC。只是为了更多地了解它。如果这是一个工作中的项目,我会使用 WebForms,可能与 DynamicData 结合用于管理部分。原因是使用我熟悉的技术可以提高工作效率,而使用 DynamicData 作为管理部分可以让我在几分钟内完成该部分的设置。

                    【讨论】:

                      【解决方案19】:

                      与往常一样,这取决于您正在开发的应用程序类型和具体情况。我们的许多内部应用程序都是在 SharePoint 中开发的,因为这是我们选择用于 Intranet 类型应用程序的内部平台。

                      这会自动限制我们使用标准模型上的 ASP.Net。

                      我真的很想掌握 MVC,但我在工作中没有理由这样做,而且我家里有 2 个孩子和一个妻子,所以没有时间在家发展。

                      有时情况会迫使你动手,如果我们都可以选择使用什么平台、框架等进行开发就好了。

                      【讨论】:

                        【解决方案20】:

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

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

                        【讨论】:

                          【解决方案21】:

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

                          【讨论】:

                            【解决方案22】:

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

                            对于网络表单,我发现随着时间的推移,网站往往会变得一团糟,因为您在代码隐藏中拥有处理视图逻辑和控制器逻辑的代码块。随着网站的增长和逻辑变得越来越复杂,很难追踪发生了什么以及发生在哪里。

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

                            此外,就像其他人提到的那样,您可以更好地控制标记和 url,并且它与 mvc 等客户端库配合得更好。

                            我唯一会使用 MVC 的情况是,如果我正在构建一个专注于报告某种数据的 Intranet 站点,其中 asp.net 附带的内置控件将节省开发时间,而我并不关心外观和感觉。我再也不会在面向公众的主要网站上使用 asp.net 网络表单了。

                            【讨论】:

                              【解决方案23】:

                              两者都有!

                              我正在为 MVC 做长期工作。我有太多可以在 Web 窗体中使用的代码。 MVC 非常棒,但它仍然在生产力领域留下了很多东西,例如模板化的网格和列表、基本的 UI 控件(日历、自动完成等)和脚手架。这些都是 Web Forms 擅长的领域,但如果您想要精确控制并且想要保持简单,就会偏离轨道。

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

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

                              【讨论】:

                                【解决方案24】:

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

                                【讨论】:

                                  【解决方案25】:

                                  嗯.. 目前我和您一样感到困惑并且即将开始建立一个新网站:)。我本来打算从 Webforms 开始,但现在我看到了人群的发展方向,我想我现在要试一试 MVC。

                                  感谢您提出这个问题。

                                  【讨论】:

                                  • “但现在我看到了人群的前进方向,我想我现在要试一试 MVC。” -> 或多或少我在想什么。 :)
                                  【解决方案26】:

                                  现在它是 RTMed 并且现在有一些非常好的资源,我会说 ASP.net MVC 将是我的强烈偏好,但它不是一成不变的。

                                  Web 表单并没有消失,它仍然存在,它仍然受支持,而且我在几个主要网站上工作过并且非常成功地使用了 Web 表单,所以如果有其他外部因素,例如客户偏好,或者可能是拥有扎实的 Web 表单经验的团队,那么我仍然很乐意使用 Web 表单。也就是说,我已经使用 MVC 进行了一个项目(虽然它仍处于预览阶段),我更喜欢它——我的原因与上面给出的相似,所以我不会全部重复。我会说,如果可测试性不是最好的理由,那它肯定是最重要的:)。

                                  【讨论】:

                                    【解决方案27】:

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

                                    【讨论】:

                                      【解决方案28】:

                                      我想做 ASP.Net MVC,尽管我对 MVC 还是很陌生。但这不是在可预见的将来。

                                      【讨论】:

                                        【解决方案29】:

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

                                        【讨论】:

                                          猜你喜欢
                                          • 2011-04-16
                                          • 2010-09-25
                                          • 1970-01-01
                                          • 2010-10-08
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 2010-09-06
                                          • 1970-01-01
                                          • 2014-06-05
                                          相关资源
                                          最近更新 更多