Ho una soluzione con due progetti pertinenti (a questa domanda) e alcuni altri;Dove devo fare Injection con Ninject 2+ (e come sistemare i miei moduli?)
- Libreria di classi con funzionalità utilizzate da diversi altri progetti.
- Applicazione ASP.NET MVC.
La mia domanda è fondamentalmente in cui devo fare IoC con Ninject 2, considerando ...
- La libreria di classi ha bisogno di qualche amore DI, tra le altre cose nelle classi repository che necessitano di richiesta web specifica sessione oggetti (pensa Unità di lavoro).
- L'app MVC ha bisogno di DI poiché con Ninject 2 si eredita fondamentalmente da NinjectHttpApplication.
- I test di unità per la libreria di classi devono essere consapevoli di ciò per iniettare un diverso insieme di repository.
- I test unitari per l'app Web devono essere iniettati per lo stesso motivo.
Qui mi sono dipinto in un angolo mentale, perché ho visto solo tre opzioni per cominciare. DI nella libreria di classi, DI nella web app, o entrambi, ma ci sono problemi con ciascuno:
- non posso farlo DI solo nella libreria di classi in quanto l'applicazione MVC ha bisogno di ereditare da NinjectHttpApplication iniziare con.
- Non riesco a fare DI solo nell'app MVC - la libreria di classi è utilizzata da altre librerie, dopotutto, e l'app MVC non dovrebbe comunque conoscere troppo gli interni della libreria.
- Immagino che questa sia l'unica via d'uscita che posso vedere: IoC indipendente per entrambi i progetti. La libreria di classi e l'app MVC hanno ciascuno la propria configurazione IoC e fanno DI per le loro cose senza preoccuparsi l'una dell'altra.
Qualcuno ha alcune "migliori pratiche" o linee guida su come fare qualcosa di simile? Non riesco a immaginare di essere la prima persona a finire in questa situazione, e sarebbe sicuramente bello sapere qual è il modo "corretto" per farlo ...
Grazie!
correlati: http://stackoverflow.com/questions/5267525/dal-bll-gui-composition-root-how-to-setup-di-bindings –
Duplica con alcuni commenti che vale la pena estrarre per completezza se sei veramente cercando di ottenere una visione completa http://stackoverflow.com/questions/5733591/best-location-for-fluent-ioc-configuration-modules-currently-trying-ninject –