【问题标题】:How time consuming is it to port a Webforms site to MVC?将 Webforms 站点移植到 MVC 需要多长时间?
【发布时间】:2012-02-23 13:14:41
【问题描述】:

将使用 Webforms 构建的网站迁移到使用 MVC 构建的网站需要多长时间?

我有一个使用 asp.net webforms 构建的现有网站,但它有点烦人。我想使用大量的 javascript 和 ajax,但是 webforms 让这有点困难。它试图为我做太多事情,因此当我想做它没想到的事情时,它很难与之合作。

因此,我只使用Page_Load 事件,完全忽略了所有回发的东西——当我需要处理提交表单时,我从Page_Load 事件手动处理它Request.Form["ElementName"] ,但大多数时候我都使用 javascript。

我听说 asp.net MVC 更易于使用,所以我正在考虑将我的网站移植到这个上。鉴于我只在标准 HTML 元素上编写 runat="server",我需要用 .innerHTML = 填充数据,我需要多长时间才能转移到 MVC?或者尝试这个举动是一个完全愚蠢的想法?

【问题讨论】:

    标签: c# asp.net-mvc-3 webforms


    【解决方案1】:

    嗯,正如您可能已经猜到的那样,这是一个范围广泛的问题,如果没有看到现有代码库的规模,几乎不可能就您的个人场景提供建议。但是,您可能需要考虑许多关于零散移动功能的缓解因素,例如:

    • 我能否将现有功能分解为独立的部分
    • 现有网站是否仍需要所有当前功能
    • 是否有我可以纯粹在 mvc 中引入的新功能
    • 我是否需要扩展对象模型 - EF 代码优先可以通过 mvcscaffolding 提供巨大优势

    asp.net 的美妙之处在于您可以将 webforms 和 mvc 混合在一起,因此您可以根据需要削减功能。当然现在网上mvc的资源太多了,上手容易上手,相信你会进步的。

    我认为您会真正喜欢 mvc - 这是一种不可回头的体验

    [编辑] - 网络上有一些有趣的资源讨论了 webforms 和 mvc 的组合。然而,对我来说,最终的一个必须是不久前的斯科特·汉塞尔曼斯。在 mvc3 中仍然是相关的:

    http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx

    还有:

    http://www.aspnetmvcninja.com/general/mixing-asp-net-mvc-and-webforms

    【讨论】:

    • +1 混合搭配 - 您可以一次转换区域并逐步淘汰网络表单。
    • 谢谢,我会尝试同时运行 MVC 和 webforms。这种方式可能也更好,因为我可以慢慢地用 MVC 解决额外的问题。
    • 是+1,但同时可能会详细说明组合模型。
    • henk - 好点。将使用指向 hanselman 片段的指针更新答案
    【解决方案2】:

    简短的回答,这里不可能说出来。

    答案很长,这取决于...

    这取决于您需要重写的网站数量、网站的复杂性和您的架构。

    如果您的所有逻辑都在文件背后的代码中,那么您将有很长的路要走。 如果您的架构将责任与服务和抽象的使用分开,那就容易多了。

    如果我应该走那条路,我会考虑一点一点地移植代码。我已经使用 JSF 和 Spring MVC 完成了这项工作,看起来这对于 .Net 也是可行的。

    http://weblogs.asp.net/rajbk/archive/2010/05/11/running-asp-net-webforms-and-asp-net-mvc-side-by-side.aspx

    【讨论】:

    • 谢谢,大部分逻辑都在独立于代码隐藏的文件中。我试图做到这一点,以便代码隐藏只将数据呈现到页面。
    【解决方案3】:

    想要改进你的代码和技能绝不是愚蠢的举动!

    可以在同一个应用程序中同时使用它们。这不一定是可取的,但如果您设置了一个 MVC 项目,您可以告诉它忽略映射到您的 Web 表单页面的页面请求。

    然后,您可以根据需要开始迁移功能。

    如果您可能需要跨 MVC 和 Web 表单页面使用某些功能,那么这将变得复杂,您可能最好一次性迁移到 MVC。

    就个人而言,无论你做什么,从小而直接的开始,如果你能一点点做的话。

    【讨论】:

      【解决方案4】:

      它必须是重写,而不是移植。 MVC 网站的构建方式与 WebForms 网站截然不同。

      MVC 不基于 ASP.NET 请求生命周期。没有代码隐藏;从 Controller 类调用业务逻辑;数据被封装在模型中,然后传递给视图。它与 ASP.NET 完全不同。

      请注意:一旦您切换到 MVC,您将永远不会回到 ASP.NET 的旧世界! :-)

      祝你好运!

      【讨论】:

      • MVC is not based on the ASP.NET request lifecycle。不正确,因为 MVC 是基于 ASP.NET 构建的。
      • 在 MVC 站点中没有 Page 事件,例如 Page Init、Page Load 等。
      • ASP.NET请求生命周期有什么用?您可能指的是网络表单页面生命周期?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 2011-05-12
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多