Estoy trabajando en un proyecto ASP.NET MVC donde hemos decidido utilizar Fluent nHibernate para el acceso a datos. Para habilitar el acoplamiento flojo vamos a un patrón IoC/DI. Mi pregunta es qué herramienta de IoC hay que buscar. He tratado de encontrar las diferencias entre windsor, ninject, spring, structuremap y unity, pero es difícil ver los beneficios que cada uno tiene para ofrecer. ¿Cuál es tu experiencia?ASP.NET MVC + fluente nNibernate, ¿qué herramienta de IoC?
Respuesta
utilizo StructureMap y es muy fácil de usar. Personalmente, no me gusta configurar el uso de xml y StructureMap hace que sea fácil configurar el uso del código. También es muy fácil cambiar de perfil si necesita cambiar las implementaciones.
de Scott Hanselman tiene un muy buen artículo de comparación/contraste en un terreno de la popular .NET instrumentos de compromiso:
http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx
Uso Windsor y no tengo nada de qué quejarme. Fácil de usar, extensible cuando lo necesite y mucha información si se queda atascado. Pero no creo que importe tanto qué contenedor elijas. Todos los que mencionas tienen las características comunes y también hay adaptadores para mvc disponibles en el proyecto mvccontrib. Un cambio a otro contenedor no debería ser difícil si envuelve el contenedor en una clase propia, lo cual es una buena práctica de todos modos.
He estado usando Windsor y me encanta. Hay una función incorporada para usar NHibernate que permite una configuración simple de registro y conexiones, etc.
Si planea utilizar FluentNhibernate, debe indicarle a la instalación de Windsor qué ensamblado tiene ConfigurationBuilder. Mike Hadlow tiene un excelente escrito sobre esto y muchos otros sobre Windsor y NHibernate: http://mikehadlow.blogspot.com/2009/01/integrating-fluent-nhibernate-and.html
Fui para windsor y sharp-architecture. Funciona perfecto. También hice algunas pruebas con StructureMap, y no hay grandes diferencias. Al utilizar las mejores prácticas de Microsoft, ServiceLocator, es fácil hacer un cambio más adelante. – bondehagen
Uso Munq que es liviano y rápido y es una forma sencilla de agregar un Contenedor DI a los proyectos de MVC3 a través de Nuget. Hasta ahora no he encontrado ninguna necesidad de pasar a un marco diferente: Munq ha sido muy adecuado.
PM> install-package Munq.MVC3
Esto añade App_Start\MunqMvc3Startup.cs
al proyecto, y aquí es donde deben estar registrados dependencias.
- 1. Controladores IoC y ASP.NET MVC
- 2. IoC y ASP.NET MVC, ¿dónde comienza todo?
- 3. .NET Contenedor de IoC para medianas ASP.NET MVC
- 4. ¿Qué es ASP.Net MVC?
- 5. Autorización personalizada MVC 3 y Ninject IoC
- 6. ASP.NET MVC> ASP.NET WebForms, ¿Por qué?
- 7. ASP.NET MVC: ¿Qué pasa donde?
- 8. ¿Para qué sirve ASP.NET MVC?
- 9. ¿Qué herramienta debo usar para automatizar mi implementación de mi aplicación ASP.NET MVC?
- 10. Inyección de dependencias en clases de modelo de dominio con Nhibernate (ASP.NET MVC + IOC)
- 11. Cómo integrar el proveedor de membresía de IoC con ASP.NET MVC
- 12. Herramienta de actualización Asp.Net MVC3 a MVC4?
- 13. ServiceStack Funq IoC replacement
- 14. ¿Qué biblioteca de validación para ASP.NET MVC?
- 15. asp.net mvc con ioc -> evitando la sopa de constructores con BaseController
- 16. ¿Qué es ASP.NET WebForms equivalente a ViewData de ASP.NET MVC
- 17. ASP.NET MVC pseudo-localización
- 18. Arquitectura SOA con WCF + IOC Structuremap
- 19. ¿Cómo usar un contenedor DI/IoC con el archivador modelo en ASP.NET MVC 2+?
- 20. ASP.Net MVC vs ASP.Net Formularios
- 21. ASP.NET MVC vs Spring MVC
- 22. ASP.NET MVC 3 - ¿Qué características desea ver?
- 23. ¿Qué es un motor ASP.Net MVC View?
- 24. En ASP.NET MVC 3, ¿qué es filterContext.IsChildAction?
- 25. ¿Qué elegir: ASP.NET MVC o RESTful WCF?
- 26. ¿Qué archivos necesito implementar para ASP.NET mvc?
- 27. Sitecore y ASP.net MVC
- 28. ASP.NET MVC 3: ¿Qué dll necesita implementarse?
- 29. ¿Qué significa [Authorize (Users = "*")] en asp.net mvc
- 30. ¿Qué pasó con filterContext.Cancel (ASP.NET MVC)
FYI, la próxima vez que haga una pregunta como esta, diga más como: "¿Qué debo buscar en un IoC para jugar bien con ASP.NET MVC + nHibernate con fluidez?" Obtendrás mejores respuestas. –