Pregunta

¿Qué es un contenedor de COI?

¿Qué es un marco IoC/DI?

¿Por qué necesitamos un marco para IoC/DI?

¿Existe alguna relación entre IoC/DI y AOP?

¿Qué es Spring.net/ninject con respecto a IoC y AOP?

¿Fue útil?

Solución

JMSA,

James Kovacs escribió un artículo fantástico que cubre muchas de sus preguntas que recomendaría la lectura Aquí

Spring.Net, Ninject, Unidad, castillo de Windsor, Autofac son todos los contenedores COI que son configurables de diferentes maneras, muchos de ellos también apoyan AOP.

Marcos para COI / DI son útiles porque proporcionan mecanismos estándar, por ejemplo, si va a contratar a un nuevo desarrollador es mucho más fácil de decir, utilizamos este marco y pasar los vínculos con la tutoriales / guía de ayuda. Al mismo tiempo, estos marcos son de probada eficacia por una comunidad de grandes empresas /.

Quiero saber si cualquiera de sus preguntas siguen sin respuesta después de leer el artículo y las answes anteriores y haré todo lo posible para proporcionar más ayuda.

Otros consejos

Desde el punto de vista de la semántica ...

La dependencia en sí implica una inyección dependencia , es decir, algo que es requerida para la construcción / uso ( "preocupaciones centrales" de la aplicación). Por ejemplo, un coche no es un coche sin motor.

Aspectos se describen como transversales a las preocupaciones principales de la aplicación. Eso significa que tanto separado de y no crucial para las preocupaciones centrales (se puede pensar en ellos como "agradable-a-ricos"). Dado que la aplicación puede funcionar sin aspectos, ¿son realmente dependencias? Por ejemplo, un coche sigue siendo un coche incluso sin un inmovilizador.

(Por supuesto, esto es desde un punto de vista teórico. En el mundo real cuestiones como la seguridad son a menudo tan crucial para la existencia de un producto comercializable como el núcleo se refiere a sí mismos.)

Así pues, en la práctica, mientras que en DI puede ser usado para implementar aspectos, yo no lo llamaría ese proceso verdadera DI. Esto viene de alguien que utiliza la inyección de constructor exclusivamente.

Martin Fowler tiene un buen artículo. aquí sobre el significado de Inversión de Control e Inyección de Dependencia.

El uso de Spring.NET AOP se describe en detalle aquí.Estoy más familiarizado con la versión de Spring basada en Java, por lo que no puedo decir con absoluta certeza que Spring.NET actualmente solo admite AOP basado en proxy.

Es decir, una clase para ser asesorada debe implementar una interfaz.Spring creará un proxy dinámico que implementa esta interfaz y delega en la instancia de destino original.

Aunque sí afirma:

En una versión futura implementaremos proxies usando herencia, lo que le permitirá representar clases sin interfaces también y eliminará algunos de los problemas de referencia sin procesar restantes que no se pueden resolver utilizando proxies basados ​​en composición.

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