DDD, Capa anticorrupción, ¿cómo hacerlo?


En este momento, tenemos que construir una aplicación que se basa en una heredada. El código para esa vieja aplicación debe desecharse y reescribirse, pero como suele suceder, en lugar de reescribirlo, necesitamos basar algo nuevo en él. Recientemente, decidimos ir a la ruta DomainDrivenDesign. Entonces layer la capa anticorrupción podría ser una solución para nuestros problemas. Por lo que entiendo, de esta manera debería ser posible reescribir gradualmente la aplicación antigua.

Pero't no puedo encontrar cualquier buen ejemplo. Agradecería CUALQUIER información.

Author: Svante, 2009-05-26

2 answers

En mi implementación particular, EmployeeAccessService es llamado por un Repositorio. Es realmente una fachada en la capa anticorrupción. Delega en el EmployeeAccessAdapter. El adaptador obtiene un objeto del modelo heredado (que obtiene de EmployeeAccessFacade),luego lo pasa al EmployeeAccessTranslator para transformar el objeto del modelo heredado al objeto domain en el objeto de mi aplicación modelo.

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)
 10
Author: Troy Campano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-05 20:38:54

De el DDD book (Domain-Driven Design: Tackling Complexity in the Heart of Software) por Eric Evans:

La interfaz pública de la CAPA ANTICORRUPCIÓN suele aparecer como un conjunto de SERVICIOS, aunque de vez en cuando puede tomar la forma de entidad.

Y un poco más tarde

Una forma de organizar el diseño de la CAPA ANTICORRUPCIÓN es como un combinación de FACHADAS, ADAPTADORES (ambos de Gamma et al. 1995), y traductores, junto con el mecanismos de comunicación y transporte por lo general, necesita hablar entre sistema.

Por lo tanto, puede encontrar ejemplos mirando el patrón de adaptador sugeridoy el patrón de fachada .

Trataré de parafrasear lo que dijo Eric Evans, su capa anticorrupción aparecerá como servicios en el exterior de su capa. Así que fuera de la capa anticorrupción las otras capas no sabrán que están "hablando" con una capa anticorrupción estrato. Dentro de la capa, usaría adaptadores y fachadas para envolver sus fuentes de información heredadas.

Más información sobre la capa anticorrupción:

 30
Author: Davy Landman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-04 14:31:49