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;}
}
Code: Select all
public interface IService
{
}
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....
}
}
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!
Mobile version