Saubere Architektur – DTO-PlatzC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Saubere Architektur – DTO-Platz

Post by Anonymous »

Derzeit versuche ich, Legacy-Anwendungen mithilfe von Clean Architecture auf einige APIs zu migrieren.
Bis jetzt konnte ich Änderungen durchgehen, aber jedes Mal, wenn ich auf ein DTO stoße, verstehe ich nicht, wie ich es in der sauberen Architektur platzieren soll.
Mit DTO beziehe ich mich auf: Objekt, das mehrere Eigenschaften von Domänenentitäten kombiniert enthält. Ich verwende DTOs, weil die Datenbank immer noch im „Legacy-Format“ ist, die API jedoch unterschiedliche Antwortformate über mehrere Systeme hinweg verfügbar machen muss.
Angenommen, ich habe die folgende Struktur:
Domäne:

Code: Select all

public class EntityA
{
public string Prop1{get; set;}
}
public class EntityB
{
public string Prop2{get; set;}
}
Dann habe ich eine Schnittstelle zu einem Dienst wie folgt:

Code: Select all

public interface IService
{
}
In der Anwendungsschicht (Anwendungsfälle) habe ich die Implementierung der in der Domäne beschriebenen Dienste und das DTO selbst:

Code: Select all

public class DTO
{
public string Prop1{get; set;}
public string Prop2{get; set;}
}

public class Service : IService
{
public IEnumerable RetrieveDto()
{
return new DTO()//Construct DTO....
}
}
Und hier beginnt mein Problem.
Ich muss die Domänendienstschnittstelle ändern, um das DTO zurückzugeben. Dadurch wird ein Zirkelverweis generiert, und das ist meiner Meinung nach nicht in Ordnung.
Ich habe versucht, eine abstrakte DTO-Klasse in der Domäne zu erstellen und von dieser zu erben, um den Verweis von der Domäne auf die Anwendung zu vermeiden. Aber ich bin mir nicht ganz sicher, ob dies eine Lösung sein sollte, da DTOs nur Objekte sind, die Daten speichern, ich habe nichts in dieser abstrakten Klasse.
Derzeit werden der Mapper und das DTO in der Anwendung platziert, weil ich von der Anwendung aus auf die Infrastruktur für Repositorys zugreife und hier die Entität einem DTO zuordne.
Meine Frage lautet also: Verstehe ich hier etwas falsch? Wo sollten DTO-Plätze richtig sein?
Vielen Dank!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post