MVC3 Design - Repository-Muster und Services Layer [geschlossen]

8

Ich habe ein paar Bücher und Artikel über MVC gelesen und stoße auf das Repository-Muster und die Services-Ebene.

Soll ein Controller Entitäten über das Repository-Muster abrufen oder Daten von der Services-Schicht abrufen?

Bearbeiten: Ich habe Code in der Services-Ebene, die so aussieht

%Vor%

Wenn eine Methode in einem Service nur eine andere Methode im Repository aufruft, ist es erforderlich, dass der Controller den Service durchläuft?

    
Extrakun 13.04.2011, 05:56
quelle

4 Antworten

11

In der geschichteten Anwendungsarchitektur gibt es eine grundlegende Regel, die besagt, dass Sie niemals eine Ebene umgehen . Wenn Sie Ihr Repository direkt von Ihrem Controller abfragen, verletzen Sie diese Regel.

Na und? können Sie sagen. Was ist, wenn die Serviceebene keinen Wert hinzufügt? Nun, vielleicht in der Zukunft ...

Sie können wählen, die Regel zu brechen, aber dann wäre es keine mehrschichtige Anwendung mehr . Das mag auch okay sein - es gibt andere gute (noch bessere) Anwendungsarchitekturen, aber ich denke, dass Sie zuerst eine Entscheidung bezüglich der Gesamtarchitektur treffen sollten und dann bei dieser Entscheidung bleiben . Andernfalls erhalten Sie den Spaghetti-Code - wir nennen ihn Lasagne , wenn es sich um eine geschichtete Anwendung handelt:)

    
Mark Seemann 13.04.2011, 06:30
quelle
4

Es kommt darauf an. Wenn Sie in Zukunft komplexe Geschäftsregeln haben möchten, würde ich die Serviceebene hinzufügen. Wenn Ihre Site nur CRUD-Vorgänge mit wenig oder keiner Logik in der Serviceschicht ausführt, können Sie sie direkt als Repository-Ebene bezeichnen.

    
Carles Company 13.04.2011 06:12
quelle
2
  

Soll ein Controller Entitäten über das Repository-Muster abrufen oder Daten von der Services-Schicht abrufen?

Idealerweise sollte der Controller nur die Service-Schicht verwenden, die selbst von einem oder mehreren Repositories abhängt, um eine oder mehrere einfache CRUD-Operationen zu einer Geschäftsoperation zusammenzufassen. Es gibt jedoch Fälle in einfachen Anwendungen, in denen Sie möglicherweise keine Service-Schicht benötigen und der Controller direkt ein Repository verwenden muss.

    
Darin Dimitrov 13.04.2011 06:10
quelle
2

Es ist immer eine Frage, was zu dir passt und was dein Stil ist. Für mich bevorzuge ich den Zugriff auf die Serviceebene von der Controller-Aktion. Der Service greift dann auf das Repository-Modell zu.

%Vor%     
Evgenii 13.04.2011 06:11
quelle