Inversione del controllo in ASP.NET MVC [chiuso]

7

Stavo per ridefinire la mia applicazione ASP.NET MVC e iniettare alcuni IoC. L'ultima volta che stavo usando IoC, Unity era di gran moda, ma l'ho odiato. È stato difficile da configurare e ha avuto errori molto poco descrittivi.

Qualcuno ha qualche suggerimento o preferenza?

    
posta SteveB 17.11.2011 - 00:19
fonte

3 risposte

5

Personalmente, mi piace molto Ninject .

È semplice, ma potente e ti consente di raggiungere facilmente le parti "facili" di DI , pur continuando a dare molto di ambito per scenari DI più avanzati.

È anche abbastanza leggero e facile da configurare all'interno del tuo progetto / applicazione.

Questo è particolarmente vero per le applicazioni ASP.NET MVC se utilizzi NuGet , poiché esiste un pacchetto Nuget per Ninject assembly stesso (Ninject) , insieme ad un altro pacchetto Nuget che integra in modo nascosto Ninject con ASP.NET MVC 3 (Ninject.MVC3) (che utilizza elementi come WebActivator per consentire agli assembly di eseguire codice di avvio ecc.)

Ci sono alcuni blog posts disponibili per aiutarti a iniziare anche con questo.

    
risposta data 17.11.2011 - 12:07
fonte
1

Non si "inserisce" IoC in qualcosa. Inversion of Control o più specificamente Dipendenza Injection , è una tecnica in cui si iniettano servizi nei consumatori, preferibilmente tramite Iniezione del costruttore.

In ASP.NET, tutto ciò che serve per farlo è un IControllerFactory personalizzato. Tuttavia, è possibile implementare IControllerFactory con un contenitore DI per semplificare le cose. Ecco un elenco di vari contenitori DI per NET .

    
risposta data 17.11.2011 - 08:10
fonte
0

Sono sorpreso che nessuno abbia menzionato Spring.NET ? È disponibile da molto tempo e ha il vantaggio di essere basato sul Java Spring Framework (basato sull'Idea "IOC", e sulla separazione di pacchetti / spazi dei nomi, non c'è Java in Spring.NET) come per il suo maturità e facilità d'uso. Inoltre, se ti capita di utilizzare entrambe le lingue nel tuo ambiente professionale, è fantastico avere alcuni strumenti / API comuni tra entrambi.

Si integra abbastanza bene con NHibernate, fornisce strumenti di programmazione AOP e puoi facilmente farlo funzionare con ASP.NET MVC 2/3.

Per quanto riguarda Unity, non l'ho mai usato così non posso dirlo.

Posso solo aggiungere che esiste anche il LinFu Framework, che è un po 'più leggero di Spring. C'è un ottimo tutorial su come integrare LinFu con ASP.NET MVC per gentile concessione di Thomas Weller . Ho anche usato LinFu per uno dei miei progetti personali ed è stato davvero facile lavorarci.

    
risposta data 17.11.2011 - 07:41
fonte

Leggi altre domande sui tag