【问题标题】:MVC or Webform Architecture for new site新站点的 MVC 或 Webform 架构
【发布时间】:2010-11-02 17:17:58
【问题描述】:

我正在开发一个网站,工作门户。我有 2-3 年的 ASP.NET webform 开发经验, 我想创建一个专业的工作门户网站(以改进和了解更多信息),但试图确定最佳架构。任何建议或意见都会有所帮助...

谢谢

【问题讨论】:

  • 使用 asp.net mvc,您也可以混合一些网络表单。尝试将主站点作为 asp.net mvc 并在管理端使用 webforms。
  • 为什么要为管理站点使用网络表单?为什么 MVC 不适合它?我和 Rahul 处于同样的情况,必须启动一个大型 LOB 应用程序,并且不确定 MC 是好还是仅当我们渲染几个网格时才好......谢谢!

标签: c# asp.net asp.net-mvc architecture


【解决方案1】:

我开始在 webforms 中开发我们当前的应用程序,开发开始时 mvc 不可用.. 我选择了 MVP 模式,带有 URL 重写 HTTP 模块。目前我正在研究将一些 MVC 插入其中,基本上是使用前端控制器而不是使用页面控制器。在我的应用程序中已经建立的带有 Web 表单的 MVP 架构中的其他东西给了我比没有 WebForms 的纯 MVC 方法更大的灵活性,我喜欢这种方法,尽管需要比 MS MVC 示例更多的代码(从未在实际项目中尝试过它是否保持这种状态,就像截屏视频中的示例一样)。

我不喜欢 MVC 在模板中混合控制代码——我相信循环、if 和类似的东西不应该属于模板。但几天前,我遇到了 Spark 视图引擎,它在该领域看起来很有希望,尽管与 Java 世界中的 Tapestry 5(一个基于组件的 webGUI 框架)还不太接近。

但是上面提到的将两者混合的建议可能对您探索 MVC 世界有用,并且如果某些东西对您不适用,可能会适合您。

