Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 36245|Respuesta: 1

[.NET Core] ASP.NET Core Dependency Injection utiliza el contenedor IOC que viene con ella

[Copiar enlace]
Publicado en 7/5/2019 13:55:10 | | | |
ASP.NET Core Dependency Injection utiliza el contenedor IOC que viene con ella
https://www.itsvse.com/thread-7562-1-1.html
(Fuente: Architect_Programmer)

ASP.NET Core utiliza Autofac para implementar la inyección de IOC
https://www.itsvse.com/thread-7563-1-1.html
(Fuente: Architect_Programmer)

ASP.NET Core utiliza Autofac para implementar la intercepción AOP
https://www.itsvse.com/thread-7566-1-1.html
(Fuente: Architect_Programmer)

En el nuevo ASP.NET Core, se utilizan un gran número de inyecciones de dependencias para escribir código.

Por ejemplo, en nuestra clase de Startup, podemos ver lo siguiente:

AddMvc AddDbContext incluye el AddDirectoryBrowser que usábamos para los recorridos de directorios antes:

Todos son marcos que ofrecen buenos servicios, y podemos usarlos directamente inyectándolos.

La inversión de control (IoC) es un principio de diseño en programación orientada a objetos que puede utilizarse para reducir el acoplamiento entre el código informático. El método más común se llama Inyección de Dependencias (DI), y también existe un método llamado "Consulta de Dependencias". Al controlar la inversión, cuando se crea un objeto, una entidad externa que controla todos los objetos del sistema le pasa una referencia al objeto del que depende. También se puede decir que se inyectan dependencias en el objeto.

Para usar el ioc, la clase Startup necesita referenciar Microsoft.Extensions.DependencyInjection(ps, que ya es bastante sencillo: Microsoft.. Expandir... Inyección de dependencias - - ,)

Inyectar el ciclo de vida de un servicio

Microsoft ofrece 3 ciclos de vida para servicios autoinyectados.

Transitorio

Un servicio instantáneo de ciclo de vida que se crea cada vez que se solicita. Este ciclo de vida es más adecuado para servicios ligeros y sin estado.

Alcance

En el mismo ámbito, el servicio se crea solo una vez por solicitud.

Singleton (Solo)

El global solo se crea una vez, la primera vez que se solicita, y luego siempre se utiliza.

¿Cómo se utilizan estos tres ciclos de vida? Podemos usar diferentes métodos directamente al inyectarlo, el código es el siguiente:


Probemos la generación específica de estos tres ciclos de vida

Escribimos tres interfaces con nombres diferentes y 3 clases distintas para implementar las interfaces, de la siguiente manera:

En el constructor de cada clase de implementación, generamos un nuevo GUID, que nos permite determinar si la clase ha reejecutado el constructor.

Inyectar servicios en el controlador

Generalmente existen tres formas de inyección: inyección por constructor, inyección por método e inyección de atributos. El contenedor IOC de Microsoft utiliza por defecto la inyección de constructores (No se admite la inyección de atributos, pero puede lograrse con un reemplazo de contenedor de terceros)

Ver código de la página:

Ejecuta el proyecto y accede a él a través de 2 navegadores diferentes, como se muestra a continuación:



Descubrimos que los GUIDs generados dos veces en el ciclo de vida instantáneo son inconsistentes, lo que indica que el objeto no es el mismo.

Sin embargo, el ciclo de vida del alcance es el mismo, porque bajo el mismo ámbito, el GUID del servicio usado dos veces en el mismo navegador es el mismo, lo que indica que se utiliza el mismo objeto.

En el caso de un singleton, dos navegadores diferentes acceden siempre al mismo GUID, lo que indica que se está llamando al mismo objeto.

(Fin)






Anterior:.NET Core Entity utiliza Entity Framework Core para enlazar bases de datos
Próximo:ASP.NET Core utiliza Autofac para implementar la inyección de IOC
 Propietario| Publicado en 9/3/2022 11:00:35 |
Sustituir servicios en los contenedores DI integrados de ASP.NET Core

Código:





Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com