Confronto tra .NET e .NET Framework per le app server
Sono disponibili due implementazioni .NET supportate per la compilazione di app lato server: .NET e .NET Framework. La versione più recente di .NET (attualmente .NET 8) è la versione preferita di .NET da usare per lo sviluppo di server. I motivi per continuare a usare .NET Framework sono specifici e limitati.
Implementazione | Versioni incluse |
---|---|
.NET | .NET Core 1.0 - 3.1 .NET 5 e versioni successive |
.NET Framework | .NET Framework 1.0 - 4.8 |
Scegliere .NET
.NET offre i vantaggi seguenti per le app server:
Funziona multipiattaforma.
.NET consente l'esecuzione dell'app Web o del servizio su più piattaforme, ad esempio Windows, Linux e macOS. È anche possibile usare uno di questi sistemi operativi come workstation di sviluppo. Usare l'ambiente di sviluppo integrato (IDE) di Visual Studio in Windows oppure usare Visual Studio Code in macOS, Linux o Windows. Visual Studio Code supporta IntelliSense e il debug. La maggior parte degli editor di terze parti, ad esempio Sublime, Emacs e VI, è compatibile con .NET. Questi editor di terze parti accedono alla funzionalità IntelliSense dell'editor tramite Omnisharp. È anche possibile ignorare l'editor di codice e usare direttamente l'interfaccia della riga di comando di .NET.
Consente di specificare come destinazione i microservizi.
Un'architettura di microservizi consente di usare una combinazione di tecnologie in un limite di servizi. Grazie a questa tecnologia è possibile adottare gradualmente .NET per nuovi microservizi che operano con altri microservizi o servizi. Ad esempio, è possibile combinare microservizi o servizi sviluppati con .NET Framework, Java, Ruby o altre tecnologie monolitiche.
Le piattaforme di infrastruttura disponibili sono numerose. Azure Service Fabric è appositamente concepita per sistemi di microservizi complessi e di grandi dimensioni. Servizio app di Azure è la soluzione ideale per i microservizi senza stato. Le alternative ai microservizi basati su Docker soddisfano qualsiasi approccio ai microservizi, come illustrato nella sezione successiva (supporta i contenitori Docker). Grazie al supporto di .NET, tutte queste piattaforme rappresentano soluzioni ideali per l'hosting dei microservizi.
Per altre informazioni sull'architettura dei microservizi, vedere Microservizi .NET: Architettura per app .NET in contenitori.
Supporta i contenitori Docker.
I contenitori sono usati spesso insieme a un'architettura di microservizi, ma possano essere impiegati anche per creare contenitori di servizi o app Web basati su qualsiasi modello architettonico. Anche se .NET Framework può essere usato nei contenitori Windows, la modularità e la natura leggera di .NET lo rendono una scelta migliore per i contenitori. Quando si crea e si distribuisce un contenitore, la sua immagine risulta notevolmente più piccola con .NET che con .NET Framework. Trattandosi di un'opzione multipiattaforma, è possibile distribuire le app server in contenitori Docker di Linux.
È possibile ospitare contenitori Docker nella propria infrastruttura Linux o Windows o in un servizio cloud, ad esempio servizio Azure Kubernetes. Il servizio Azure Kubernetes consente infatti di gestire, orchestrare e ridimensionare applicazioni basate su contenitore nel cloud.
Prestazioni elevate e scalabilità.
Se il sistema richiede i massimi livelli di prestazioni e scalabilità, le scelte migliori sono .NET e ASP.NET Core. Grazie al runtime server ad alte prestazioni per Linux e Windows Server, ASP.NET Core viene considerato come un framework Web dalle prestazioni ottimali nei benchmark TechEmpower.
Le prestazioni e la scalabilità sono particolarmente importanti per le architetture con centinaia di microservizi in esecuzione. Con ASP.NET Core, i sistemi vengono eseguiti con un numero molto inferiore di server o macchine virtuali (VM), che consente di risparmiare sui costi relativi all'infrastruttura e all'hosting.
Supporta le versioni side-by-side di .NET per ogni applicazione.
L'implementazione di .NET supporta installazioni side-by-side di versioni diverse del runtime .NET nello stesso computer. Questa funzionalità consente più servizi nello stesso server, ognuno nella propria versione di .NET. riducendo inoltre i rischi e risparmiando sui costi degli aggiornamenti di applicazioni e delle operazioni IT.
L'installazione side-by-side non è possibile con .NET Framework. Si tratta di un componente windows e può esistere una sola versione in un computer alla volta: ogni versione di .NET Framework sostituisce la versione precedente. Se si installa una nuova app destinata a una versione successiva di .NET Framework, le app esistenti eseguite nel computer potrebbero non funzionare correttamente perché la versione precedente è stata sostituita.
È più sicuro.
Quando scegliere .NET Framework
Come accennato in precedenza, l'implementazione di .NET offre vantaggi significativi per le nuove applicazioni e i modelli di applicazione. In alcuni scenari specifici, tuttavia, potrebbe essere necessario usare .NET Framework per le app server e .NET Framework continuerà a essere supportato. Usare .NET Framework per l'app server quando:
L'app usa attualmente .NET Framework.
Nella maggior parte dei casi, non è necessario eseguire la migrazione delle applicazioni esistenti a .NET. È invece consigliabile usare .NET durante l'estensione di un'app esistente, ad esempio la scrittura di un nuovo servizio Web in ASP.NET Core.
L'app usa librerie di terze parti o pacchetti NuGet non disponibili per .NET.
.NET Standard consente la condivisione del codice tra tutte le implementazioni .NET, tra cui .NET 6+. Con .NET Standard 2.0, una modalità di compatibilità consente a progetti .NET Standard e .NET di gestire riferimenti a librerie .NET Framework. Per altre informazioni, vedere Supporto delle librerie .NET Framework.
È consigliabile usare .NET Framework solo quando le librerie o i pacchetti NuGet usano tecnologie non disponibili in .NET Standard o .NET.
L'app usa tecnologie .NET Framework non disponibili per .NET.
Alcune tecnologie .NET Framework non sono disponibili in .NET. Di seguito sono elencate le tecnologie più comuni non disponibili in .NET:
- Applicazioni Web Forms ASP.NET: Web Forms ASP.NET è disponibile solo in .NET Framework. Non è possibile usare ASP.NET Core per Web Forms ASP.NET.
- Applicazioni Pagine Web ASP.NET: Pagine Web ASP.NET non è incluso in ASP.NET Core.
- 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 noto come "ADO.NET Data Services") sono disponibili solo in .NET Framework.
- Supporto del linguaggio: Visual Basic e F# sono supportati in .NET, ma non per tutti i tipi di progetto. Per un elenco dei modelli di progetto supportati, vedere le opzioni del modello per dotnet new.
Per altre informazioni, vedere Tecnologie .NET Framework non disponibili in .NET.
L'app usa una piattaforma che non supporta .NET.
Alcune piattaforme Microsoft o di terze parti non supportano .NET. Alcuni servizi di Azure offrono un SDK non ancora disponibile per l'utilizzo in .NET. In questi casi è possibile usare l'API REST equivalente anziché l'SDK client.
Vedi anche
- Choose between ASP.NET and ASP.NET Core (Scegliere tra ASP.NET e ASP.NET Core)
- ASP.NET Core per .NET Framework
- Framework di destinazione
- Introduzione a .NET
- Conversione da .NET Framework a .NET 5
- Introduzione a .NET e Docker
- Implementazioni di .NET
- Microservizi .NET. architettura per un'applicazione .NET in contenitori