inyeccion - ¿Qué debo considerar al elegir un marco de inyección de dependencias para.NET?
inyeccion de dependencias swift (4)
La primavera y la unidad son xml pesadas.
No estaría de acuerdo con esa afirmación para Unity; puedes escribir
container.RegisterType<IRobot, MrRoboto>();
y realice su configuración en código utilizando una interfaz de estilo fluido. Personalmente me gusta la unidad.
ver también ¿Qué marcos de inyección de dependencias C # / .NET vale la pena analizar?
Ahora hay muchos marcos de injection dependency para elegir. Solía ser forzado a usar un marco de inyección de dependencia dado debido a la biblioteca que estaba usando. Sin embargo, la biblioteca Common Service Locator ha permitido que el código de la biblioteca sea independiente de los marcos de inyección.
El tiempo que toma aprenderlos a todos lo suficientemente bien como para decidir cuál usar no es razonable. No creo que todavía hayamos llegado a una etapa en la que podamos hablar sobre el mejor marco de inyección de dependencias. Entonces, ¿qué preguntas debería hacer sobre el proyecto y sobre mí mismo para ayudar a decidir cuál es el mejor marco de inyección de dependencia para usar en un caso determinado?
También sería útil saber por qué elige el marco de inyección de dependencias que está utilizando actualmente y si todavía está satisfecho con esa elección.
¿Existe todavía un vocabulario útil para usar cuando se comparan los estilos de marcos de inyección de dependencia?
¿Funciona la biblioteca del Localizador de servicios en la vida real, o tienes la habilidad de usar muchos marcos de inyección de dependencias diferentes en el mismo proyecto?
¿Qué tan fácil es refractar su código con cada Marco de inyección de dependencias, por ejemplo, las herramientas como ReSharper funcionan bien con un marco dado?
Creo que la elección se reduce a encontrar un marco que cumpla con sus requisitos y luego con sus preferencias personales.
¿Su proyecto ya utiliza una biblioteca como rhino-tools que ya se integra con un marco DI? Si lo hace, podría ser un buen punto de partida si desea evitar el uso de "muchos marcos de inyección de dependencias diferentes".
Echa un vistazo a estos dos mensajes:
Es difícil responder qué marco es el "mejor", pero puedo decirle qué marco es el más fácil: el inyector simple:
El Simple Injector es una biblioteca de Inversión de Control fácil de usar para .NET y Silverlight. Solo es compatible con la configuración basada en código y es un punto de partida ideal para desarrolladores que no están familiarizados con bibliotecas IoC / DI más grandes
http://simpleinjector.codeplex.com/
Enchufe desvergonzado por cierto ;-)
Para su información, esta mañana me encontré con una comparación interesante entre todos los contenedores .NET IoC aquí:
http://elegantcode.com/2009/01/07/ioc-libraries-compared/
Un puñado de preguntas:
- ¿Cuánta asistencia general necesita? La primavera es probablemente la más grande que hay. Todo el mundo lo ha usado o ha oído hablar de él hasta ahora, así que mucha información. También es probable que tenga la mayor cantidad de funciones, pero eso significa que solo hay más que aprender. Un contenedor más pequeño como Autofac puede ser bueno, pero es posible que encuentre un problema en el que no encontrará ayuda.
- ¿Eres práctico con la configuración xml? Cada contenedor IoC se basa en la configuración y configuración de algún tipo. La primavera y la unidad son xml pesadas.
- ¿Es esta una elección permanente? Si estás en uno de esos lugares donde solo tienes una oportunidad de elegir, no importará. Pero, si alguna vez desea elegir otra solución en el futuro, es probable que no quiera un IoC que requiera que atribuya sus clases (más o menos al revés de la pregunta anterior) porque se odiará cuando tenga que eliminar todas esa cosa fuera En comparación, wwapping out xml config puede no ser tan doloroso.
- ¿Cómo es tu tienda? Tuve problemas para lanzar un par de opciones de código abierto solo por el "¡jadeo! ¡No es Microsoft!" reacciones Si eres una tienda de MS directa, usar Unity será una ganancia cultural mucho más fácil.
En una nota personal:
He usado StructureMap por las mismas razones mencionadas en el blog que vinculé. Creo que la configuración de Xml es un dolor gigante de mantener y, sobre todo, de depurar (ver WCF). No he probado Ninject todavía, pero basado en su comercialización, ¡debe ser super rad!