Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Important
Prima di iniziare: questo articolo presuppone di aver letto la panoramica della migrazione di ASP.NET Core. Se non l'hai ancora letto, per favore inizia da lì per comprendere i concetti, l'approccio e i vantaggi della migrazione incrementale.
Per una migrazione di grandi dimensioni, è consigliabile configurare un'app ASP.NET Core che esegue il proxy all'app .NET Framework originale. La nuova app abilitata per il proxy è illustrata nell'immagine seguente:
Questo articolo illustra i passaggi pratici per procedere con una migrazione incrementale dopo aver compreso l'approccio.
Prerequisites
Prima di avviare la migrazione incrementale, assicurarsi di disporre di:
- Leggere la panoramica: migrazione incrementale da ASP.NET ad ASP.NET Core
- Applicazione ASP.NET Framework funzionante di cui si vuole eseguire la migrazione
- Visual Studio 2022 con gli aggiornamenti più recenti
- .NET 8 o versione successiva dell'SDK installato
- Informazioni sulle dipendenze dell'applicazione e sulle librerie di terze parti
Panoramica dei passaggi di migrazione
Il processo di migrazione incrementale segue questi passaggi chiave:
- Configurare ASP.NET progetto principale
- Correggere il debito tecnico
- Identificare e affrontare le questioni trasversali
- Aggiornare le librerie di supporto
Configurare progetto ASP.NET Core
Il primo passaggio consiste nel creare la nuova applicazione ASP.NET Core che fungerà da proxy.
Operazioni da eseguire:
- Creare un nuovo progetto ASP.NET Core insieme alla tua app ASP.NET Framework esistente.
- Configurarlo per le richieste proxy all'applicazione originale usando YARP (Yet Another Reverse Proxy)
- Configurare l'infrastruttura di base per la migrazione incrementale
Detailed instructions:
- Vedere Configurazione remota dell'app per informazioni su come configurare un'applicazione per la migrazione incrementale.
- Per informazioni su come eseguire l'aggiornamento da ASP.NET MVC, API Web e Web Form a ASP.NET Core , vedere Informazioni su come configurare i progetti necessari per la migrazione incrementale usando gli strumenti di Visual Studio.
Correggere il debito tecnico
Quando eseguire questo passaggio: Prima di aggiornare le librerie di supporto, risolvere il debito tecnico che potrebbe complicare il processo di migrazione.
Prima di iniziare ad aggiornare le librerie di supporto, è importante pulire il debito tecnico che potrebbe interferire con il processo di migrazione. Questo passaggio deve essere completato per prima cosa per garantire un'esperienza di aggiornamento più fluida.
Aggiornare le dipendenze dei pacchetti
Esaminare e aggiornare i pacchetti NuGet alle versioni compatibili più recenti:
-
Controlla i pacchetti esistenti: usare Gestione pacchetti NuGet di Visual Studio perché l'interfaccia della
dotnetriga di comando non funziona per le applicazioni di ASP.NET Framework - Aggiornare i pacchetti in modo incrementale: aggiornare i pacchetti uno alla volta per evitare problemi di compatibilità
- Testare dopo ogni aggiornamento: assicurarsi che l'applicazione funzioni ancora correttamente dopo ogni aggiornamento del pacchetto
- Affrontare modifiche dirompenti: alcuni aggiornamenti del pacchetto possono introdurre modifiche critiche che devono essere affrontate
Modernizzare gli strumenti di compilazione
Aggiornare gli strumenti di compilazione e la configurazione del progetto:
- Strumenti di aggiornamento: assicurarsi di usare una versione recente di MSBuild/Visual Studio
-
Eseguire la migrazione a PackageReference per le dipendenze: Prendere in considerazione la migrazione dal formato
packages.configal formatoPackageReference, se non è stata già eseguita nel progetto di applicazione Web. - Pulire i riferimenti inutilizzati: rimuovere eventuali riferimenti ad assembly inutilizzati o pacchetti NuGet
- Eseguire la migrazione ai file di progetto in stile SDK: convertire i file di progetto esistenti nel formato moderno in stile SDK. Questo è essenziale per la compatibilità con i progetti .NET moderni e offre un supporto migliore per gli strumenti
- Aggiornare gli script di compilazione: esaminare e aggiornare eventuali script di compilazione personalizzati o configurazioni CI/CD
Risolvere i problemi di qualità del codice
Risolvere i problemi noti relativi alla qualità del codice che potrebbero complicare la migrazione:
- Correzione degli avvisi del compilatore: risolvere eventuali avvisi del compilatore, in particolare quelli correlati alle API deprecate
- Rimuovere il codice morto: eliminare classi, metodi e altri elementi di codice inutilizzati
- Aggiornare l'utilizzo deprecato dell'API: sostituire l'utilizzo delle API deprecate con gli equivalenti moderni, se possibile
Questo lavoro di preparazione renderà il processo di aggiornamento della libreria molto più semplice e ridurrà la probabilità di riscontrare problemi complessi durante la migrazione.
Identificare e affrontare le preoccupazioni trasversali
Quando eseguire questo passaggio: Durante la correzione del debito tecnico, ma prima di aggiornare le librerie di supporto, identificare e configurare problemi trasversali che interessano l'intera applicazione.
Le problematiche trasversali sono aspetti dell'applicazione che si estendono su più livelli o componenti, ad esempio l'autenticazione, la gestione delle sessioni, la registrazione e la memorizzazione nella cache. Questi devono essere risolti all'inizio del processo di migrazione perché influiscono sul modo in cui le applicazioni ASP.NET Framework e ASP.NET Core comunicano e condividono lo stato durante la migrazione incrementale.
Le sezioni seguenti coprono le problematiche trasversali più comuni. Configurare solo quelli applicabili all'applicazione:
Configurazione del supporto della sessione
Configurare questa opzione se: L'applicazione ASP.NET Framework usa lo stato della sessione.
Per indicazioni, vedere la documentazione generale sulla migrazione delle sessioni.
La sessione è una funzionalità comune di ASP.NET che condivide il nome con una funzionalità in ASP.NET Core, ma le API sono molto diverse. Quando si aggiornano le librerie che usano lo stato della sessione, è necessario configurare il supporto per le sessioni. Per indicazioni dettagliate su come abilitare la condivisione dello stato della sessione tra le applicazioni, vedere la documentazione sul supporto delle sessioni remote .
Authentication Configuration
Configurare questa opzione se: L'applicazione ASP.NET Framework usa l'autenticazione e si vuole condividere lo stato di autenticazione tra le applicazioni precedenti e nuove.
Consultare la documentazione generale sulla migrazione dell'autenticazione per ulteriori indicazioni.
È possibile condividere l'autenticazione tra l'app ASP.NET originale e la nuova app ASP.NET Core usando la funzionalità di autenticazione remota system.Web adapters. Questa funzionalità consente all'app ASP.NET Core di rinviare l'autenticazione all'app ASP.NET originale. Per altri dettagli, vedere la documentazione sull'autenticazione remota .
Altre preoccupazioni trasversali da considerare
A seconda dell'applicazione, potrebbe anche essere necessario risolvere quanto segue:
- Registrazione: garantire la registrazione coerente in entrambe le applicazioni. È consigliabile usare un provider di registrazione condiviso o assicurarsi che i log vengano aggregati correttamente.
- Cache: se la tua applicazione usa il caching (cache in memoria, distribuita o di output), pianifica come mantenere la coerenza della cache tra le applicazioni.
- Gestione degli errori: stabilire una gestione e una segnalazione coerenti degli errori in entrambe le applicazioni ASP.NET Framework e ASP.NET Core.
- Gestione della configurazione: pianificare la modalità di condivisione o gestione delle impostazioni di configurazione tra le due applicazioni.
- Monitoraggio dell'integrità: configurare il monitoraggio e i controlli di integrità per entrambe le applicazioni durante il processo di migrazione.
- Iniezione delle dipendenze: se si utilizza un contenitore di iniezione delle dipendenze nell'app ASP.NET Framework, pianificare la migrazione al contenitore di iniezione delle dipendenze integrato di ASP.NET Core.
Aggiornare le librerie di supporto
Quando eseguire questo passaggio: Solo quando è necessario eseguire la migrazione di route specifiche che dipendono dalle librerie di classi contenenti la logica di business, è necessario condividere tra le applicazioni precedenti e nuove.
Note
Approccio incrementale: con il processo di migrazione incrementale non è necessario aggiornare tutte le librerie di supporto contemporaneamente. È sufficiente aggiornare le librerie necessarie per le route specifiche di cui si sta eseguendo la migrazione. In questo modo è possibile affrontare la migrazione in parti più piccole e gestibili.
Processo di aggiornamento della libreria
Important
Le librerie di supporto devono essere aggiornate in un ordine di ricerca in profondità postorder. This means:
- Inizia con le dipendenze di foglia: Parti dalle librerie che non hanno dipendenze da altre librerie nella soluzione
- Passare verso l'alto nell'albero delle dipendenze: aggiornare una libreria solo dopo che tutte le relative dipendenze sono state aggiornate correttamente
- Terminare con l'applicazione principale: l'applicazione principale ASP.NET Framework deve essere l'ultimo elemento da modificare
Questo ordinamento è essenziale perché:
- Garantisce che quando si aggiorna una libreria, tutte le relative dipendenze sono già compatibili
- Impedisce problemi di dipendenza circolare durante il processo di aggiornamento
- Consente di testare ogni libreria in modo indipendente prima di passare ai relativi dipendenti
NOTA: è sufficiente seguire questo ordinamento per il subset di librerie richieste dalle route di cui si sta eseguendo la migrazione, non per l'intera soluzione.
Processo di aggiornamento per ogni libreria:
Se nella soluzione sono disponibili librerie di supporto che è necessario usare per le route di cui si esegue la migrazione, è consigliabile eseguirne l'aggiornamento a .NET Standard 2.0, se possibile. Assistente aggiornamento è un ottimo strumento per questo. Se le librerie non sono in grado di specificare come destinazione .NET Standard, è possibile specificare come destinazione .NET 8 o versione successiva insieme alla destinazione .NET Framework nel progetto originale o in un nuovo progetto insieme all'originale.
Gli adattatori System.Web possono essere usati in queste librerie per abilitare il supporto per HttpContext l'utilizzo nelle librerie di classi. Per abilitare HttpContext l'utilizzo in una libreria:
- Rimuovere il riferimento a
System.Webnel file di progetto - Aggiungere il
Microsoft.AspNetCore.SystemWebAdapterspacchetto - Abilitare multitargeting e aggiungere una destinazione .NET 8 o versione successiva oppure convertire il progetto in .NET Standard 2.0.
Questo passaggio potrebbe richiedere la modifica di diversi progetti a seconda della struttura della soluzione e delle route di cui si esegue la migrazione. Assistente aggiornamento può aiutarti a identificare quali elementi devono essere modificati e automatizzare diversi passaggi del processo.
Next Steps
Dopo aver completato i passaggi di installazione e aggiornamento della libreria precedenti:
- Iniziare da piccolo: iniziare eseguendo prima la migrazione di endpoint semplici senza stato
- Testare accuratamente: assicurarsi che ogni componente migrato funzioni correttamente in entrambi gli ambienti
- Monitorare le prestazioni: controllare eventuali effetti sulle prestazioni derivanti dalla configurazione del proxy
- Iterazione: continuare la migrazione dei componenti in modo incrementale fino al completamento della migrazione