Pregunta

Estoy usando Dependency Injection en mi código (con Ninject ) y pensé que me iba bastante bien hasta que llegué a través de un problema de rendimiento causado por un malentendido acerca de dónde encajan los contenedores DI en su código. Parece que hay mucha información sobre cómo usar los marcos DI pero no demasiado sobre dónde no usarlos o cómo usarlos mejor (al menos eso pude encontrar)

Pensé que escribiría lo que creía que eran algunas de las mejores prácticas y vería si otras personas estaban de acuerdo conmigo y qué otras mejores prácticas se les ocurrían.

  • Use un kernel por aplicación o AppDomain
  • Use el contenedor DI solo para objetos Singleton de larga duración, use fábricas (u otros métodos) para objetos transitorios de corta duración)
  • Preferencia de inyección de constructor sobre propiedad o inyección de campo
  • Solicitar objetos, no los construyas
  • otros ?? punteros a buenos blogs entires / artículos ??
¿Fue útil?

Solución

Aquí hay una breve lista de los puntos más importantes (algunos de los cuales también aparecen en el OP):

  • El código no debe saber qué contenedor DI (si lo hay) se utiliza
  • Componga la aplicación completa en la raíz de la aplicación (la raíz de composición)
  • Favorece la inyección de constructor

No puedo decir que estoy de acuerdo con tu punto sobre Singleton vs. Objetos transitorios. El objetivo de DI es que un mecanismo externo (como un DI Container) determina el tiempo de vida de cualquier dependencia dada, no de otra persona, por lo que debe tener todas las dependencias administradas por el DI Container.

Otros consejos

  

Use el contenedor DI solo para objetos Singleton de larga duración, use fábricas (u otros métodos) para objetos transitorios de corta duración)

Pero use DI para inyectar las fábricas donde sea necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top