Encontré esta página que complementa la explicación de Inyección de dependencias:
https://www.netmentor.es/entrada/inyeccion-dependencias-scoped-transient-singleton
Introducción a API en .NET
Domina las API con .NET
Prerrequisitos
¿Qué es una API?
¿Qué es REST?
Creando tu primera API con .NET
Funcionamiento de una API en .NET
Consumiendo API desde Postman
Análisis del template para APIs de .NET
Atributos para verbos HTTP
Manejo de rutas
Minimal API vs. Web API
Arquitectura y configuración
¿Qué son los middlewares?
Creando un nuevo middleware
Inyección de dependencias
Agregando Logging a API
Documentando API con Swagger
Manipulación de datos con Entity Framework
Agregando librerías para Entity Framework
Configuración de Entity framework y clases base
Creación de servicios
Inyectando servicios como dependencia
Creando controladores
Probando API con una base de datos SQL server
Outro
Retrospectiva: APIs con .NET
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 12
Preguntas 15
Encontré esta página que complementa la explicación de Inyección de dependencias:
https://www.netmentor.es/entrada/inyeccion-dependencias-scoped-transient-singleton
Sería más oportuno para el curso explicar con gráficos o imágenes representativas de lo que significa las tres formas de inyección de dependencia como Freddy lo hace en las clases de programación para tener una representación visual más clara del alcance que tiene cada una.
-AddScoped crea una instancia por cada request del cliente
-AddTransient crea una instancia por cada controlador
-AddSingelton crea una sola instancia para todo lo que dure la ejecución de la API.
Transient vs Scoped vs Singleton
Les dejo una explicación muy interesante 😄
https://www.youtube.com/watch?v=srPGwwMwAoA&ab_channel=hdeleon.net
La inyección de dependencias puede entenderse de mejor manera si se conocen los principios SOLID. También es necesario saber manejar interfaces.
Si tienen dudas sobre de clase, les recomendaría que acudan a estudiarlos.
Estoy haciendo el curso usando NET 5 y si hay sus cositas diferentes en el startup.cs
Creo que lo que entendei de AddScoped
y AddSingleton
es que AddSingleton
crea 1 contexto para todos los controladores y el AddScoped
crea un contexto para cada uno de los controladores.
Y cuando dice que una api tienes que ser State Less, quiere decir que las peticiones HTTP no deberian compartir informacion y que cada peticion HTTP sea decentralizada. Es decir, que si manejo un estado en /users
ese estado no debe estar en /products
Nos permite utilizar diferentes tipos abstractos y configurar nuestras dependencias utilizando un inyector sin tener que crear un nuevo objeto o una nueva referencia del componente cada vez que lo necesitemos, sino que el inyector se encarga de pasarnos esa dependencia y la podemos utilizar directamente.
Configuración del inyector: Para la configuración del inyector tenemos las siguientes opciones:
builder.Services.addscop<>();
: De esta manera estamos creando una nueva instancia de la dependencia que estamos usando, pero a nivel de controlador o a nivel de clase, es decir que no importa si estamos inyectando varias veces y en diferentes partes esta dependencia dentro de todo el contexto del controlador o todo el contexto de la clase, se va a inyectar exactamente la misma instancia que se creo para todo ese elemento.builder.Services.addTrasient
)builder.Services.addsingleton
: De esta manera estamos creando UNA ÚNICA implementación o instancia de esa dependencia EN TODA LA API (no es recomendable usar singleton porque hacemos que nuestras dependencias se creen en memoria lo que podría causar un problema, además la tendencia es implementar APIS que sean stateless que no manejen ningún tipo de estado sino que con cada request se cree una nueva implementación o instancia de la dependencia configurada.)lo que dices en el minuto 14:00 no es nada claro y podria ser hasta erroneo, muy decepcionado de este curso
CReo que la palabra correcta para la interfaz es multiples definciones de metodos que pueden ser implementados cuando se implementa en una clase
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.