Hola馃憢馃憢, esta vez quiero compartir contigo sobre la diferencias claves de implementar la inyecci贸n de dependencias en ASP.NET MVC y .NET Core. As铆 que, 隆comencemos!

 

Una definici贸n r谩pida de la inyecci贸n de dependencia es un patr贸n de dise帽o de software, que es una t茅cnica para lograr la inversi贸n de control (IoC) entre las clases y sus dependencias. La inyecci贸n de dependencias en .NET es una parte incorporada del framework, junto con la configuraci贸n, el registro y el patr贸n de opciones.

Una dependencia es un objeto del que depende otro objeto.

As铆 que, lo primero que necesitas saber es,禄 La inyecci贸n de dependencia no est谩 integrada en ASP.NET MVC禄 puedes a帽adirla a tu proyecto mediante un contenedor de inversi贸n de control (IOC). Hay muchas soluciones para implementar como:

  • Autofac
  • Unity聽
  • Ninject
  • StructureMap y otras.

Esta vez vamos a implementar usando Autofac. Es un contenedor IoC adictivo para .NET. Gestiona las dependencias entre clases para que las aplicaciones sigan siendo f谩ciles de cambiar a medida que crecen en tama帽o y complejidad. Esto se consigue tratando las clases regulares de .NET como componentes.聽

 

Entonces, c贸mo se estructura la aplicaci贸n:

 

La idea detr谩s de la inversi贸n de control es que en lugar de atar las clases en su aplicaci贸n juntos y dejar que las clases 芦nuevo禄 sus dependencias, que cambiar de forma que las dependencias se pasan en su lugar durante la construcci贸n de la clase.

 

 

Implementaci贸n de la inyecci贸n de dependencias en ASP.NET Framework

 

Como he mencionado antes no podemos a帽adir DI en nuestro ASP.NET sin un contenedor de inversi贸n de control como Autofac, as铆 que vamos a ver c贸mo podemos hacerlo.

  1. El primer paso es a帽adir la referencia de Autofac en tu proyecto.
  2. Y crear tu contenedor:聽

 


Nota: Es necesario crear, cablear la dependencia y gestionar el tiempo de vida de un conjunto de componentes cuando se utiliza una soluci贸n de inversi贸n de control, por lo explicado anteriormente.聽聽

Necesitamos registrar todos nuestros componentes (clases) y exponer sus servicios (interfaces) para que las cosas se puedan cablear bien. Durante la ejecuci贸n de la aplicaci贸n, necesitar谩s hacer uso de los componentes que hayas registrado.聽


 

Recomendaciones importantes para el uso de 芦containers禄
  • El contenedor en s铆 mismo es un 谩mbito de vida, y t茅cnicamente s贸lo puedes resolver cosas desde el contenedor. Sin embargo, no se recomienda resolver desde el contenedor directamente.聽
  • Cuando resuelves un componente, dependiendo del 谩mbito de instancia que definas, se crea una nueva instancia del objeto.
  • Algunos componentes pueden necesitar ser eliminados (como si implementaran IDisposable) – Autofac puede manejar la eliminaci贸n de esos componentes para usted cuando el 谩mbito de vida es eliminado.

Si quieres un tutorial paso a paso, puedes seguir la documentaci贸n oficial de Autofac.

 

 

Implementaci贸n de la Inyecci贸n de Dependencias en NET Core Framework

 

.NET core espera que utilicemos la inyecci贸n de dependencia, es necesaria para poder utilizar algunas caracter铆sticas del framework.聽

Los pasos para implementar la inyecci贸n de dependencia:

  1. Registro de la dependencia en un contenedor de servicios. .NET proporciona un contenedor de servicios incorporado, IServiceProvider.聽
  2. Los servicios se registran normalmente al inicio de la aplicaci贸n y se a帽aden a una IServiceCollection.聽
  3. Una vez a帽adidos todos los servicios, se utiliza BuildServiceProvider para crear el contenedor de servicios.

 

Hay dos formas de registrar nuestros servicios.

 

  1. La primera es registrando nuestros servicios en Program.cs de esta manera:

2. Podemos registrar grupos de servicios con un m茅todo de extensi贸n:

Para m谩s detalles de implementaci贸n puedes ir a la p谩gina de documentaci贸n de Dependency injection in ASP.NET Core.

Conclusi贸n

Recuerda que las inyecciones de dependencia resuelven los siguientes problemas:

  • El uso de una interfaz o clase base para abstraer la implementaci贸n de la dependencia.
  • Inyecci贸n del servicio en el constructor de la clase donde se utiliza. El framework asume la responsabilidad de crear una instancia de la dependencia y deshacerse de ella cuando ya no es necesaria.

Si te ha gustado este articulo no dudes comentarme, dar un like y compartir.鉂わ笍 馃А 馃挍 馃挌