2012-02-23 60 views
3

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

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

因此,我已经采取了只使用Page_Load事件,完全忽略所有的回传的东西 - 当我需要处理提交表单,我手动处理它从Page_Load事件与Request.Form["ElementName"],但大部分我使用JavaScript的时间。

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

回答

6

好吧,正如您可能已经猜到的那样,这是一个如此广泛的问题,几乎不可能在没有看到现有代码库规模的情况下就您的个人情况给出建议。然而,也有许多缓和因素,你可能要考虑关于跨移动功能零碎的,如:

  • 我可以在现有的功能分解成离散段
  • 并在已有的网站仍然需要所有当前功能
  • 是否有新的功能,我可以在MVC
  • 纯介绍我是否需要扩展对象模型 - 通过mvcscaffolding
EF代码优先可以给予巨大的优势

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

+0

+1组合和匹配 - 您可以在一段时间和相位网络转换区域转换区域。 – StuartLC 2012-02-23 13:26:10

+0

谢谢,我会尝试运行MVC和webforms在一起。这种方式可能更好,因为我可以慢慢地用MVC解决额外的问题。 – Oliver 2012-02-23 13:30:45

+0

是+1,但同时可能会详细阐述组合模型。 – 2012-02-23 13:32:24

0

它必须是重写,而不是端口。 MVC网站的构建与WebForms网站完全不同。

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

并且被警告:一旦你切换到MVC,你将永远不会回到ASP.NET的旧世界! :-)

祝你好运!

+0

'MVC不基于ASP.NET请求生命周期。因为MVC建立在ASP.NET之上,所以不成立。 – jgauffin 2012-02-23 13:24:54

+0

在MVC网站中,没有页面事件,例如页面初始化,页面加载等。 – 2012-02-23 13:27:58

+0

什么与'ASP.NET'请求生命周期做?你可能指的是webforms Page生命周期? – jgauffin 2012-02-23 13:29:39

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 2012-02-23 13:26:03

1

想提高你的代码,你的技能是从来没有一个死棋!

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

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

如果有可能需要在MVC和网页表单中提供功能,那么这会变得复杂,您可能最好转移到MVC。

就个人而言,无论你做什么,从小而直接地开始,如果你可以点点滴滴。