我知道这是一个荒谬的天空请求,但我有一个项目,我很久以前在WebForms开始,已经发展成为一个相对大而稳定的业务,我想转换为MVC。然而,在过去的一年里,我一直在为一家专门使用MVC的公司工作,我非常喜欢灵活性。正如您可能猜到的,我想将当前的项目更改为MVC,但我开始认为我坚持使用WebForms,即除非有人对如何做到这一点有任何建议。
我想的可能只是启动一个新项目并手动转换功能,但这可能需要AGES并且可能会引入新的bug,尽管只在页面功能代码上(OO代码被打破)。不好主意?
我知道“如果它没有破坏就不要修复它”,但我是开发人员,所以如果没有破坏,我就不会努力了:)
对于那些试图解决问题的人,因为我不清楚我在问什么,你如何将一个大型Webforms项目转换为MVC?或者,我想,最好的方法是什么,或者是否有工具等。
PS:预算不是问题,因为这是个人开发项目。
答案 0 :(得分:1)
Webforms应用程序可以在MVC内部运行,因此它允许您按照自己的节奏转移到MVC。
我在Webforms中为我们公司开发了一个仪表板应用程序。随着它开始变得越来越大,我决定转向MVC以更好地处理扩展。我按照说明here将项目转换为MVC并仍然允许显示webforms页面。
它运作良好,但它并不完美。我的webform的GUI(Webform控件)被搞砸了(可折叠的面板没有正确折叠,模态不会隐藏等等)。这些都不会影响网站的整体功能,但确实看起来很糟糕。我最后只花了接下来的3天将我的大多数webform页面移动到MVC,所以我没有图形问题。
另一件需要注意的事情是,虽然MVC和Webforms可以共享母版页,但您无法将webform控件放在母版页中。如果这是必需的(就像我将脚本管理器和其他一些东西放在母版页中那样),你必须将母版页链接在一起以使它们保持同步。所以MVC页面使用MVC.Master,而webform页面使用我的Webforms.Master(需要所有的webform控件),而Webforms.Master实际上使用MVC.Master作为其主页面。到目前为止,这已经很好了。
关于将实际的webform页面转换为MVC,这对我来说很容易,因为我的业务层完全分离了。我所要做的就是重写(并重组!)GUI以使用业务层。如果您的业务层位于您的webform代码隐藏部分中,那么这将更大。
我认为我的编辑和意识流程很糟糕,所以我希望这有意义或有帮助。我很高兴我转换为MVC,虽然我的应用程序仍然有一些webforms方面愉快地工作。在大多数情况下,逐步转换会起作用,但这实际上取决于您的应用程序的模块化程度。
答案 1 :(得分:0)
不要试图在一个大步骤中移动它,它将无法工作。
我知道“如果它没有破坏就不要修复它”,但我是开发人员,所以如果没有破坏,我就不会努力了:)
我会再说一遍:如果没有破坏,请不要修理它。说真的,不要四处寻找你甚至没有工作的代码。这通常是不可行的。
只移动您正在处理的作品,并且只移动与其密切相关的其他作品。如果没有错误(正确......),则选择所需的功能,移动您需要修改功能的代码。
随着时间的推移,你将能够采取最大的步骤,因为你将拥有更多的作品,并且还有更多的经验。