Frage

Ich arbeite an meinem ersten richtigen ASP.NET MVC-Projekt und ich habe bemerkt, dass der Controller ich gearbeitet habe in ist immer ziemlich groß. Dies geht scheinbar gegen die beste Praxis des Controller dünn zu halten.

Ich habe aus dem Controller, einen guten Job zu halten die Business-Logik durchgeführt. Ich benutze eine separate Schicht dafür. Jede Aktion in erster Linie ein Verfahren in der Business-Schicht nennt und koordiniert das Endergebnis basiert auf, ob das Model gültig ist.

sagte, hat der Controller eine große Anzahl von Aktionsmethoden. Intuitiv, ich möchte den Controller in Unter Controller brechen, aber ich nicht eine einfache Möglichkeit sehen, das zu tun. Ich konnte den Controller in separate Controller einfach brechen, aber das ich die Hierarchie verlieren und es fühlt sich ein bisschen schmutzig.

Ist es notwendig, einen Controller mit einer großen Anzahl von dünnen Aktionen Refactoring? Wenn ja, was ist der beste Weg, dies zu tun?

War es hilfreich?

Lösung

Zuerst, wenn Sie hören, dass es gut auf ein Minimum Controller-Code zu halten, dies bezieht sich hauptsächlich auf jede Aktion Verfahren so dünn wie möglich zu halten (Put-Logik statt in Business-Klassen, nicht in Ansichten und Viewmodel.) Es scheint, dass Sie das tun, was toll ist.

Wie bei „zu viele“ Aktionsmethoden hat, ist dies eine Ermessenssache. Es könnte tatsächlich ein Zeichen von guter Organisation sein, dass man sich auf einer Sache jede Aktion Fokus hat. Auch, vielleicht sind Sie mit Aktionen speziell für die Verwendung mit Render? Und es könnte nur die Art Ihrer Lösung sein, dass es viele Dinge zu Ihrem Kontrolleurs Thema zu tun beziehen.

Also, meine Vermutung ist, dass Sie wahrscheinlich in Ordnung sind. Doch um sicher zu gehen, auf Notenpapier auszubrechen den Controller in 2 oder 3-Controller, und skizziert, wie Sie Ihre Geschichten von Aktion zu Aktion bewegen funktionieren würden. Und wenn Sie feststellen, dass Sie Ihren Workflow mit mehreren Controllern arbeitet, sollten Sie es auszubrechen. Vor allem, wenn Sie gehen später auf diese Funktionalität hinzufügen. Je früher die Pause es aus, desto besser.

Andere Tipps

Gute Frage.

Ich glaube, ein „dünner“ Controller noch brauchen kann „breit“ zu sein oder „hoch“, je nachdem, wie Sie die Analogie strecken. Wenn es keine saubere Möglichkeit, einen Controller zu brechen ist, dass Bedürfnisse, eine Menge Dinge zu tun, ich glaube nicht, das ist ein Problem, solange jede Aktion ausschließlich auf der Vorbereitung Views / Viewmodel fokussiert und ist von begrenzten Codegröße.

Eine weitere strukturelle Option, die Sie haben, ist die Einführung partielle Klassen für logische Gruppierungen von Aktionen. Und mit so etwas wie vscommands zu gruppieren Dateien.

Ich bezweifle, jeder kann mit einer magischen Zahl von Maßnahmen kommen, die Sie sagt, wenn es eine gute Idee, Sachen zu brechen und die Einführung neue Controller, es hängt wirklich von Ihrer Domain.

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