将一个Webforms网站迁移到MVC需要多长时间?

3
移动一个使用Webforms构建的网站到使用MVC构建的网站需要多长时间?
我有一个使用asp.net Webforms构建的现有网站,但有些令人烦恼。我想使用大量的javascript和ajax,但是Webforms使得这有点困难。它试图为我做太多事情,因此当我想要做一些它不期望的事情时,它让工作变得困难。
因此,我只使用Page_Load事件,并完全忽略所有的postback内容 - 当我需要处理提交表单时,我使用Request.Form["ElementName"]手动处理Page_Load事件,但大多数时间我使用javascript。
我听说asp.net MVC更好用,所以我正在考虑将我的网站移植到MVC上。鉴于我只在需要用.innerHTML = 填充数据的标准HTML元素上使用runat="server",那么我需要多长时间来转移到MVC?或者尝试这种移动是完全愚蠢的想法?
4个回答

6

嗯,你可能已经猜到了,这是一个非常广泛的问题,如果不看现有代码库的规模,几乎不可能给出关于你个人情况的建议。然而,有许多缓解因素需要考虑,例如:

  • 我能否将现有功能分解为离散段
  • 现有网站是否仍需要所有当前功能
  • 是否可以纯粹在mvc中引入新功能
  • 我是否需要扩展对象模型——EF Code-First通过MVCScaffolding可能会带来巨大优势

asp.net的美妙之处在于,您可以混合使用WebForms和MVC,因此可以根据需要逐步削减功能。当然,现在网络上有很多关于mvc的资源,所以很容易快速入门,我相信你会取得良好的进展。

我认为你会真正喜欢mvc——这是一个无法回头的体验

[编辑] - 网上有一些有趣的资源讨论Web表单和MVC的混合使用。然而,对我来说最权威的还是Scott Hanselman在一段时间前发布的文章。在MVC3中仍然适用。

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

还有:

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


+1 混合匹配 - 您可以一次转换区域并逐步淘汰 Web 表单。 - StuartLC
谢谢,我会尝试同时运行MVC和WebForms。这样做可能更好,因为我可以慢慢解决使用MVC时可能出现的额外问题。 - Oliver
是的,+1,但同时也可以稍微详细介绍一下组合模型。 - H H
Henk - 很好的观点。我会更新答案,并提供指向Hanselman文章的指针。 - jim tollan

1

简短回答,无法在此处确定。

详细回答,这取决于......

这取决于您需要重写多少个站点,站点的复杂程度以及您的架构。

如果所有逻辑都在代码后面的文件中,那么您需要花费很长时间。如果您的架构使用服务和抽象分离责任,那么就容易得多。

如果我要走那条路,我会逐步查看代码移植。我曾经用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


1
谢谢,大部分逻辑都在与代码后台分离的文件中。我尝试让代码后台只渲染数据到页面上。 - Oliver

1

想要提高你的代码和技能绝不是愚蠢之举!

可以在同一个应用程序中同时使用它们。虽然这并不一定明智,但如果您设置了一个MVC项目,您可以告诉它忽略映射到WebForm页面的页面请求。

然后,您可以根据需要逐步移动功能。

如果可能有功能需要在MVC和WebForm页面上可用,那么这将变得复杂,您最好一次性转移到MVC。

个人建议,无论你做什么,都要从小而简单开始,如果可以逐步实现。


0

这将需要重写,而不是移植。MVC网站与WebForms网站的构建方式非常不同。

MVC不基于ASP.NET请求生命周期。没有codebehind;业务逻辑从Controller类中调用;数据封装在Models中,然后传递给Views。它与ASP.NET完全不同。

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

祝你好运!


MVC 不是基于 ASP.NET 请求生命周期的。这并不正确,因为 MVC 是建立在 ASP.NET 之上的。 - jgauffin
在MVC网站中,没有像Page Init、Page Load等页面事件。 - Roy Dictus
ASP.NET 请求生命周期有什么关系?您可能在指 webforms 页面生命周期? - jgauffin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接