5

Mein Verständnis der Anwendungsdienste besteht darin, dass sie die Domäne und die Benutzerschnittstelle miteinander verknüpfen. Mit anderen Worten dienen sie dem Controller zum Ausführen von Operationen in der Domäne.DDD-Anwendungsdienstdomänenmodell zum Anzeigen von Modellzuordnungen

Ich habe folgendes Projekt-Layout in meiner Anwendung:

  • Domain-Core
  • Infrastruktur
  • Service Interfaces
  • Web UI
    • Viewmodels
    • Ansichten
    • Controller
    • Services (Application Services)

Mein Service Interfaces liegt außerhalb des Web UI Projekt. Dann implementiere ich im Web UI Projekt die Dienste-Schnittstellen unter Services.

Allerdings ist diese Struktur ein wenig fehlerhaft und schafft eine zirkuläre Abhängigkeit, wenn wir dies in die Praxis umsetzen. Ich habe versucht, der Architektur in diesem Link zu folgen. https://www.develop.com/onionarchitecture

Für einen bestimmten Dienst möchte ich das Ansichtsmodell übergeben, Operationen auf der Domäne basierend auf dem Ansichtsmodell ausführen und dann ein aktualisiertes Ansichtsmodell zurückgeben. Ist dieser Ansatz falsch?

Ist mein Verständnis korrekt, dass der Anwendungsdienst im Wesentlichen das Ansichtsmodell als Parameter verwendet, einige Details in der Domäne aktualisiert und das Modell anzeigt, wenn es benötigt wird, und dann ein Ansichtsmodell zurückgibt?

Oder

Hat der Anwendungsdienst nur mit C# und Datentypen Domänenmodelle als Parameter und liefert die gleichen Datentypen umgehen? Mit anderen Worten: Es werden keine Informationen in einem Ansichtsmodell abgerufen oder festgelegt. Tatsächlich kennt das View-Modell nicht.

Ich brauche nur eine Klarstellung darüber, was der beste Ansatz von einem strikten DDD-Ansatz ist.

+0

Anwendungsdienste befinden sich normalerweise nicht in der Darstellungsschicht (UI), zu diesem Zweck gibt es eine Anwendungsschicht. – plalx

+0

Erstelle ich ein anderes Projekt für diese Service-Implementierung oder stelle sie unter Services, wo meine Schnittstellen liegen? –

+1

Sie können alle Dinge in einem Projekt zusammenhalten, solange Sie für jede Komponente/jeden Layer ein Verzeichnis reservieren. – MikeSW

Antwort

4

Beantworten Sie Ihre Fragen: Ja, Sie haben Recht. Für MVC-Anwendung können Sie Ebene entwerfen, die ViewModels übernimmt und zurückgibt und mit Domain innerhalb

arbeitet Gutes Beispiel der Lösungsstruktur wird von Dino Esposito here gemacht. Ich habe mein Projekt in diese Struktur übernommen und es wurde deutlich. Meine Meinung ist, dass onion architecture für kleine oder mittlere Projekte zu kompliziert ist.