Condividi tramite


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 debito tecnico

Le applicazioni di produzione hanno spesso accumulato debiti tecnici nel corso degli 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 .NET moderno
  • Utilizzo dell'API deprecato che deve essere sostituito con alternative moderne
  • Avvisi del compilatore e problemi di qualità del codice che complicano la migrazione

Interessi 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
  • Dependency injection - Migrazione da vari contenitori DI al contenitore predefinito 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 - le librerie devono essere aggiornate secondo l'ordinamento di ricerca profondità-prima postordine.
  • 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 approfonditi per garantire la compatibilità

Differenze dell'architettura dell'applicazione

Le differenze fondamentali tra ASP.NET Framework e ASP.NET Core creano 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, in quanto 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

L'applicazione ASP.NET Framework può passare correttamente a ASP.NET Core. La chiave è la scelta dell'approccio appropriato per la situazione specifica.

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 ed è ideale 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, vedere Migrazione incrementale da ASP.NET a ASP.NET Core.

Migrazione in loco

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