Perché dovrei usare IoC Container (Autofac, Ninject, Unity ecc.) per l'inserimento delle dipendenze nelle applicazioni ASP.Net?

Perché dovrei usare IoC Container (Autofac, Ninject, Unity ecc.) per l'inserimento delle dipendenze nelle applicazioni ASP.Net?

Quando scriviamo codice, miriamo a SOLID Design Principals che rendono il codice adattabile al cambiamento.

  • S:Il principio della responsabilità unica
  • O :Il principio aperto/chiuso
  • L :Il principio di sostituzione di Liskov
  • I:Segregazione dell'interfaccia
  • D:Iniezione di dipendenza

Per ottenere i primi quattro - SOLI, vogliamo iniettare le dipendenze.

Puoi ottenere l'iniezione di dipendenza (DI) manualmente (Iniezione di dipendenza del povero) o utilizzando il contenitore Inversion of Control (IoC) (come Autofac, Ninject, Structure Map, Unity e così via) .

L'uso del contenitore IoC per DI non è mai stato un problema per la velocità.

Mark Seemann ha detto , "la creazione di un'istanza di oggetto è qualcosa che .Net Framework fa in modo estremamente veloce. qualsiasi collo di bottiglia delle prestazioni che la tua applicazione potrebbe avere apparirà in un altro posto, quindi non preoccuparti."

La riga in basso uso personalmente il contenitore IoC in ogni progetto ASP.Net MVC e API Web. Inoltre, non vedo quasi nessuna applicazione MVC e API Web open source che non utilizzi il contenitore IoC.


Per capire come funziona DI, dai un'occhiata a questo fantastico articolo:http://www.martinfowler.com/articles/injection.html

Consiglio anche di leggere anche metà di questo libro di Mark Seemann:http://www.amazon.ca/Dependency-Injection-NET-Mark-Seemann/dp/1935182501/ref=sr_1_1?ie=UTF8&qid=1454620933&sr=8-1&keywords =mark+seemann

A meno che tu non stia cercando di stabilire un record di prestazioni, non credo che la DI avrà un effetto evidente sulle prestazioni. Abbiamo utilizzato SimpleInjector nell'ultimo anno (è uno dei più veloci in circolazione) su un sito Web che riceve diversi milioni di visite al giorno e l'effetto sulle prestazioni è quasi non misurabile.