【讨论】:

    【解决方案2】:

    我的一个客户最近要求我写一篇论文,或者只是一份清单,以帮助其他主要开发人员做出同样的决定。

    我在博客上发布了前 2 个草稿。诚然,我是 mvc 的支持者,但我们已经收到了论文/清单,所以它可能会有所帮助。

    http://eric.polerecky.com/archives/a-somewhat-less-biases-comparison-of-mvp-and-mvc/[http://eric.polerecky.com/archives/a-somewhat-less-biases-comparison-of-mvp-and-mvc/][1]

    我认为 MVC 最常被忽视的好处是约定。我确实在 webforms 项目中看到了任何约定,虽然在 MVC 项目中没有严格执行,但至少在那里。

    【讨论】:

      【解决方案3】:

      虽然没有人能确切地告诉您该怎么做,但我管理的团队即将发布一个使用 ASP MVC 的新 CMS / 工作门户。 MVC 为我们提供了开箱即用的出色可测试性和可扩展性,它可以快速与 nHibernate / Windsor (IOC) / nCache / jQuery 等工具结合 - 这确保您在 Internet 上拥有丰富的资源来帮助您加速开发和技能。您还可以采用 XHTML 1.1 strict 等标准,这在 ASP.Net 网络表单中几乎是不可能的,因为它会自动生成 HTML

      1 另一个优点是您还可以摆脱可怕的 ASP.Net 视图状态。

      【讨论】:

        【解决方案4】:

        我的回答几乎总是“ASP.NET MVC”。灵活性和功能以及可测试性和可维护性的数量...远远超过 WebForms。

        WebForms 具有现有控件和文档的丰富生态系统的优势,并且对于某些类型的任务(复杂的、多表单交互)确实非常强大,但我发现它的局限性经常成为阻碍。你必须把自己塑造成它。

        【讨论】:

          【解决方案5】:

          这可以被认为是无耻的自我广告,但这是我关于如何在两者之间进行选择的测验: http://sietch.net/ViewNewsItem.aspx?NewsItemID=101

          【讨论】:

            【解决方案6】:

            我在 Jquery、CSS、HTML、Javascript 方面有很好的经验,但在 TDD 方面没有。

            我有时间..并且愿意学习 MVC,但不确定 MVC 是否适合工作门户或类似网站..

            【讨论】:

            • 如果你对 JQuery、CSS、HTML 有很好的经验,你应该选择 MVC。不明白为什么 MVC 不适合工作门户网站
            【解决方案7】:

            我也同意选择 MVC 的好处是可以扩展您的知识。这不是唯一的原因,考虑到选择,我刚刚完成了一个小型 MVC 项目(我的第一个项目),让我告诉你 MVC 真棒!它是一个很棒的框架,我认为它为您提供了更大的灵活性,同时提供了开箱即用的工具,可以快速、轻松地创建 Web 应用程序。这是我第一次使用 VS2008 和 .NET FW 3.5 和 LINQ,www.asp.net 上的所有指南帮助我快速前进(尤其是提到的 MVC 1.0 书中的免费教程章节here)。

            在此过程中我还学习了 JQuery,因为它与这些新技术非常集成。

            需要注意的是,这是一项新技术,第 2 版已经在酝酿之中,所以如果您的项目是长期的,请牢记这一点并做出相应的计划(在我的情况下,它是一个小项目,我可能会在正式发布时尝试将我的项目升级到版本 2)。然而与此同时,拥有完全支持 MS(以及 MSDN)的版本 1 对我来说是天赐之物......

            祝你好运!

            【讨论】:

            • 我提到的指南专门介绍了 TDD 的几页,并通过解释逐步指导您了解如何设置和使用测试单元项目...非常有帮助!
            【解决方案8】:

            这实际上取决于应用程序的最终目标是什么。正如 Scott Ewers 所说,如果您的目标是学习,那么使用 ASP.NET MVC 将扩展您在 ASP.NET 领域的知识广度(因为您已经了解 Web 表单)。

            此外,如果这将是一个公共产品,您可以利用 MVC 的可测试性优势并运行自动化单元测试。关注点分离等关键思想也可以提高长期可扩展性和可维护性。

            您可能会选择 Web 表单的主要原因是,如果您正在快速制作工作板应用程序的原型。如您所知,Web 表单允许您将组件拖放到画布上,以快速创建一些基本的数据输入功能。

            【讨论】:

              【解决方案9】:

              从 5 月 13 日起有一个herding code podcast 与此主题相关。

              Herding Code 47:Joe Brinkman 谈 Webforms 与 ASP.NET MVC。

              【讨论】:

                【解决方案10】:

                如果您愿意,请使用 ASP.NET MVC:

                • 学习 ASP.NET MVC 框架
                • 使用jQuery 或类似库
                • 真正学习网络语言(HTML、CSS、JavaScript)
                • 使用测试驱动开发
                • 清晰地分离关注点

                如果您没有时间或不愿意学习正确使用 ASP.NET MVC 框架,请坚持使用 ASP.NET WebForms。

                【讨论】:

                • 你不能在 webforms 中使用 jQuery?
                • 可以,但是使用 ASP.NET MVC 会简单得多,因为您可以更好地控制 HTML,尤其是 ID 属性。 BTW 在 ASP.NET 4.0 中你可以使用 ClientId 属性来设置 ID,这是一个改进。 jQuery 也包含在 ASP.NET MVC 项目模板中。
                【解决方案11】:

                嗯,有很多方法可以回答这个问题,我相信很多其他人都会加入。我只想说,因为你的目标是提高和学习更多,而你已经有 2-3多年的 webform 经验,这可能是你学习 MVC 的好机会。然后,您将在这两个方面都有经验,并且可以就未来项目的最佳架构做出更明智的决策。

                学习愉快!

                【讨论】:

                  猜你喜欢
                  • 2012-08-02
                  • 2010-09-26
                  • 2011-03-29
                  • 1970-01-01
                  • 2023-03-07
                  • 2011-09-13
                  • 1970-01-01
                  • 2013-09-14
                  • 2023-03-31
                  相关资源
                  最近更新 更多