2012-03-25 17 views
6

Il mio team pianifica di iniziare un nuovo progetto a giugno. Questa applicazione tende ad essere utilizzata da 2.000 utenti simultanei. Ora stiamo discutendo sulla decisione tecnica - quale contenitore IoC utilizzeremo nel nostro progetto. Tutti i membri del mio team non hanno esperienza con IoC, alcuni di noi leggono e sanno di cosa si tratta. I nostri requisiti sono:Contenitore IoC .NET per mid-size ASP.NET MVC

  1. Prestazioni: la nostra gestione dichiara che IoC può rallentare l'applicazione e si aspetta che il contenitore IoC che utilizziamo non peggiori le prestazioni. Si aspettano inoltre che il contenitore IoC abbia una buona prestazione per processi piccoli o grandi o resolver.
  2. Set di funzioni - I miei colleghi si aspettano che abbia serie di funzioni complete. Al momento non so quale funzione useremo, ma ho esperienza che alcuni componenti possono iniziare in modo semplice ma non possono fare qualcosa di più avanzato.
  3. Documenti o libri - Ho intenzione di studiare l'IoC che abbiamo selezionato leggendo da documenti o libri online.
  4. Lavora con ASP.NET MVC 4
+1

Controllare http://stackoverflow.com/questions/1140730/net-ioc-container-comparisons. Inoltre, mentre selezioni un contenitore IoC, assicurati che possa essere utilizzato senza lasciare troppi spazi attorno al codice. – Chandermani

+0

@Chandermani Grazie per il link. Ho letto quella domanda, ma ha chiesto quasi tre anni fa. Non sono sicuro, è datato o no? – Anonymous

+2

Vedere http://www.iocbattle.com/ e il git test harness ed è possibile effettuare il benchmark con contenitori IoC aggiornati. Leggi anche questo thread da SO. Questi ragazzi hanno risposto al meglio http://stackoverflow.com/questions/5315562/di-ioc-container-performance-benchmark-comparison – Chandermani

risposta

7

ho usato StructureMap, Autofac e Ninject. Sono tutti molto bravi.

Si consiglia di utilizzare CommonServiceLocator [http://commonservicelocator.codeplex.com] come parte della propria implementazione. In questo modo è facile cambiare idea in seguito.

Personalmente mi piace Autofac il migliore. Ha un buon equilibrio di caratteristiche e semplicità.

  • Supporta autowiring e montaggio di scansione
  • Lifetime Scoping (come Singleton o HttpRequest)
  • facile da registrare un'implementazione a più tipi di richiesta
  • Supporta di nome o con chiave (Nominato da Enum) registrazione
  • E 'veloce

http://code.google.com/p/autofac/wiki/MvcIntegration http://nuget.org/packages/Autofac.CommonServiceLocator-unofficial

+0

Dal momento che chi ha votato per difetto non ha avuto la cortesia di dire perché, ho intenzione di Suppongo che il Local Service Service Locator sia considerato un anti-modello qui intorno, alias cattiva pratica. –

+0

Non riesco a capire perché CommonServiceLocator sia una cattiva idea dato che la domanda posta riguardava i contenitori IoC in un progetto MVC. Il metodo DependencyResolver.SetResolver accetta anche CommonServiceLocator come uno dei metodi sovraccaricati. –

+0

È una cattiva pratica perché prende qualsiasi contenitore utilizzato fino al minimo comune denominatore. Si perde molte delle funzionalità speciali fornite dal contenitore. –

Problemi correlati