Frage

Ich habe mit MVC-Frameworks für eine kurze Weile, und ich mag wirklich, wie die Bedenken ausgesondert. Ich habe in eine schlechte Gewohnheit gemacht zu lassen, die Controller tun einiges an Arbeit. Also ich bin wirklich für ein paar Ratschläge an.

Als ich anfing, MVC Ich hatte ziemlich oft den Controller an den Modellen zu tun Manipulation nach Datenbank-Arbeit getan worden war. Ich wusste, das war schlecht bewegt, so dass die Arbeit in die Modelle. Allerdings bin ich nicht glücklich damit, wie ich meine Modelle sehr erfahren werden soll.

Ich habe ein bisschen Lesung getan, und ich sehe, dass die Menschen ihre Controller und Modelle schlankes halten durch eine Dienstschicht, die ich das Aussehen mag.

Ich versuche nur zu verstehen, wie ein Service-Layer und Repository sollten alle zusammenarbeiten. Hier sind meine Annahmen, können Sie bitte lassen Sie mich wissen, ob dies eine gute Arbeitsweise ist?

  1. Die Steuerung kann direkt auf das Repository aufrufen, wenn keine Manipulation an den Daten getan werden muss und als solche eine Dienstschicht muss nicht beteiligt
  2. bekommen
  3. Sobald muss jede Arbeit an Daten (Business-Logik) getan werden, dann sollte dies in der Dienstschicht durchgeführt werden und der Controller einen einfachen Aufruf der Dienstschicht und bei Bedarf
  4. machen
  5. Sobald ein Service, es ist die Geschäftslogik getan wird dann das Repository verwendet, falls nötig (wenn Daten beibehalten werden muss).
  6. Modelle sollten im Idealfall schlank gehalten werden, am besten actings als nichts anderes als DTOs
  7. Validierung von Daten wird in den Modellen durchgeführt werden (Monorail-Validierung mithilfe von Attributen). Ich schätze nicht einmal ein Gleichen ihre Modelle mit vielen Attributen umweltfreundlich, aber das ist eine andere Diskussion. Ich mag den Nutzen der Monorail Validierungsattribute für die automatische jQuery Validierung in der Benutzeroberfläche.

Ich versuche, alle meine Code um auf die einzige Verantwortung Prinzip zu machen, daher versuchen, meine Programmierpraktiken zu klären.

Danke

War es hilfreich?

Lösung

Erstens gibt es keine Reihe von Regeln, die in jeder Situation funktionieren werden. Wie Sie modellieren sind Sie Anwendung eine Menge von der Art und Komplexität des Projekts abhängt. Having said that, hier sind einige Ideen:

  1. nichts falsch mit dem Repository von einem Controller aufrufen. So stellen Sie sicher, dass der Controller nicht Geschäftslogik enthält.
  2. Der Service kümmert sich (etwas) Business-Logik und verwendet andere Dienstleistungen so zu tun. Das Repository ist eine Art von Service, es ist nichts falsch mit ihm von einem Dienst aufrufen.
  3. Das Modell sollte Business-Logik enthalten, eigentlich sollten Sie immer versuchen Sie es zuerst in das Modell zu setzen. Wenn Sie externe Daten benötigen, dass die Business-Logik durchzuführen (aus einem anderen Modell oder aus dem Repository), dann sollten Sie einen Dienst erstellen.
  4. Nichts falsch mit Validierung in den Modellen. Attribute verwenden oder nicht, ist eine Frage des Geschmacks (wenn Sie es mögen, dann ist es gut). Bewegen Sie die Validierung außerhalb des Modells, wenn es zu komplex wird (Erstellen einer externen Regelsatz).

Am wichtigsten ist, tun, was sich richtig anfühlt (das ist in der Regel die richtige Antwort).

Andere Tipps

Dieses Video gibt große Einblick in Ihre asp.net MVC-Lösung und Adressierung Trennung von Bedenken und eine bessere Testbarkeit zu organisieren. Hoffentlich wird es jemand anderes auch helfen. Ich lernte ein paar gute Sachen von ihm.

Ian Cooper hat gerade eine Blog-Post genannt geschrieben The Fat-Controller nur auf dieses Thema .

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