Sto cercando di capire l'uso di un framework IoC come StructureMap, ma non posso fare a meno di pensare che questi "modelli di progettazione" sono solo assurdità, rendendo il codice ancora più complesso.Qual è l'uso di un framework IoC in un'applicazione MVC?
Vorrei iniziare con un esempio in cui penso che un IoC sia in qualche modo utile.
Penso che un IoC può essere utile quando si ha a che fare con la creazione di istanze di classi di controller in un framework MVC. In questo caso sto pensando al framework .NET MVC.
Normalmente l'istanziazione della classe controller viene gestita dal framework. Ciò significa che non è possibile passare alcun parametro al costruttore della classe controller. È qui che un framework IoC può rivelarsi utile. Da qualche parte in un container IoC si specifica quale classe deve essere istanziata e trasmessa ai controllori constructor
quando viene richiamata la classe controller.
Questo è utile anche quando si desidera testare il controller dell'unità, perché è possibile prendere in giro l'oggetto che gli viene passato.
Ma come ho detto, posso capire un po 'perché le persone vogliono usarlo per le loro classi di controller. Ma non al di fuori di questo. Da lì in avanti puoi semplicemente fare il normale Dipendenza iniezione.
Ma perché non fare semplicemente in questo modo:
public class SomeController
{
public SomeController() : this(new SomeObj())
{
}
publiv SomeController(SomeObj obj)
{
this.obj = obj;
}
}
Ora non c'è bisogno di utilizzare alcun 3rd IoC quadro partito che significa anche una curva di apprendimento più basso. Dal momento che non devi andare anche nelle specifiche di quel quadro.
È ancora possibile prendere in giro l'oggetto nei test di unità. Quindi nessun problema neanche lì.
L'unica cosa che si può dire è "ma ora la tua classe è strettamente accoppiata a SomeObj
". Questo è vero. Ma a chi importa!? È una classe controller! Non ho intenzione di riutilizzare quella lezione, mai .. Allora perché mai dovrei preoccuparmi di quel accoppiamento stretto ..? Posso prendere in giro l'oggetto che è passato ad esso. Questa è l'unica cosa importante.
Quindi perché dovrei preoccuparmi di usare un IoC? Mi manca VERAMENTE il punto ...? Per me il pattern IoC è solo un pattern sopravvalutato. Aggiunta di più livelli complessi alla tua applicazione ...
@HenkHolterman Non necessariamente quando qualcuno ha una buona argomentazione sul perché il mio approccio è sbagliato e in che tipo di situazione. Non ho intenzione di discutere con nessuno. Sto solo cercando un consiglio su questo argomento. – w00
possibile duplicato di [Perché è necessario un contenitore IoC anziché un semplice codice DI?] (Http://stackoverflow.com/questions/871405/why-do-i-need-an-ioc-container-as-opposed -to-diretta-di-code) –