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





Comments

Popular posts from this blog

Week #1: Definición de objetivos, desglose de trabajo

Week #2: Azure App Service

Registro de Excepciones