Con la llegada de .NET MAUI y .net6 se abre un mundo de posibilidades. Vamos a explorar una las funciones más interesantes, el uso del Host para configuraciones.
El uso de un Host es común en proyectos ASPNET. Nos permite de forma sencilla y unificada configurar diferentes aspectos de nuestra aplicación. Si vienes del mundo web, seguro que te suena y sabes todas las posibilidades que el Host aporta, pero en .NET MAUI es un concepto nuevo y puede que no sepas sacarle todo el partido.
Vamos a ir viendo cómo podemos usar el Host para realizar ciertas configuraciones básicas en cualquier aplicación que estemos desarrollando.
Tener ficheros de configuración
En la primera parte de este artículo, exploramos cómo utilizar Serilog para gestionar los registros en una aplicación .NET MAUI. Ahora, vamos a sumergirnos en la importancia de tener ficheros de configuración para centralizar la configuración de nuestra aplicación.
La necesidad de la configuración centralizada
En cualquier aplicación, es crucial mantener la configuración en un lugar centralizado. Esto nos permite cambiar valores como las conexiones a bases de datos, las claves API u otras configuraciones sin tener que buscar y modificar el código fuente. En proyectos ASP.NET, estamos acostumbrados a utilizar el archivo appsettings.json para este propósito. Afortunadamente, podemos llevar el mismo enfoque al mundo de .NET MAUI.
Configurando el fichero de configuración
Primero, vamos a añadir un nuevo archivo a nuestro proyecto llamado appsettings.json. En este archivo, podemos definir una serie de valores clave-valor que representan la configuración de nuestra aplicación. Por ejemplo:
{
"AppSettings":
{
"ApiBaseUrl": "https://api.example.com",
"ApiKey": "your-api-key"
}
}
Para acceder a estos valores desde nuestra aplicación, necesitamos configurar la inyección de dependencias para que pueda proporcionarnos estos valores.
Registrando la configuración en el Host
Volviendo a nuestra clase MauiProgram, podemos extenderla aún más para incluir la configuración del archivo appsettings.json:
private static MauiAppBuilder ConfigureAppConfiguration(this MauiAppBuilder appBuilder)
{
var a = Assembly.GetExecutingAssembly();
using var stream = a.GetManifestResourceStream("FreyaMobile.app.settings.json")
?? throw new ArgumentNullException($"Stream can not be null on {nameof(ConfigureAppConfiguration)}");
var config = new ConfigurationBuilder()
.AddJsonStream(stream)
.Build();
appBuilder.Configuration.AddConfiguration(config);
return appBuilder;
}
En este fragmento, estamos creando una instancia de ConfigurationBuilder y agregando el archivo appsettings.json a la configuración. Luego, lo añadimos al Host para que pueda ser inyectado en nuestra aplicación.
Luego lo añadimos al logger del MauiAppBuilder para que lo registre en el inyector de dependencias y tenerlo disponible en nuestra app.
Ahora usamos el método (ConfigureAppConfiguration) anterior en el método CreateMauiApp():
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureAppConfiguration()
.ConfigureFonts(fonts =>{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");});
return builder.Build();
}
Utilizando la configuración
Ahora que hemos configurado la inyección de dependencias para nuestra configuración, podemos utilizarla en cualquier parte de nuestra aplicación:
public class ApiService
{
private readonly IConfiguration _configuration;
public ApiService(IConfiguration configuration)
{
_configuration = configuration;
}
public string GetApiBaseUrl()
{
return _configuration.GetRequiredSection("AppSettings:ApiBaseUrl").Value;
}
public string GetApiKey()
{
return _configuration.GetRequiredSection("AppSettings:ApiKey").Value;
}
}
En este ejemplo, estamos inyectando la configuración en un servicio llamado ApiService, y luego podemos acceder a los valores específicos que necesitamos.
Conclusión
En esta segunda parte, hemos explorado la importancia de tener ficheros de configuración en una aplicación .NET MAUI y cómo integrarlos utilizando el ConfigurationBuilder. Esto nos permite centralizar la configuración de la aplicación y facilita la modificación de valores sin tener que modificar el código fuente.
En la tercera parte de esta serie, continuaremos explorando más posibilidades y funciones que el MauiAppBuilder nos proporciona para simplificar el desarrollo en .NET MAUI.
Comments