Eseguire la migrazione da ASP.NET Framework a ASP.NET Core

L'aggiornamento di un'app da ASP.NET Framework a ASP.NET Core non è semplice per la maggior parte delle app di produzione. Queste app spesso incorporano nuove tecnologie man mano che diventano disponibili e sono spesso composte da molte decisioni legacy. Questa guida fornisce approcci pratici e strumenti per aggiornare le app di ASP.NET Framework per ASP.NET Core con il minor cambiamento possibile.

Perché la migrazione è complessa

La migrazione da ASP.NET Framework a ASP.NET Core comporta diverse sfide complesse che rendono difficile e rischiosa la riscrittura completa per la maggior parte delle applicazioni di produzione:

Accumulo di debiti tecnici

Le applicazioni di produzione spesso accumulano debiti tecnici in anni di sviluppo:

  • Dipendenze System.Web - Uso diffuso di e tipi associati in una base di codice.
  • Dipendenze obsolete dei pacchetti che potrebbero non avere equivalenti compatibili moderni.
  • Strumenti di compilazione legacy e configurazioni di progetto non compatibili con i .NET moderni.
  • Uso deprecato dell'API che deve essere sostituito con alternative moderne.
  • Avvisi del compilatore e problemi di qualità del codice che complicano la migrazione.

Aspetti trasversali

Molte applicazioni presentano problematiche trasversali che si estendono su più livelli e richiedono un'attenta coordinamento durante la migrazione:

  • Gestione dello stato della sessione: ASP.NET Framework e ASP.NET Core hanno api e comportamenti di sessione fondamentalmente diversi.
  • Autenticazione e autorizzazione : modelli di autenticazione e API diversi tra framework.
  • Registrazione e monitoraggio : è necessario mantenere la registrazione coerente in entrambe le applicazioni durante la migrazione.
  • Strategie di memorizzazione nella cache : la memorizzazione nella cache in memoria, distribuita o output deve essere mantenuta in modo coerente.
  • Gestione degli errori: definizione di modelli di gestione degli errori coerenti in entrambe le applicazioni.
  • Gestione della configurazione : gestione delle impostazioni che devono essere condivise o sincronizzate tra le applicazioni.
  • Iniezione di dipendenze - Migrazione da vari contenitori DI al contenitore integrato di ASP.NET Core.

Il modello host generico può aiutare a risolvere diversi di questi problemi portando l'infrastruttura .NET moderna alle applicazioni ASP.NET Framework. Per informazioni dettagliate, vedere Host generico .NET in ASP.NET Framework.

Catene di dipendenze della libreria

Le librerie di supporto spesso hanno relazioni di dipendenza complesse che richiedono un ordinamento accurato dell'aggiornamento:

  • Complessità dell'albero delle dipendenze: è necessario aggiornare le librerie secondo un ordinamento postorder della ricerca in profondità.
  • Requisiti di multi-targeting: le librerie devono supportare tutte le versioni del framework previste dall'app.
  • Compatibilità delle API : garantire che le librerie funzionino con entrambe le versioni del framework durante il periodo di migrazione.
  • Test della complessità : ogni aggiornamento della libreria richiede test completi per garantire la compatibilità.

Differenze di architettura delle applicazioni

Le differenze fondamentali tra ASP.NET Framework e ASP.NET Core creare sfide aggiuntive:

  • Modelli di hosting : approcci diversi all'hosting e alla gestione del ciclo di vita delle applicazioni
  • Pipeline di middleware - Passaggio da moduli HTTP e gestori al middleware
  • Elaborazione delle richieste - Modelli e contesti di elaborazione di richieste diversi
  • Caratteristiche delle prestazioni - Modelli di utilizzo della memoria e profili di prestazioni diversi

Queste sfide rendono la migrazione incrementale l'approccio preferito per la maggior parte delle applicazioni di produzione. Questo approccio consente ai team di risolvere questi problemi gradualmente mantenendo un'applicazione funzionante nell'ambiente di produzione.

Per la documentazione sulle aree importanti che sono state modificate, vedere gli argomenti associati disponibili in Scenari di migrazione complessi - Aree di approfondimento.

Iniziare da qui: Scegliere il percorso di migrazione

È possibile spostare correttamente l'applicazione ASP.NET Framework in ASP.NET Core. La chiave è la scelta dell'approccio appropriato per la situazione specifica.

Tip

Indipendentemente dal percorso scelto, l'agente di modernizzazione di GitHub app Copilot può valutare la soluzione, generare un piano di aggiornamento e automatizzare molti dei passaggi di migrazione. Per altre informazioni, vedere Informazioni su come eseguire l'aggiornamento da ASP.NET MVC, API Web e Web Form a ASP.NET Core.

Guida rapida alle decisioni

Rispondere a queste domande per scegliere l'approccio:

  1. Qual è la sequenza temporale e la tolleranza ai rischi?

  2. Quanto è grande l'applicazione?

  3. Si hanno dipendenze complesse?

Migrazione incrementale

La migrazione incrementale è un'implementazione del modello Strangler Fig. È consigliabile per progetti o progetti di grandi dimensioni che devono continuare a rimanere in produzione durante una migrazione. Per iniziare a eseguire la migrazione incrementale di un'applicazione, vedi Introduzione alla migrazione incrementale da ASP.NET ad ASP.NET Core.

Migrazione in loco

La migrazione sul posto può funzionare per applicazioni sufficientemente piccole. Se possibile, questo approccio consente una rapida sostituzione dell'applicazione. Tuttavia, piccoli problemi possono accumularsi se si decide di eseguire una migrazione sullo stesso sistema. Per informazioni sulle opzioni degli strumenti di migrazione, vedere Informazioni su come eseguire l'aggiornamento da ASP.NET MVC, API Web e Web Form a ASP.NET Core.