Sto lavorando a un progetto MVC ASP.NET in cui abbiamo deciso di utilizzare Fluent nHibernate per dataccess. Per abilitare l'accoppiamento libero andiamo per uno schema IoC/DI. Le mie domande sono ciò che lo strumento IoC deve fare. Ho cercato di trovare le differenze tra windsor, ninject, spring, structuremap e unity, ma è difficile vedere i benefici che ognuno ha da offrire. Qual è la tua esperienza?ASP.NET MVC + fluente nNibernato, quale strumento IoC?
risposta
lo uso StructureMap ed è molto facile da usare. Personalmente non mi piace configurare usando xml e StructureMap rende più semplice configurare il codice. È anche molto semplice cambiare profilo diverso se è necessario cambiare implementazione.
Scott Hanselman ha un buon articolo confronto/contrasto su un terreno del popolare .NET IOCS:
http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx
Io uso Windsor e non ho niente di cui lamentarmi. Facile da usare, estendibile quando ne hai bisogno e molte informazioni se ti blocchi. Ma non credo che importi molto il contenitore che scegli. Tutti quelli che hai menzionato hanno le caratteristiche comuni e ci sono anche gli adattatori per mvc disponibili nel progetto mvccontrib. Un passaggio a un altro contenitore non dovrebbe essere difficile se si avvolge il contenitore in una classe, il che è comunque una buona pratica.
Ho usato Windsor e lo adoro. È disponibile una funzione incorporata per l'utilizzo di NHibernate che consente una semplice configurazione di registrazione e connessioni, ecc.
Se si intende utilizzare FluentNhibernate, è necessario indicare alla struttura di Windsor quale gruppo ha ConfigurationBuilder. Mike Hadlow ha scritto molto su questo e su molti altri su Windsor e NHibernate: http://mikehadlow.blogspot.com/2009/01/integrating-fluent-nhibernate-and.html
Sono andato per windsor e sharp-architecture. Funziona perfettamente. Ho anche fatto alcuni test con StructureMap, e non ci sono grandi differenze. Quando si utilizzano le best practice di Microsoft ServiceLocator è facile effettuare un cambio in un secondo momento. – bondehagen
Io uso Munq che è leggero e veloce ed è un modo semplice per aggiungere un contenitore DI ai progetti MVC3 tramite Nuget. Fino ad ora non ho trovato alcuna necessità di passare a un quadro diverso - Munq è stato molto adeguato.
PM> install-package Munq.MVC3
Questo aggiunge App_Start\MunqMvc3Startup.cs
al progetto, e questo è dove dovrebbero essere registrati dipendenze.
FYI, la prossima volta che fai una domanda come questa, la frase più simile: "Che cosa dovrei cercare in un IoC per giocare bene con ASP.NET MVC + fluente nibernate?" Otterrai risposte migliori. –