2011-11-04 30 views
12

He estado leyendo sobre DI y parece un concepto bastante simple. Lo que no entiendo es el contenedor. Digamos por un momento que quiero crear mi propio contenedor. Se usan verbos como "detectar" y no entiendo cómo el contenedor "detecta" que se creó un nuevo objeto dependiente y sabe cómo inyectar sus dependencias. Para mí, parece que el contenedor es una fábrica glorificada.Dependency injection container? ¿Qué hace?

¿Alguien puede explicar cómo se implementa realmente un contenedor, o tal vez apuntarme a un recurso?

Gracias!

Respuesta

14

Esto está tomado de Windsor documentation

Inversión de Control

Inversión de Control es un principio que se utiliza por marcos como una forma de permitir a los desarrolladores ampliar el marco o crear aplicaciones usando it. La idea básica es que el marco conoce los objetos del programador y realiza invocaciones sobre ellos.

Esto es lo contrario de utilizar una API, donde el código del desarrollador hace las invocaciones al código API. Por lo tanto, los marcos invierten el control: no es el código del desarrollador el que está a cargo, sino que el marco realiza las llamadas en función de algún estímulo.

Probablemente ha estado en situaciones en las que ha desarrollado bajo la luz de este principio, a pesar de que no estaba enterado de ello.

Inversión de Control Container

una inversión de control de contenedor utiliza el principio se ha indicado anteriormente a (en pocas palabras) gestionar clases. Es decir, su creación, destrucción, duración , configuración y dependencias. De esta forma, las clases no necesitan para obtener y configurar las clases de las que dependen. Este reduce drásticamente el acoplamiento en un sistema y, como consecuencia, simplifica la reutilización y la capacidad de prueba.

Existe cierta confusión creada por las personas que piensan que 'Inversión de Control' es un sinónimo de 'Inversión del contenedor de control'. Como declaró , la inversión de control es un principio más amplio.

A menudo la gente piensa que todo se trata de "inyección" y difunde que este es el objetivo principal de los contenedores de IoC. De hecho, "inyección" es una consecuencia, un medio para desacoplar, no el propósito principal de .

2

Quizás quieras leer este libro Dependency Injection In .NET ... Ya lo leí, y te recomiendo que lo leas. Primero da una explicación agradable y perspicaz sobre DI y luego muestra el código y los patrones sobre aplicaciones de DI en el mundo real.

A partir de este libro, y en muy pocas palabras ...

"DI container is the technology used to support the DI technique" Page 55 
+0

+1 Parece una buena lectura. Gracias. –

+1

Sí lo es. Por cierto, Mark Seeman participa activamente en Stackoverflow, puedes contactarlo fácilmente y preguntarle directamente, creo. – renatoargh

Cuestiones relacionadas