Le Azure Function sono un servizio della piattaforma Microsoft Azure che permettono di definire piccole funzioni nei più svariati linguaggi e di poter scalare all'infinito, adattandosi automaticamente alle esigenze.
Nel caso del mondo .NET se utilizziamo funzioni per il .NET Framework godiamo della possibilità di usare la classe statica ConfigurationManager, se invece usiamo .NET Core, non esiste nessun membro statico, ma siamo noi a dover sfruttare il sistema builtin nel modo più appropriato, poiché nel caso delle function, non esiste un unico entry point come siamo abituati nei normali applicativi. Nel nostro codice, quindi, è necessario simulare un comportamento di configurazione univoca, utilizzando manualmente il ConfigurationBuilder, come nell'esempio.
public static class ConfigurationUtility { private static readonly Lazy<IConfiguration> _configuration = new Lazy<IConfiguration>(BuildConfiguration); public static IConfiguration Configuration => _configuration.Value; private static IConfigurationRoot BuildConfiguration() { var configurationBuilder = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: true) .AddEnvironmentVariables(); return configurationBuilder.Build(); } }
La classe statica dispone di una proprietà in lazy loading che carica la configurazione al primo utilizzo di ConfigurationUtility.Configuration. Possiamo notare che viene aggiunto un provider basato su file json, qualora ne avessimo uno a disposizione, ma, cosa più importante, viene chiamato AddEnvironmentVariables per incorporare le variabili d'ambienti provenienti dal pannello di configurazione delle Azure Function.

Usando una sintassi basata sui due punti possiamo definire in modo flat anche sezioni e strutture ad albero. Nell'esempio la chiave Email:To può essere recuperata come segue.
IConfigurationSection section = ConfigurationUtility.Configuration.GetSection("email"); string to = section["to"];
Così facendo non c'è distinzione nell'approccio alla configurazione, indipendentemente dal linguaggio o dal framework che stiamo utilizzando.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Supportare la crittografia di ASP.NET Core con Azure Container App
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
.NET Aspire per applicazioni distribuite
Gestione file Javascript in Blazor con .NET 9
Utilizzare Intersect e Except per filtrare set di dati in TSql
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Potenziare la ricerca su Cosmos DB con Full Text Search
Creare agenti facilmente con Azure AI Agent Service
Migliorare l'organizzazione delle risorse con Azure Policy
Eliminare record doppi in Sql Server
Anonimizzare i dati sensibili nei log di Azure Front Door
I più letti di oggi
- Gestione ciclo di vita in .NET Aspire
- Sfruttare i nuovi overload di TimeSpan.From* per creare timespan usando numeri interi
- .NET Conference Italia 2024 - Milano
- Gestione CSS in Blazor con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!