Pubblicare app .NET
La codifica di un'app con ASP.NET Core è diversa dalla progettazione di un sito Web statico con HTML, CSS e JavaScript. Un sito Web statico può essere distribuito in qualsiasi server Web che supporta file statici. Il server Web non deve elaborare i file statici; serve semplicemente tramite HTTP. Quando un Web browser richiede una risorsa, il server Web invia semplicemente il file al browser.
Un'app ASP.NET Core, d'altra parte, è un'applicazione Web dinamica. Viene eseguito come programma nel server Web. Quando il Web browser dell'utente invia una richiesta al server Web, il server Web esegue l'app per generare una risposta e quindi il server Web invia la risposta al browser.
La pubblicazione di un'app .NET è il processo di preparazione dell'app per la distribuzione in un server. Quando si pubblica un'app .NET, si inseriscono in pacchetto l'app e le relative dipendenze in una cartella che può essere distribuita facilmente. L'app pubblicata non include file di codice sorgente, ma include tutti i file necessari per eseguire l'app, inclusi gli assembly compilati (DLL), i file di configurazione e qualsiasi altro asset necessario per l'app. L'app può quindi essere distribuita in un server Web, in un servizio cloud o in un altro ambiente di hosting.
Tipi di distribuzioni
Quando si pubblica un'app .NET, è possibile scegliere tra due diversi tipi di distribuzioni: dipendenti dal framework e indipendenti. Il tipo di distribuzione scelto influisce sulla modalità di creazione di pacchetti e distribuzione dell'app.
Distribuzione dipendente dal framework
Una distribuzione dipendente dal framework include solo i file e le dipendenze dell'app. Non include il runtime .NET. Al contrario, il computer di destinazione deve avere installato il runtime .NET per eseguire l'app. Questo tipo di distribuzione è l'impostazione predefinita per le app .NET.
Distribuzione autonoma
Una distribuzione autonoma include i file, le dipendenze e il runtime .NET dell'app. Il runtime .NET è incluso nell'app, quindi il computer di destinazione non deve avere installato il runtime .NET per eseguire l'app. L'inclusione del runtime rende più grandi le distribuzioni autonome rispetto alle distribuzioni dipendenti dal framework, ma le rende anche più portabili. Semplifica anche l'esecuzione affiancata di più versioni del runtime .NET nello stesso computer.
Scelta di un tipo di distribuzione
Il tipo di distribuzione scelto dipende dai requisiti dell'app e dall'ambiente di destinazione. Quando si sceglie un tipo di distribuzione, tenere presenti i fattori seguenti:
Tipo di distribuzione
Vantaggi
Svantaggi
Dipendente dal framework
- Dimensioni di distribuzione inferiori
- Tempi di distribuzione più rapidi
- Usa il runtime .NET installato nel computer di destinazione, indipendentemente dal sistema operativo
- Richiede l'installazione del runtime .NET nel computer di destinazione
- Richiede la gestione delle versioni di runtime .NET installate nel computer di destinazione
Indipendente
- Non è necessario installare il runtime .NET nel computer di destinazione
- Più facile eseguire più versioni di .NET affiancate
- Dimensioni maggiori della distribuzione
- Tempi di distribuzione più lenti
- Gli aggiornamenti del runtime .NET devono essere distribuiti con l'app
Dove distribuire l'app
Dopo aver pubblicato l'app, è possibile distribuirla in qualsiasi ambiente che supporti ASP.NET Core. Ecco alcune opzioni:
Kestrel
Per impostazione predefinita, le app core ASP.NET vengono eseguite nel server Web predefinito di ASP.NET Core, Kestrel. Kestrel è multipiattaforma e ottimizzato per prestazioni elevate. Supporta tutte le funzionalità moderne del server Web, tra cui HTTPS, HTTP/2, HTTP/3 e WebSocket. È anche personalizzabile ed estendibile, in modo da poterla configurare per soddisfare le esigenze dell'app. Kestrel è il server Web consigliato per ASP.NET app Core.
Poiché Kestrel è integrato in ASP.NET Core, è possibile distribuire l'app in qualsiasi computer in grado di eseguire .NET, tra cui Windows, macOS e Linux. Kestrel funziona bene da solo, ma le app in esecuzione in Kestrel vengono spesso distribuite dietro un server proxy inverso, ad esempio Internet Information Services (IIS), Nginx o Apache. Il server proxy inverso gestisce le richieste in ingresso da Internet e le inoltra a Kestrel. In questo modo è possibile sfruttare le funzionalità del server proxy inverso, ad esempio bilanciamento del carico, memorizzazione nella cache e terminazione SSL.
Internet Information Services (IIS)
Se si esegue la distribuzione in Windows, è possibile ospitare l'app ASP.NET Core in IIS. A tale scopo, è necessario installare il modulo ASP.NET Core per IIS. Il modulo inoltra le richieste da IIS a Kestrel, che esegue l'app. In questo modo è possibile sfruttare le funzionalità di IIS, ad esempio la gestione dei processi, la registrazione e la sicurezza.
Contenitori
Se si esegue la distribuzione in un ambiente in contenitori, è possibile creare un pacchetto dell'app ASP.NET Core come contenitore Docker. In questo modo è possibile eseguire l'app in qualsiasi runtime di contenitori che supporta Docker, ad esempio Docker Desktop, Docker Enterprise o Kubernetes. I contenitori sono portabili e scalabili, quindi è possibile eseguire l'app in qualsiasi computer che supporta Docker, indipendentemente dal sistema operativo sottostante.
Azure
Se si esegue la distribuzione in Azure, è possibile ospitare l'app ASP.NET Core nel servizio app di Azure o in App Azure Container. Vari strumenti semplificano la distribuzione dell'app in Azure dalla riga di comando. Questi strumenti includono:
- Estensione Strumenti di Azure per Visual Studio Code
- Visual Studio
- Interfaccia della riga di comando di Azure
- Interfaccia della riga di comando per sviluppatori di Azure (azd)