Quando scegliere .NET Framework per i contenitori Docker

Suggerimento

Questo contenuto è un estratto dell'eBook "Microservizi .NET: Architettura per le applicazioni .NET incluse in contenitori", disponibile in .NET Docs o come PDF scaricabile gratuitamente e da poter leggere offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Sebbene .NET 8 offra vantaggi significativi per le nuove applicazioni e i nuovi modelli di applicazioni, .NET Framework continua a rappresentare la scelta naturale per molti scenari esistenti.

Migrazione delle applicazioni esistenti direttamente in un contenitore Windows Server

È possibile usare i contenitori Docker anche solo per semplificare la distribuzione, pur non creando microservizi. Ad esempio, se si vuole migliorare il flusso DevOps con Docker, i contenitori possono offrire ambienti di test con un isolamento migliore ed eliminare i problemi di distribuzione causati da dipendenze mancanti al momento dello spostamento in un ambiente di produzione. In questi casi, anche se si distribuisce un'applicazione monolitica, è consigliabile usare Docker e i contenitori Windows per le applicazioni .NET Framework correnti.

Nella maggior parte dei casi per questo scenario, non sarà necessario eseguire la migrazione delle applicazioni esistenti a .NET 8. È possibile usare contenitori Docker che includono .NET Framework tradizionale. Tuttavia, un approccio consigliato prevede di usare .NET 8 per estendere un'applicazione esistente, ad esempio con la scrittura di un nuovo servizio in ASP.NET Core.

Uso di pacchetti NuGet o di librerie .NET di terze parti non disponibili per .NET 8

Le librerie di terze parti stanno rapidamente adottando .NET Standard, che consente la condivisione di codice tra tutte le versioni di .NET incluso .NET 8. Con .NET Standard 2.0 e versioni successive, la compatibilità della superficie dell'API tra framework diversi è aumentata in modo significativo. In più, .NET Core 2.x e le applicazioni più recenti possono anche fare riferimento direttamente alle librerie .NET Framework esistenti (vedere .NET Framework 4.6.1 supporta .NET Standard 2.0).

Inoltre, Windows Compatibility Pack estende la superficie dell'API disponibile per .NET Standard 2.0 in Windows. Questo pacchetto consente di ricompilare la maggior parte del codice esistente per .NET Standard 2.x con modifiche minime o nulle, da eseguire in Windows.

Tuttavia, nonostante questi eccezionali progressi rispetto a .NET Standard 2.0 e .NET Core 2.1, in determinati casi per eseguire alcuni pacchetti NuGet può essere necessario usare Windows perché questi non supportano .NET Core o versioni successive. Se questi pacchetti sono vitali per l'applicazione, sarà necessario usare .NET Framework in contenitori Windows.

Us di tecnologie .NET non disponibili per .NET 8

Alcune tecnologie .NET Framework non sono disponibili in .NET 8. Alcune potrebbero diventarlo in versioni future, mentre altre non sono adatte ai nuovi modelli di applicazione basati su .NET Core ed è possibile che non vengano mai rese disponibili.

L'elenco seguente illustra la maggior parte delle tecnologie non disponibili in .NET 8:

  • Web Form ASP.NET. Questa tecnologia è disponibile solo in .NET Framework. Attualmente non è previsto il trasferimento di Web Form ASP.NET in .NET o versioni successive.

  • Servizi correlati ai flussi di lavoro. Windows Workflow Foundation (WF), Servizi flusso di lavoro (WCF e WF in un unico servizio) e WCF Data Services (in precedenza "ADO.NET Data Services") sono disponibili solo in .NET Framework. Al momento non è prevista l'introduzione in .NET 8.

Oltre alle tecnologie elencate nella roadmap per .NET ufficiale, è possibile che nella nuova piattaforma .NET unificata vengano rese disponibili altre funzionalità. Se si vuole esprimere la propria opinione in merito, è possibile partecipare alle discussioni su GitHub. Analogamente, se si ritiene che manchi qualcosa, inserire un nuovo problema nel repository GitHub dotnet/runtime.

Uso di una piattaforma o di un'API che non supporta .NET 8

Alcune piattaforme Microsoft e di terze parti non supportano .NET 8. Ad esempio, alcuni servizi di Azure forniscono un SDK non ancora disponibile per l'utilizzo in .NET 8. La maggior parte degli SDK di Azure sarà infine convertita per l'utilizzo in .NET 8/.NET Standard, ma per alcuni potrebbe non essere possibile, per diversi motivi. È possibile visualizzare gli SDK di Azure disponibili nella pagina delle ultime versioni di Azure SDK.

Nel frattempo, se una piattaforma o un servizio in Azure ancora non supporta .NET 8 tramite l'API client, è possibile usare l'API REST equivalente del servizio di Azure o l'SDK client in .NET Framework.

Conversione di applicazioni ASP.NET esistenti in .NET 8

.NET Core rappresenta un passo avanti rivoluzionario rispetto a .NET Framework. Offre numerosi vantaggi rispetto a .NET Framework sotto ogni punto di vista, dalla produttività alle prestazioni, passando dal supporto multipiattaforma alla soddisfazione degli sviluppatori.

Risorse aggiuntive