Controller - Service - Repository: Ordnet Service die Entity ViewModel zu?

7

Ich habe MVC-App, mit "M" einschließlich Service-und Repository-Schichten.

Allerdings bin ich etwas verwirrt darüber, wo und wie man ein paar Dinge macht.

  1. Ein Service ruft zwei Repositories auf oder ruft ein eigenes Repository und einen anderen Service auf

z.B.

Ich habe einen ReferenceDataService, der die gesamte Logik für CRUD mit meinen Referenztabellen behandelt.

Dann in meinem "CustomerService" muss ich meine Referenzdaten "R", um z. Beschreibung statt Id. Also, rufe ich das ReferenceDataService oder ReferenceDataRepository auf?

  1. Auf einer Ebene möchte ich von Entity zu ViewModel mappen.

Tue ich dies in meiner Service-Schicht oder im Controller?

z.B. Führt mein ServiceLayer die Zuordnung / Logik von VM zu Entity und zurück?

Danke:)

    
BlueChippy 18.07.2012, 09:45
quelle

2 Antworten

22
  • Repositorys sprechen mit einer zugrunde liegenden Datenquelle.
  • Serviceebene spricht mit Repositorys mit Domänenmodellen. Es akzeptiert / übergibt Domänenmodelle von / an die Repository-Schicht.
  • Der Controller spricht mit der Serviceebene. Der Controller übernimmt / übergibt Domänenmodelle von / an die Serviceschicht.
  • Der Controller ruft die Zuordnungsebene (falls vorhanden) auf, um zwischen den Domänenmodellen und den Ansichtsmodellen zu mappen. Wenn Sie keine Mapping-Ebene haben, können Sie die Zuordnung in Ihrem Controller vornehmen, was jedoch schnell umständlich werden könnte. In diesem Fall könnte AutoMapper bereitgestellt werden als eine sehr praktische Mapping-Schicht.

Ein noch einfacheres Szenario ist, wenn Sie keine Service-Schicht benötigen, was in kleineren Anwendungen oft der Fall ist. Eine Service-Schicht bringt keinen Nutzen. Der Controller spricht also direkt mit den Domänenmodellen mit den Repositories.

    
Darin Dimitrov 18.07.2012, 09:48
quelle
5

ViewModel enthält Daten, die für die Anzeige des Modells in der Ansicht erforderlich sind. Wenn Sie eine andere Ansicht verwenden (z. B. eine mobile Anwendung oder eine Desktopanwendung oder sogar einen Webdienst), benötigen Sie weitere Daten, die in der Ansicht angezeigt werden. Wenn Sie auf der Serviceebene Zuordnungen vornehmen, können Sie diese nicht mit einem anderen Anwendungstyp verwenden. Daher ist der Controller ein Ort, an dem Sie Domain-Daten zuordnen, um sie in der Ansicht anzuzeigen (unabhängig von der Art der Ansicht, die Sie haben).

    
Sergey Berezovskiy 18.07.2012 09:55
quelle