Proveedores de Servicios
Esta página fue traducida automáticamente del inglés. Leer el original
Los Proveedores de Servicios son una forma de portar su aplicación Sisk a diferentes entornos con un archivo de configuración portátil. Esta característica permite cambiar el puerto del servidor, parámetros y otras opciones sin tener que modificar el código de la aplicación para cada entorno. Este módulo depende de la sintaxis de construcción de Sisk y se puede configurar a través del método UsePortableConfiguration.
Un proveedor de configuración se implementa con IConfigurationProvider, que proporciona un lector de configuración y puede recibir cualquier implementación. Por defecto, Sisk proporciona un lector de configuración JSON, pero también hay un paquete para archivos INI. También puede crear su propio proveedor de configuración y registrararlo con:
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigReader<MyConfigurationReader>();
})
.Build();Como se mencionó anteriormente, el proveedor predeterminado es un archivo JSON. Por defecto, el nombre del archivo que se busca es service-config.json, y se busca en el directorio actual del proceso en ejecución, no en el directorio del ejecutable.
Puede elegir cambiar el nombre del archivo, así como dónde Sisk debe buscar el archivo de configuración, con:
using Sisk.Core.Http;
using Sisk.Core.Http.Hosting;
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigFile("config.toml",
createIfDontExists: true,
lookupDirectories:
ConfigurationFileLookupDirectory.CurrentDirectory |
ConfigurationFileLookupDirectory.AppDirectory);
})
.Build();El código anterior buscará el archivo config.toml en el directorio actual del proceso en ejecución. Si no se encuentra, luego buscará en el directorio donde se encuentra el ejecutable. Si el archivo no existe, el parámetro createIfDontExists se honra, creando el archivo, sin contenido, en la última ruta probada (basada en lookupDirectories), y se lanza un error en la consola, impidiendo que la aplicación se inicialice.
Consejo
Puede ver el código fuente del lector de configuración INI y el lector de configuración JSON para entender cómo se implementa un IConfigurationProvider.
Lectura de configuraciones desde un archivo JSON #
Por defecto, Sisk proporciona un proveedor de configuración que lee configuraciones desde un archivo JSON. Este archivo sigue una estructura fija y está compuesto por los siguientes parámetros:
{
"Server": {
"DefaultEncoding": "UTF-8",
"ThrowExceptions": true,
"IncludeRequestIdHeader": true
},
"ListeningHost": {
"Label": "Mi aplicación Sisk",
"Ports": [
"http://localhost:80/",
"https://localhost:443/", // Los archivos de configuración también admiten comentarios
],
"CrossOriginResourceSharingPolicy": {
"AllowOrigin": "*",
"AllowOrigins": [ "*" ], // Nuevo en 0.14
"AllowMethods": [ "*" ],
"AllowHeaders": [ "*" ],
"MaxAge": 3600
},
"Parameters": {
"MySqlConnection": "server=localhost;user=root;"
}
}
}Los parámetros creados a partir de un archivo de configuración se pueden acceder en el constructor del servidor:
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithParameters(paramCollection =>
{
string databaseConnection = paramCollection.GetValueOrThrow("MySqlConnection");
});
})
.Build();Cada lector de configuración proporciona una forma de leer los parámetros de inicialización del servidor. Algunas propiedades se indican que deben estar en el entorno del proceso en lugar de estar definidas en el archivo de configuración, como datos de API sensibles, claves de API, etc.
Estructura del archivo de configuración #
El archivo de configuración JSON está compuesto por las siguientes propiedades:
| Propiedad | Obligatorio | Descripción |
|---|---|---|
| Server | Requerido | Representa el servidor en sí con sus configuraciones. |
| Server.AccessLogsStream | Opcional | Predeterminado en console. Especifica la secuencia de salida de los registros de acceso. Puede ser un nombre de archivo,
null o console. |
| Server.ErrorsLogsStream | Opcional | Predeterminado en null. Especifica la secuencia de salida de los registros de errores. Puede ser un nombre de archivo,
null o console. |
| Server.MaximumContentLength | Opcional | |
| Server.MaximumContentLength | Opcional | Predeterminado en 0. Especifica la longitud máxima de contenido en bytes. Cero significa infinito. |
| Server.IncludeRequestIdHeader | Opcional | Predeterminado en false. Especifica si el servidor HTTP debe enviar el encabezado X-Request-Id. |
| Server.ThrowExceptions | Opcional | Predeterminado en true. Especifica si las excepciones no controladas deben lanzarse. Establezca en false cuando esté en producción y true cuando esté depurando. |
| ListeningHost | Requerido | Representa el host de escucha del servidor. |
| ListeningHost.Label | Opcional | Representa la etiqueta de la aplicación. |
| ListeningHost.Ports | Requerido | Representa una matriz de cadenas, que coincide con la sintaxis ListeningPort. |
| ListeningHost.CrossOriginResourceSharingPolicy | Opcional | Configura los encabezados CORS para la aplicación. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowCredentials | Opcional | Predeterminado en false. Especifica el encabezado Allow-Credentials. |
| ListeningHost.CrossOriginResourceSharingPolicy.ExposeHeaders | Opcional | Predeterminado en null. Esta propiedad espera una matriz de cadenas. Especifica el encabezado Expose-Headers. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigin | Opcional | Predeterminado en null. Esta propiedad espera una cadena. Especifica el encabezado Allow-Origin. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigins | Opcional | Predeterminado en null. Esta propiedad espera una matriz de cadenas. Especifica múltiples encabezados Allow-Origin. Consulte AllowOrigins para obtener más información. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowMethods | Opcional | Predeterminado en null. Esta propiedad espera una matriz de cadenas. Especifica el encabezado Allow-Methods. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowHeaders | Opcional | Predeterminado en null. Esta propiedad espera una matriz de cadenas. Especifica el encabezado Allow-Headers. |
| ListeningHost.CrossOriginResourceSharingPolicy.MaxAge | Opcional | Predeterminado en null. Esta propiedad espera un entero. Especifica el encabezado Max-Age en segundos. |
| ListeningHost.Parameters | Opcional | Especifica las propiedades proporcionadas al método de configuración de la aplicación. |