DDD, Anti Corruption Schicht, How-to?
-
05-09-2019 - |
Frage
Im Moment müssen wir eine Anwendung erstellen, die man auf einem Legacy-basiert. Code für die alte Anwendung sollte weggeworfen werden und neu geschrieben, aber da es in der Regel geht - anstatt sie neu zu schreiben, müssen wir etwas Neues auf sie stützen. Vor kurzem haben wir beschlossen, den DomainDrivenDesign Weg zu gehen. Also - Antikorruptionsschicht könnte eine Lösung für unsere Probleme. Soweit ich diese Art und Weise zu verstehen, soll es möglich sein, nach und nach der alten Anwendung neu zu schreiben.
Aber - ich kann kein gutes Beispiel finden. Ich würde schätzen, ANY Informationen.
Lösung
In meiner speziellen Implementierung wird EmployeeAccessService von einem Repository genannt. Es ist wirklich eine Fassade in die Anti-Korruptions-Schicht. Es Delegierten der EmployeeAccessAdapter. Der Adapter holt ein Objekt aus dem Legacy-Modell (die es von EmployeeAccessFacade wird), geht es dann auf die EmployeeAccessTranslator auf das Domain-Objekt in meiner Anwendung des Modell das Objekt aus dem Legacy-Modell zu verwandeln.
EmployeeAccessService
public Employee findEmployee(String empID){
return adapter.findEmployee(empID);
}
EmployeeAccessAdapter
public Employee findEmployee(String empID){
EmployeeAccessContainer container = facade.findEmployeeAccess(empID);
return translator.translate(container);
}
EmployeeAccessTranslator
public Employee translate(EmployeeAccessContainer container){
Employee emp = null;
if (container != null) {
employee = new Employee();
employee.setEmpID(idPrefix + container.getEmployeeDTO().getEmpID());
...(more complex mappings)
Andere Tipps
die DDD Buch (Domain-Driven Design: Angreifen Komplexität im Herzen von Software) von Eric Evans:
Die öffentliche Schnittstelle der Anti-Korruptions-Schicht in der Regel erscheint als eine Reihe von Diensten, obwohl gelegentlich kann es die Form Ein Unternehmen.
und etwas später
Eine Möglichkeit, die Gestaltung der Organisation von die Anticorruption Schicht als Kombination von Fassaden, Adaptoren (beides aus Gamma et al. 1995) und Übersetzer, zusammen mit der Mechanismen Kommunikations- und Transport zu sprechen in der Regel benötigt, um zwischen Systeme.
So könnten Sie Beispiele finden Sie in der vorgeschlagenen Adapter Muster suchen und Fassadenmuster .
Ich werde versuchen, paraphrasieren, was Eric Evans sagte, Ihre Anti-Korruptions-Schicht als Dienste nach außen Ihrer Schicht erscheinen. So außerhalb der Anti-Korruptions-Schicht der anderen Schichten werden nicht wissen, dass sie mit einer Anti-Korruptions-Schicht „Sprechen“ sind. Innerhalb der Schicht würden Sie Adapter und Fassaden verwenden, um Ihre bestehenden Informationsquellen zu wickeln.
Weitere Informationen über die Anti-Korruptions-Schicht: