将 Web 表单迁移到 ASP.NET Core MVC 的最佳实践

问题描述 投票:0回答:5

我正在尝试将项目从经典 ASP.Net Web 表单迁移到 ASP.NET MVC。

虽然我已阅读http://www.codeproject.com/Articles/38778/ASP-NET-WebForms-and-ASP-NET-MVC-in-Harmony。我对代码结构、库和路由应该如何完成有一个基本的想法。

供您参考,我现有项目的范围约为 400 页和 300 个表格。

我有两种方法:

  1. 从拉伸开始,重写整个系统 - 显然这需要大量的工作并且需要很长时间。对现有系统进行的任何更改都需要对新系统进行重复更改。
  2. 每个页面迁移一个 - 我仍然重建整个核心库(用于访问数据库),并将页面一页一页地迁移。为此,我假设有两个核心库(新的和旧的)同时运行,不同的页面连接到其中之一。

有人有类似的经历并建议正确的开始方法吗?

对于这次彻底的改造,我可能还会瞄准最新的技术 - .NET Core 和 MVC6,通过采用这些技术我会拥有额外的优势,还是需要解决一些障碍?

如有任何建议和意见,我们将不胜感激。干杯。

asp.net asp.net-mvc webforms migration
5个回答
18
投票

微软在这个问题上有点嘘嘘,但 WebForms 引擎可能永远不会进入 ASP.NET Core。有人可能会认为 MS 正在等待社区是否需要一个端口,但我认为他们正试图谨慎地终止它(不像 Silverlight)。

为什么?因为从长远来看,它被证明是一个坏主意,一开始很容易使用,但掌握起来极其复杂(因为视图状态和页面生命周期),并且倾向于允许普通开发人员构建非常繁琐的应用程序(在法语中,我们比如说蒸汽工厂)。而且它不太适应现代 Web 开发(Ajax、单元测试、IoC)。他们试图通过一些调整来修复它,但整体架构并不适合这种事情。相比之下,MVC 真是一种享受!

回答你的问题,将WebForms迁移到MVC实际上是不可能的,因为它们是完全不同的架构,当然架构是应用程序所在的架构,所以如果你改变它,你不妨重写它刮擦。

对您有很大帮助的是,如果您的应用程序分为多个层(业务、数据访问、UI)。如果情况并非如此,您可以首先执行此操作,将 UI 项目与其余项目正确分离。那么您只需必须重写 ASP.NET 项目,而不是其余的。


3
投票

我想与 StackOverflow 社区分享一些有用的资源,以防您在决定做什么时遇到困难:

  • 现有 Web 表单应用程序的现代化
  • 迁移到 MVC 或 Core
  • 或者是否在 Web Forms、MVC 和 Core 上启动一个新项目。

给你:


1
投票

我发现了以下链接

https://www.youtube.com/watch?v=CZuqMrWSano https://www.dotvvm.com/blog/59/Modernizing-ASP-NET-Web-Forms-applications-with-DotVVM

DotVVM 包帮助我们将 ASP.Net Web Forms 迁移到 ASP.NET Core,而无需完全重写。

我还没有尝试过任何生产应用程序。仍然尝试了一些示例页面。你可以试试这个。


0
投票

我同意,在许多情况下,重写广泛使用 WebForms 的 ASP.NET 应用程序可能不会提供任何商业价值。

因此,我们决定利用我们在 ASP NET WebForms 方面的经验,为 ASP NET Core / .NET 6.0 开发高度兼容的 WebForms 端口。 我们在自己的基于 ASP NET WebForms 的产品和项目以及可授权组件库中使用该解决方案。

所以 Forms 仍然可以使用,您可以专注于 .NET CORE/6 迁移。


0
投票

这里有一个 WebForms 到 .NET 8 的开源端口: github.com/simonegli8/WebFormsForCore.

使用此库,您可以直接在 .NET 8 中运行现有的 WebForms 项目。

这里有一个视频教程,介绍如何将示例 WebForms 站点转换为 .NET 8

© www.soinside.com 2019 - 2024. All rights reserved.