dependency injection - ¿Cuándo usar un contenedor IOC?
dependency-injection inversion-of-control (1)
Lo importante a tener en cuenta aquí es que puedes (y deberías) escribir tu código de una manera amigable con el DI, pero sin agnóstico .
Esto significa que siempre debe llevar la composición de las dependencias a un punto en el que no pueda diferirla más. Esto se llama la raíz de composición y se coloca a menudo cerca del punto de entrada de la aplicación.
Si diseña su aplicación de esta manera, su elección de DI Container (o ningún DI Container) gira en torno a un solo lugar en su aplicación, y puede cambiar la estrategia rápidamente.
Puede elegir usar la DI de Poor Man si solo tiene unas pocas dependencias, o puede elegir usar un contenedor de DI en toda regla. Utilizado de esta manera, no tendrá dependencia de ningún contenedor DI en particular, por lo que la elección se vuelve menos crucial en términos de mantenibilidad.
Un contenedor DI le ayuda a administrar la compleción, incluida la vida útil del objeto. Usado como se describe aquí, no hace nada que no puedas escribir en la mano, pero lo hace mejor y más sucintamente . Como tal, mi umbral para cuándo comenzar a usar un contenedor DI sería bastante bajo.
Comenzaría a usar un contenedor DI una vez que supere algunas dependencias. La mayoría de ellos son bastante fáciles de comenzar de todos modos .
Actualización: Mi respuesta de noviembre de 2012 a esa pregunta .
Estoy tratando de entender cuándo debo usar un contenedor en lugar de inyectar dependencias manualmente. Si tengo una aplicación que usa interfaces 1-2 y solo tengo 1-2 implementaciones concretas para cada interfaz, me inclinaría por solo manejar eso.
Si tengo una aplicación pequeña que usa interfaces 2-3 y cada interfaz tiene 2-3 implementaciones concretas, ¿debo usar un contenedor completo? ¿Bastaría algo tan simple como this ?
Básicamente, estoy tratando de entender cuándo es apropiado manejar manualmente estas dependencias, cuándo (o si) debo usar algo simple como el anterior, y cuándo usar un contenedor IOC como Ninject, Windsor, etc. Sea apropiado poner un número en algo como esto, pero ¿cómo puedo saber si es hora de usar un contenedor IOC?