Frage

Normalerweise schreibe ich Anwendungsfälle für die gesamte Software, die ich entwickle. Für jeden Anwendungsfall schreibe ich im Allgemeinen einen Controller, der den Fluss leitet (implementiert einen Anwendungsfall).

Ich habe kürzlich mit der Entwicklung von Web -Apps mit ASP.NET MVC begonnen. Eine der besten Praktiken von ASP.NET MVC ist es, eine sehr weniger Logik in den Controllern zu halten. Ich kann nicht herausfinden, wie ich mein Design ändern werde, um dies zu reflektieren.

Ich möchte im Grunde eine Möglichkeit, meine Anwendungsfälle zu verkörpern.

War es hilfreich?

Lösung 3

Erstellen Sie eine Geschäftskomponente, um Anwendungsfälle zu verkörpern. Wenn Sie beispielsweise über ein Urlaubsmanagementsystem verfügen, haben Sie Anwendungsfälle wie Beantragung eines Urlaubs, genehmigen Sie eine Urlaubsanforderung, lehnen Sie eine Urlaubsanforderung ab usw. /Operationen) wie "bewerben", "genehmigen", "ablehnen" usw. Diese Methoden verkapulieren Ihre Anwendungsfälle. Diese Methoden würden Ihre Unternehmenseinheiten und Datenspeicherklassen als Eingabe dienen und den Anwendungsfall ausführen.

class LeaveManager{
     int Apply(from, to);

     bool Approve(leaveApplicationId, approverId);

     bool Reject(leaveApplicationId, approverId);
}

Sie können diese Geschäftskomponente dann in Ihren Controllern verwenden, um den Anwendungsfall auszuführen, indem Sie die erforderlichen Parameter liefern.

Andere Tipps

Ich denke, ein Fettmodell und ein dünner Controller ist im Allgemeinen eine gute Praxis in jeder Sprache und nicht speziell .NET MVC. Schauen Sie sich das schön an Artikel Dies durchläuft ein Beispielszenario, das die Vorteile eines Fettmodus in Ruby on Rails zeigt (aber die Ideen gelten für jede Sprache).

Für die Darstellung der Anwendungsfälle in Ihrem Code denke ich, dass ein viel besserer Ort für sie eher in Testkasen als in der Controller liegt.

Schieben Sie so viele Geschäftslogik in Ihre Modelle und Helferklassen wie möglich und verwenden Sie Controller hauptsächlich zum Umgang mit URL -Aufrufen und zum Instantieren der relevanten Modelle, abrufen Daten von ihnen und schieben Sie Daten in die Ansichten. Ansichten und Controller sollten so wenige Entscheidungen wie möglich haben.

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