我已经阅读了大量的问题和文章,说明从ASP.NET Webforms转换到MVC几乎是不可能的。但是我认为我的情景不同。
我大约一年前在Webforms中愚蠢地开始创建一个项目,但我采用的方法(据我所知)非常像MVC。我已禁用表单验证,不使用任何回发,使用URL重写,所有页面更改都是加载ContentPlaceHolders页面内容的AJAX请求(使用小型hack,覆盖RenderControl
方法)。我还在网站中引用的单独项目中使用了我自己的ORM和RESTful Service API。
现在系统运行良好,页面部分刷新正常,并且在进行ajax调用时更改了url,因此当页面刷新时,它看起来完全相同。
现在我刚刚被告知我需要为一个新的大项目学习MVC(但我必须先完成另一个项目),但我已经完成了一些关于这个主题的阅读并启动了一些Hello World应用程序,似乎ASP.NET MVC的想法几乎就是我已经创建的。
StackOverflow仍然建议不要将Webforms应用程序转换为MVC吗?除了最佳实践之外,转换到MVC还有其他好处吗?
答案 0 :(得分:3)
我有一个非常大的ASP.NET WebForms应用程序(最初是为.NET 1.1编写的!)并且已经使MVC能够并行工作。我一直在使用MVC编写新功能,并将旧的WebForms功能转换为MVC控制器和视图。
我遇到了一些关于URL授权和在IIS集成模式下运行的小问题,但是一旦我理解了这些问题,他们就很容易解决。那么几乎不可能?当然不是!
我无法告诉您是否值得花时间进行转换,因为我不知道您的应用程序的大小,范围或性质,或任何业务限制。然而,转向MVC对于简化开发和质量是一个相当大的好处(因为它更容易划分和单元测试)。更不用说,我在MVC中编写(或重写)的功能比WebForms等效功能更清晰,更快速,更快速。
我很高兴将它从MVC v2移到v3,并转换为Razor视图。我也会?如果我是你,我有时间,我会这样做。
以下是我发布的一个问题,其中概述了流程以及我在转换过程中遇到的一个更重要的问题。 Migrating legacy ASP.NET to MVC 2 (RC): HttpApplication events not firing, User principal is null
答案 1 :(得分:3)
我最近将一个中等规模的项目从WebForms转换为MVC。我不建议你在你的第一个MVC项目中这样做,但是一旦你掌握了它,就没有什么能阻止你(逐渐)将WebForms应用程序转换为MVC。
我注意到的一个主要好处是速度。通过抛弃视图状态,数据绑定和Web控制怪异,您最终可以获得更快的应用程序。
当然还有更好的已知好处,例如可测试性和对生成的html的完全控制。
WebForms和MVC共享相同的基本ASP.NET平台,因此它们实际上并不像您读过的那样不兼容。