簡體   English   中英

是否可以將 ASP.NET ASPX 解決方案遷移到 ASP.NET Core 2.0?

[英]Is it at all possible to migrate ASP.NET ASPX solution to ASP.NET Core 2.0?

我想將我的 asp.net(UI ASPX 頁面 WebForms)應用程序遷移到 ASP.NET Core 2。通過一些搜索,我發現 .net core 不支持 aspx。 如果這是真的(有人對此有確切的文檔嗎?)任何人應該如何從純 asp.net aspx 項目轉換為 asp.net core 2.0?

我使用了便攜式分析器工具,但只提供每個.dll 文件並獲得更令人困惑的報告是令人困惑的。

如果可能,請提供有效的 Microsoft 文檔。

這完全取決於您所說的“遷移”是什么意思。 正如對您的問題的評論中提到的,ASP.NET Core 不支持 Web 表單,因此沒有任何方法可以自動將 Web 表單網站轉換為 ASP.NET Core 網站。

也就是說,可以進行遷移。 我一直在努力為一個非常大的基於 Web 表單的網站做這件事,我想將其轉換為 ASP.NET Core。 如果您真的想踏上旅程,那么這里的一些信息可能會對您有所幫助。

ASP.NET Core 的總體架構是基於 MVC 的,因此它更類似於 ASP.NET MVC 而不是 ASP.NET Web Forms。 因此,您最終將使用某種 MVC 模式的派生物來重寫幾乎所有的 UI 代碼。 您將使用布局代替母版頁。 您將使用標簽助手代替服務器控件。 您將使用局部組件和視圖組件代替用戶控件。 您將使用控制器和視圖模型來代替代碼隱藏。 等等。

值得注意的是,仍然有一個 http 上下文對象、請求對象和響應對象,它們與 Web 表單中的類似對象非常相似。 這有助於轉換。

此外,為了簡化轉換過程,您可以構建一個以完整框架為目標的 ASP.NET Core Web 應用程序。 這意味着除了 System.Web 命名空間中的任何內容之外,您將可以訪問在完整框架中使用的大部分內容。 針對完整框架確實意味着您的新網站將僅在 Windows 上運行。 但是,如果您能忍受(至少現在),那么轉換過程對您來說會更容易。

如果在您的舊網站中,您將一堆功能分解到類庫中,那將使您的生活更輕松。 您應該能夠將這些類庫原封不動地帶到新網站,並從 ASP.NET Core 網站引用它們,如果它們不引用 System.Web,它們很可能會正常工作。 任何引用 System.Web 的代碼都需要修改以使用新的類似對象或 UI 方法。

所以最后,您可以輕松地使用您的數據模型、數據訪問代碼、業務對象和業務邏輯。 但是您將不得不完全重寫與 UI 相關的代碼。 這就是我正在進行的旅程,它並不像您想象的那么難,至少在您一開始就熟悉 ASP.NET Core 之后不會。 去拿他們!

我發現一篇文章聲稱它有可能以某種方式實現。 如您所知,立即將整個項目從 WebForm 遷移到 .Net Core 並不容易。 那么,如果我能夠讓我的 Web 表單頁面在生產環境中工作,同時開始逐漸一頁一頁地轉換頁面呢? 我的意思是在同一個項目中結合了兩種方法。

這是一個名為DotVVM的開源項目提出的想法。 您擁有 ASP.Net Web 表單頁面,並且僅通過 Nuget 安裝 DotVVM。 DotVVM 支持這兩種方法。 DotVVM 包含類似的控件,如 GridView、Repeater、FileUpload 等,但您需要了解 DotVVM 語法。

DotVVM 可以與其他 ASP.NET 框架(Web 窗體、MVC、Razor Pages)並行運行

它聲稱:

如果業務層分離得當,一頁重寫平均需要1小時左右。

幾個月后(如果你的項目很大),當所有的 ASPX 頁面都在 DotVVM 中重寫時,你將能夠創建一個新的 ASP.NET Core 項目,將所有 DotVVM 頁面和視圖模型移動到其中並與.NET 一起使用它們核。 DotVVM 的語法在兩個平台上是相同的。

在這里您可以看到遷移所需的五個步驟。

你可以轉移你所有的業務邏輯、模型甚至一些控制器方法(你只需要將那些 ActionResult 調整為 IActionResult)。 如果您正在使用 Ninject(用於 ASP.NET Framework IOS),您只需將它們注冊到您的 Startup.cs。 基本上,我想說的是,您需要在 .NET Core 下創建一個新應用程序。 會是實際項目方案的變化,但是你實際的業務流程不會有什么不同。 我希望這可以幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM