01

Qué es y qué problema resuelve

Options agrupa valores relacionados en un contrato tipado. El consumidor puede conocer una política de reservas en lugar de buscar claves arbitrarias por toda la aplicación.

Valida rangos y relaciones entre valores para rechazar una configuración incoherente antes de aceptar tráfico.

02

Ejemplo paso a paso

Options Pattern y validación al inicio · caso de reservasC#

Punto de partida ReservaOpciones tiene MaximoMinutos. Este registro tipado necesita la sección de configuración y el consumidor correspondiente.

Antes de ejecutar

Requiere un host ASP.NET Core 10 preparado. builder y app corresponden a WebApplication.CreateBuilder y Build; las variables y tipos auxiliares deben definirse. Registra los servicios usados antes de Build. El ZIP de consola no contiene esta API. Define ReservaOpciones con MaximoMinutos y su sección Reservas.

builder.Services.AddOptions<ReservaOpciones>()
    .BindConfiguration("Reservas")
    .Validate(o => o.MaximoMinutos >= 15 && o.MaximoMinutos <= 480)
    .ValidateOnStart();

Cómo funciona

  1. Relaciona la sección de configuración con el tipo de Options.
  2. Lee la regla de validación y qué entrada considera inválida.
  3. ValidateOnStart permite detectar ese fallo al iniciar la aplicación.

Resultado esperado: Un límite fuera de rango impide un arranque válido.

03

Cuándo usarlo y qué debes evitar

IOptions representa valores estables; IOptionsSnapshot resuelve una vista por ámbito; IOptionsMonitor permite observar cambios. Recarga depende del proveedor y de cómo se consuma el valor.

Si una política cambia en mitad de una operación, conserva una instantánea coherente para esa operación y registra la versión de política si la decisión necesita auditoría.

Ampliación opcional · contexto y variantes del tema

Pipeline y configuración validada al inicio

El middleware procesa la petición en orden y la respuesta de vuelta. El manejador de errores debe envolver componentes posteriores; autenticación identifica al actor y autorización evalúa acceso. Configura CORS antes de autorización cuando haya clientes de navegador. El limitador por usuario necesita que autenticación haya establecido la identidad. HTTPS y cabeceras de proxy requieren conocer la topología: confía únicamente en proxies configurados.

Options agrupa configuración tipada. Valida valores imprescindibles al inicio para evitar que una política defectuosa aparezca en mitad de una solicitud. IOptions sirve para valores estables, IOptionsSnapshot permite una vista por ámbito e IOptionsMonitor cambios observables. No asumas que todos los proveedores recargan valores. Variables de entorno, archivos y gestores de secretos tienen precedencia: documenta cuál domina cada configuración.

Límite de duración verificableC#

Punto de partida El fallo ocurre al arrancar, antes de aceptar tráfico. Para secretos usa un proveedor apropiado al ambiente; el archivo de configuración no es un lugar para claves o tokens.

Antes de ejecutar

Integración con Options de ASP.NET Core

public sealed class ReservaOpciones
{
    public int MaximoMinutos { get; init; } = 180;
}
// En Program.cs, antes de Build:
builder.Services.AddOptions<ReservaOpciones>()
    .BindConfiguration("Reservas")
    .Validate(o => o.MaximoMinutos is >= 15 and <= 480,
        "MaximoMinutos fuera del rango permitido")
    .ValidateOnStart();

Resultado esperado: La aplicación rechaza MaximoMinutos=0 y acepta 180.

04 · Práctica guiada · opcional

Practica lo aprendido

Prueba 14, 15, 480 y 481 como valores de configuración.

  1. 01Prepara el ejemplo con las dependencias indicadas en «Antes de ejecutar».
  2. 02Prueba 14, 15, 480 y 481 como valores de configuración.
  3. 03Comprueba y registra el resultado: Un límite fuera de rango impide un arranque válido.
Ver solución orientativa

14 y 481 se rechazan; 15 y 480 se aceptan. La evidencia pertenece al arranque, no solo a una función aislada.

05

Comprueba lo aprendido

Responde antes de abrir la explicación. Esta comprobación es opcional y no guarda una puntuación.

01¿IOptionsMonitor garantiza recarga de cualquier archivo o secreto?

No. El proveedor y la política de actualización determinan cuándo se observan cambios.

02¿Por qué probar la expresión no demuestra que el host valida sus opciones al arrancar?

La expresión solo prueba el rango. ValidateOnStart debe estar registrado y ejecutarse durante el arranque del host; ese recorrido puede faltar aunque la expresión sea correcta.

Cómo demostrar el objetivo

Compara tu práctica con estos resultados. Si solo diseñaste una prueba, registra su resultado como esperado, no como observado.

  • 14 y 481 fallan; 15 y 480 pasan la regla de configuración.
  • Compruebas el arranque del host preparado y distingues ese resultado de probar solo una expresión.

Qué debes recordar

  • Options agrupa configuración con un contrato.
  • La validación al inicio descubre fallos antes de servir tráfico.
Tu cuaderno · notas personales

Cuaderno local

Tus notas del contenido

Se guardan únicamente en este dispositivo. Puedes exportarlas cuando quieras.

Guardado local automático
Material de apoyo · descarga, glosario y referencias
Libro de trabajo · Options Pattern y validación al inicioLaboratorio C# · núcleo y 15 comprobaciones

Explicaciones, ejemplos y prácticas propios de Academia de Software. Los fragmentos de integración requieren las dependencias indicadas; el ZIP contiene el núcleo de consola. Las lecturas externas se consultan en su sitio original y conservan sus condiciones. Procedencia y condiciones de uso.