Sunday, March 30, 2025

Inyección de dependencias

¿Qué es Inyección de Dependencias?

Inyección de Dependencias (en inglés Dependency Injection, DI), es un patrón de diseño de software usado en la Programación Orientada a Objetos.

Permite desarrollar componentes desacoplados permitiendo una fácil gestión de cambios a futuro, implementación de pruebas unitarias, factoría para creación de instancias, prevención de fugas de memoria, entre otros.

Conceptos


  • Inversión de Dependencia (ID)
    • Principio de Diseño: Las clases de alto nivel no deberían depender de clases de bajo nivel; ambas deberían depender de abstracciones (interfaces o clases abstractas). 
    • Objetivo: Reducir el acoplamiento entre clases para mejorar la modularidad y facilitar la mantenibilidad y la extensibilidad del código.
  • Inyección de Dependencia (DI)
    • Patrón de Diseño: Una forma de implementar la inversión de control donde las dependencias (objetos) son proporcionadas a una clase en lugar de ser creadas por la clase.
    • Métodos: Las dependencias pueden ser inyectadas a través de constructores, métodos setter o directamente en propiedades.
  • Inversión de control (IoC)
    • Principio General: Refiere a invertir el control del flujo del programa, delegándolo a un contenedor o framework externo.
    • Implementación: Se logra mediante técnicas como la inyección de dependencia.
    • Efecto: Las dependencias entre componentes se gestionan externamente en lugar de que cada componente gestione sus propias dependencias.



Tipos de inyección de dependencias en .NET


Uso de Transient

Crea y comparte una instancia del servicio cada vez que la aplicación lo solicite. El componente se puede agregar como transitorio utilizando el método AddTransient() para IServiceCollection




Uso de Scoped

Se crea una vez por alcance y se implementa utilizando el método AddScoped(). La mayoría de las veces, el alcance se refiere a la duración de una solicitud http.



Uso de Singleton

Crea y comparte una única instancia del componenete a lo largo de la vida de la aplicación. El componente se puede agregar como singleton utilizando el método AddSingleton() para IServiceCollection.



Beneficios

  • Aplicación de bajo acoplamiento.
  • En caso de cualquier cambio en la implementación del servicio, simplemente cambie el nombre del archivo servicio o Implementación en el archivo program.cs.
  • No más cambios en ninguna clase del controlador.
  • Facilita la vida del desarrollador





Monday, March 3, 2025

Integrando el Versionamiento en la Arquitectura Empresarial

En el ámbito empresarial moderno, la Arquitectura Empresarial (AE) se presenta como un marco fundamental que alinea los procesos de negocio con las capacidades tecnológicas, asegurando que las inversiones en tecnología respalden eficazmente los objetivos estratégicos de la organización. Dentro de este contexto, la gestión adecuada de los activos tecnológicos es esencial para mantener la competitividad y eficiencia operativa.​


Activos Tecnológicos en la Arquitectura Empresarial

Los activos tecnológicos comprenden todos los recursos de tecnología de la información que una organización utiliza para operar y alcanzar sus metas. Estos incluyen:​
  • Hardware: Servidores, computadoras, dispositivos de red y otros equipos físicos.​
  • Software: Aplicaciones internas, sistemas operativos y herramientas de productividad.​
  • Datos: Bases de datos, registros de clientes y cualquier información digital relevante.​
  • Infraestructura de Red: Conectividad interna y externa, incluyendo internet y redes privadas.​
  • Propiedad Intelectual Digital: Patentes, licencias y derechos de autor en formato digital.
La AE proporciona una visión integral de cómo estos activos interactúan y se integran con los procesos de negocio, facilitando una gestión más efectiva y alineada con la estrategia corporativa. ​

La Práctica del Versionamiento en la Gestión de Activos Tecnológicos

El versionamiento es una práctica técnica que implica el seguimiento y control de las diferentes versiones de los artefactos de software o ítems de configuración dentro de un sistema. Esta práctica es esencial para mantener la integridad y continuidad operativa, permitiendo a las organizaciones:​
  • Rastrear Cambios: Identificar qué modificaciones se realizaron, cuándo y por quién.​
  • Revertir Errores: Volver a versiones anteriores en caso de fallos o problemas.​
  • Facilitar la Colaboración: Permitir que múltiples equipos trabajen simultáneamente sin conflictos.
El control de versiones coordina todos los cambios en un proyecto de software, al rastrear de manera efectiva los cambios en los archivos de origen, los diseños y todos los activos digitales necesarios para un proyecto y los metadatos relacionados. ​


Artefactos que un Desarrollador debe Considerar para el Versionamiento

Para implementar un control de versiones efectivo, los desarrolladores deben considerar una variedad de artefactos, incluyendo:​
  1. Código Fuente: Los archivos que contienen las instrucciones de programación de las aplicaciones.​
  2. Archivos de Configuración: Documentos que establecen parámetros y ajustes para diferentes entornos (desarrollo, pruebas, producción).​
  3. Documentación: Manuales de usuario, guías de instalación y cualquier material que acompañe al software.​
  4. Scripts de Base de Datos: Instrucciones para la creación, modificación y gestión de bases de datos.​
  5. Pruebas Automatizadas: Casos de prueba que aseguran la funcionalidad y calidad del software.​
  6. Infraestructura como Código (IaC): Archivos que describen la configuración de la infraestructura, permitiendo su gestión y despliegue automatizado.​
  7. Dependencias y Librerías: Módulos externos o paquetes que la aplicación requiere para funcionar correctamente.
Estos artefactos, al ser versionados, garantizan que cualquier cambio sea registrado y pueda ser gestionado de manera eficiente, reduciendo riesgos y mejorando la calidad del producto final.​

Conclusión

La integración de prácticas de versionamiento en la gestión de activos tecnológicos es fundamental para el éxito de la Arquitectura Empresarial. Al asegurar que cada componente tecnológico esté debidamente controlado y alineado con los objetivos estratégicos, las organizaciones pueden adaptarse mejor a los cambios del mercado, mejorar su eficiencia operativa y mantener una ventaja competitiva sostenible.​

¡Gracias por llegar hasta aquí!

Cuando el código funciona, pero no tiene tests: ¿y ahora qué?

Seguramente te ha pasado alguna vez. Te dan acceso al repositorio de un nuevo proyecto. Lo abres con curiosidad, esperas encontrar una estru...