POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Diseño orientado a objetos para configuración en memoria

Arquitectura orientada a objetos para la configuración en memoria

Publicado el 02/09/2025

Probar funcionalidades que consumen archivos XML o JSON como entrada no es tarea sencilla. En este artículo reescribimos el enfoque aplicando principios de diseño orientado a objetos y características modernas de C sharp para crear pruebas unitarias ágiles de leer, rápidas y cómodas de mantener, todo con ejemplos pensados para C sharp.

Descripción del problema. La funcionalidad consiste en analizar una sección de configuración de una aplicación ASP.NET definida en archivos appsettings.json. El framework lee estos archivos mediante una instrucción típica de configuración y, a partir de ahí, accedemos a la configuración de múltiples formas. En nuestro caso, parsear la sección genera un objeto de mayor nivel y, sobre todo, en estado válido. Por ello la entrada más adecuada para las pruebas es un objeto IConfiguration del paquete Microsoft.Extensions.Configuration.Abstractions. Este objeto no es fácil de simular, pero Microsoft ofrece una alternativa excelente para tests: ConfigurationBuilder del paquete Microsoft.Extensions.Configuration permite crear una configuración en memoria desde un diccionario clave valor, evitando E/S de archivos y dependencias externas.

El inconveniente es que se pierde la estructura en árbol, ya que la ruta de cada clave se codifica en la propia clave separando niveles con dos puntos. Queremos construir la configuración con una sintaxis que se acerque al JSON real y que no requiera conocer esa codificación de rutas. El objetivo es representar algo como una sección AwsSecretManager con RegionName, SecretName, una subsección PartnerKeyName opcional con claves Login y Password que admiten valores por defecto, y otra subsección AwsCredentials con Source y credenciales, o bien con Source establecido en Environment sin claves adicionales.

La solución nace de la experimentación. Definimos una mini DSL en C sharp basada en dos ayudantes y un método final. Primero, un ayudante para valores simples que asocia clave y valor dentro de una sección. Segundo, un ayudante para secciones que acepta un nombre y una lista de entradas hijas, ya sean valores o subsecciones, de forma anidada y natural. Por último, un método para materializar todo en un IConfiguration listo para usar en los tests. Con esta sintaxis logramos varias ventajas. No hay que incrustar JSON en el código, lo que simplifica su lectura y mejora el rendimiento de las pruebas. La anidación es natural y refleja la jerarquía del JSON. La sintaxis es ligera, sin necesidad de new explícito ni de manejar llaves o corchetes. Y la intención es clara gracias al uso calificado de un espacio de nombres o clase de utilidades específica.

Diseño de la implementación. Centralizamos los ayudantes en una clase estática llamada Configuration para fomentar el uso calificado. El ayudante de valor crea una entrada con clave y valor. El ayudante de sección acepta el nombre de la sección y sus elementos hijos. Ambos devuelven el mismo tipo abstracto para poder componerlos entre sí. Para ello definimos una interfaz IEntries que representa una colección de entradas. De este modo, un conjunto de entradas se puede traducir fácilmente a un diccionario clave valor y después a IConfiguration mediante ConfigurationBuilder y AddInMemoryCollection. Implementamos un tipo de registro Entry con Key y Value que además se comporta como una colección de tamaño uno, lo que habilita el patrón Composite. Creamos también una clase privada que encapsula una enumeración de entradas y ofrece una operación Collect que aplana y transforma claves, anteponiendo el nombre de la sección al de cada entrada hija con el separador de rutas. Así, componer secciones anidadas consiste en combinar colecciones y reescribir claves de forma inmutable y segura.

Principios de diseño aplicados. Sin herencia innecesaria, favorecemos composición sobre herencia. Reutilizamos lógica con métodos predeterminados en la interfaz para evitar duplicación y mantener el código cohesionado. Encapsulamos detalles internos exponiendo solo lo imprescindible, de modo que podamos cambiar la implementación sin romper a los consumidores. Apostamos por la inmutabilidad usando records en C sharp, garantizando estados válidos y evitando corrupción accidental de claves. Y formalizamos la composición con el patrón Composite, lo que permite combinar entradas y secciones arbitrariamente sin complejidad adicional.

Conclusión. Este pequeño generador de configuración en memoria ofrece una forma robusta y flexible de construir IConfiguration en C sharp con un diseño claro, mantenible y muy orientado a pruebas. La inversión en una API así se traduce en suites de tests más fiables y fáciles de evolucionar en el tiempo.

En Q2BSTUDIO somos especialistas en desarrollo de software a medida y aplicaciones a medida, así como en ia para empresas, agentes IA, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y power bi. Si necesitas construir herramientas internas como este builder de configuración, integrar secretos con proveedores cloud o reforzar tus pipelines de pruebas, nuestro equipo puede ayudarte de extremo a extremo. Descubre cómo transformamos ideas en productos escalables en nuestra página de software y aplicaciones a medida y, si tu proyecto se apoya en infraestructuras elásticas, consulta también nuestros servicios cloud en AWS y Azure.

Palabras clave recomendadas para mejorar el posicionamiento de este enfoque técnico y de nuestros servicios profesionales. aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio