I cloud service sono istanze di macchine virtuali che vengono automaticamente create e configurate tramite i pacchetti di deployment, i quali possono contenere uno o più pacchetti di worker e web role. Quest'ultimi sono applicazioni web che vengono esposte tramite IIS, attraverso uno o più application pool. Sebbene possiamo abilitare l'accesso remoto e personalizzare le macchine virtuali, questa pratica è sconsigliabile, poiché uno dei vantaggi dei cloud service è data dalla possibilità di poter essere ricreati, rideployati o scalati su una o più macchine fisiche. Questo significa che ogni modifica apportata manualmente verrebbe facilmente persa.
Qualora vogliamo quindi intervenire e personalizzare alcuni aspetti del deployment, è importante automatizzarli e inserirli nel pacchetto di deployment. Per farlo possiamo utilizzare gli startup task oppure eseguire del codice all'interno della classe WebRole, creata automaticamente dal template di Visual Studio. Nello specifico, nel metodo OnStart, prima di chiamare il metodo base, possiamo utilizzare le API messe a disposizione dall'assembly Microsoft.Web.Administration (presente in C:\Windows\System32\inetsrv) per accedere e manipolare i web site e l'application pool della macchina virtuale. Nello snippet seguente, per esempio, utilizziamo la classe ServerManager per accedere alla lista degli application pool e manipoliamo quello specifico della nostra web application, per cambiare l'utente con cui eseguire il processo.
public class WebRole : RoleEntryPoint { public override bool OnStart() { using (ServerManager serverManager = new ServerManager()) { // Gli application pool di nome .NET... sono quelli predefiniti var appPool = serverManager.ApplicationPools.First(a => !a.Name.Contains(".NET")); // Cambio l'utente del processo appPool.ProcessModel.IdentityType = ProcessModelIdentityType.LocalSystem; // Persisto i cambiamenti fatti serverManager.CommitChanges(); } return base.OnStart(); } }
In questo modo automatizziamo il processo di personalizzazione, che verrà eseguito ogni volta che la macchina virtuale parte o nel caso scaliamo o ridimensioniamo la macchina virtuale.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare la libreria Benchmark.NET per misurare le performance
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Miglioramenti nell'accessibilità con Angular CDK
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare database e servizi con gli add-on di Container App
Verificare la provenienza di un commit tramite le GitHub Actions
Utilizzare il trigger SQL con le Azure Function
Implementare l'infinite scroll con QuickGrid in Blazor Server
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
.NET Conference Italia 2023
Utilizzare Tailwind CSS all'interno di React: primi componenti
Short-circuiting della Pipeline in ASP.NET Core
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- Definire stili a livello di libreria in Angular
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)