Frage

Wer hat die Verantwortung hat,


Wer hat die Verantwortung hat, zu starten und die Einheit der Arbeit in einer MVC-Architektur zu beenden?

War es hilfreich?

Lösung

Es ist keine Verantwortung eines Controllers, es verletzt SRP . Controller sollte über UOW gar nicht einmal wissen. Im Web ist eine UOW pro Anforderung an dem Server in der Regel verwendet. In diesem Fall UOW am Ende einer Anfrage entsorgt werden und irgendwo nach dem Beginn einer Anfrage (im Idealfall beginnt einen UOW sollte faul) gestartet. Der beste Ort, dies zu tun ist Global.asax (oder Ihre Httpapplication-Klasse) mit Application_EndRequest und Application_BeginRequest Handler.
Dies kann leicht mit einem IOC Rahmen erreicht werden (mein Favorit ist Windsor), sehen diese Frage für Implementierungsdetails.

Andere Tipps

Der Controller. Hierdurch wird der Kontext, so können Sie beginnen, und die Einheit der Arbeit beenden. Zum Beispiel müssten Sie eine nHibernate Sitzung pro Anfrage zu wissen, wann die Anfrage hatte begonnen und beendet, so dass Sie den Kontext müssen Sie die Anforderung geben.

Ich bin ein Gläubiger in lose gekoppelten Architektur. Mein Controller weiß nichts über das Repository, Kontext oder unitofwork. Ich habe ein Service-Layer erstellt (nicht sicher, dass der richtige Begriff ist), dass die Controller-Anrufe. Dieser Dienst arbeitet dann mit dem Repository (DLL), um alle Daten zu bestehen.

Wie zihotki sagten, Sie würden die SRP verletzen, wenn Sie diese Verantwortung an die Steuerung geben. Dies ist eine Datenmanipulation orientierte Muster, und als solche soll kein Problem für den Controller sein ..., dass es zwei Verletzungen machen würde. Ein für die SRP und anothrt für das SoC-Prinzip

Was, der die Verantwortung hat, das ist etwas von Ihrer Architektur definiert werden. Die StartRequest / Endrequest Vorschlag scheint solide genug.

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