Frage

i über 20 verschiedene Parameter im Konstruktor der Modellklasse mit aufzuwickeln, einem für jeden Dienst? Ist das normal oder ein Zeichen, dass etwas aus.

War es hilfreich?

Lösung

Ich denke, kategorisch, dass der Controller mit zu vielen Diensten interagiert. Ich habe nicht den Code gesehen - also bin ich Annahmen abgehend - aber es scheint mir, dass Ihr Controller Geschäftslogik komponiert von zahlreichen „kleinen“ Dienste aufrufen, anstatt Zeichnung auf weniger, „größer“ Dienste, die Business-Logik komponieren von den kleineren Dienstleistungen.

Haben Sie einen Blick um Informationen über „Orchestrierungsdienste“ vs „Einheit“ oder „Fähigkeit“ Dienste und Sie werden sehen, was ich meine. Wenn Sie Orchestrierungsdienste erstellen, die Ihre Controller mit der Logik bieten sie benötigen, Ihre Architektur wird verbessert, da die Controller wirklich keine Business-Logik überhaupt enthalten.

Ich glaube wirklich, dass die Anzahl der Dienste, die Sie verbrauchen die Frage ist hier. IoC Behälter können in gewisser Weise zu lösen, wie Sie Typen auf Ihre Einspritzparameter usw. binden, aber ich denke, das Problem ist Ihre Architektur an dieser Stelle.

Andere Tipps

in kleineren scoped Komponenten

Sie könnten versuchen, einige Dienste zu konsolidieren oder denken über die Controller-Ansicht, die Teile Refactoring. ein Dependency Injection-Stil Rahmen wie Spring Auch kann mit Dingen wie diese helfen.

Allthough Ich weiß nicht, Ihr Setup. 20 scheint ein bisschen viel ich glaube, Sie gehen gegen die SRP (Single Verantwortung priniciple). Aber da kann ich nicht, Ihren Code sehen ist es unmöglich zu sagen. Wenn Sie wirklich alle diese Dienste Klasse in diesem einen Modell brauchen dann vielleicht müssen Sie sie in einem factoryclass setzen und dass als Parameter verwenden.

Es ist schwer, eine gute Antwort auf diese zu geben, da wir Ihre Domain nicht kennen.

Wie @ Matt sagte ein Dependency Injection Sie hier helfen könnte und sprint.NET ist gut und es gibt einige andere.

Sehen, wie Sie MVP insbesondere erwähnen, sollten Sie zumindest Blick auf Ent Lib 4.1 die nun hat Einheit , Microsoft nehmen auf DI. Ihre codeplex Website ist wahrscheinlich ein guter Anfang, wenn diese neu.

Es gibt auch Software Fabriken dass Integration mit Visual Studio und geben Sie Werkzeuge für MVP für Web-Sites als verknüpfte oder Web-Services zu schaffen. Diese kommen von Mustern und Praktiken zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top