Was ist die Verwendung eines IoC-Frameworks in einer MVC-Anwendung? [geschlossen]

Ich versuche, die Verwendung eines IoC-Frameworks wie StructureMap zu verstehen, aber ich denke, dass diese "Entwurfsmuster" nur Unsinn sind und den Code nur komplexer machen.

Lassen Sie mich mit einem Beispiel beginnen, bei dem ich denke, dass eine IoC etwas nützlich ist.

Ich denke, eine IoC kann nützlich sein, wenn es um die Instanziierung von Controller-Klassen in einem MVC-Framework geht. In diesem Fall denke ich über das .NET MVC-Framework nach.

Normalerweise wird die Instanziierung der Controller-Klasse vom Framework übernommen. Das bedeutet, dass Sie dem Konstruktor Ihrer Controller-Klasse keine Parameter übergeben können. Hier kann sich ein IoC-Framework als nützlich erweisen. Irgendwo in einem IoC-Container geben Sie an, welche Klasse instanziiert und an Ihre Controller übergeben werden sollconstructor wenn die Controller-Klasse aufgerufen wird.

Dies ist auch praktisch, wenn Sie den Controller als Unit testen möchten, da Sie das übergebene Objekt verspotten können.

Aber wie gesagt, ich kann ein bisschen verstehen, warum die Leute es für ihre Controller-Klassen verwenden wollen. Aber nicht außerhalb davon. Von da an kannst du einfach normal machenAbhängigkeitsspritze.

Aber warum nicht einfach so machen:

public class SomeController
{
    public SomeController() : this( new SomeObj() ) 
    {
    }

    publiv SomeController(SomeObj obj)
    {
        this.obj = obj;
    }
}

Jetzt müssen Sie kein IoC-Framework von Drittanbietern verwenden, was auch eine geringere Lernkurve bedeutet. Da müssen Sie auch nicht auf die Spezifikationen dieses Frameworks eingehen.

Sie können das Objekt in Ihren Komponententests dennoch verspotten. Also auch da kein Problem.

Das einzige, was Sie sagen können, ist: "Aber jetzt ist Ihre Klasseeng verbunden zuSomeObj". Das ist wahr. Aber wen interessiert das? Es ist eine Controller-Klasse! Ich werde diese Klasse niemals wiederverwenden. Warum sollte ich mir also Sorgen um diese enge Kopplung machen? Ich kann das Objekt verspotten, das ist übergeben, das ist das einzig Wichtige.

Warum sollte ich mir dann die Mühe machen, ein IoC zu verwenden? Verpasse ich wirklich den Punkt ...? Für mich ist das IoC-Muster nur ein überbewertetes Muster. Hinzufügen weiterer komplexer Ebenen zu Ihrer Anwendung ...

Antworten auf die Frage(3)

Ihre Antwort auf die Frage