Где основные отличия сотрудничества в доменно-управляемом дизайне? - PullRequest
0 голосов
/ 26 марта 2020

Я прочитал много книг и целых rnet источников о сотрудничестве в DDD, но различия мне не очень понятны. Они звучат очень похоже, особенно когда вы программируете микросервис.

Партнерство и конформист: В конформистском BC1 (ограниченный контекст) направляет DM1 (модель предметной области) в BC2. А BC2 просто копирует DM1 и должен с ним работать. В Партнерстве у вас также есть идентичный DM из двух BC. Оба используют одну и ту же модель предметной области. Итак, в чём же разница?

Клиент / поставщик и защита от коррупции: В отношении клиент / поставщик BC1 направляет часть DM1, которая необходима BC2 для DM2. Таким образом, BC2 принимает значения DM1 и использует значения в своем DM2. Таким образом, DM1 будет отображен в DM2. Но это именно то, что делает антикоррупционный слой. Значит ли это, что каждое отношение «Клиент / Отношения» имеет также антикоррупционный уровень?

Пример

компания электронной коммерции: Каталог BC1 -> Upstream --- S / C --- Вниз по течению -> BC2 Заказ

BC1 Каталог имеет объекты Пользователь и Элемент . Также Агрегат Корзина (Пользователь 1: n элементов). Агрегат корзины будет отправлен на BC2 Order

{
    "data": {
        "Cart": {
            "User": {
                "UID": "00005113",
                "name": "Winter",
                "surname": "Klaus"
            },
            "Items": [
                {
                    "PID": "55000123",
                    "Description": "PC Game",
                    "Price": "35.99"
                },
                {
                    "PID": "21000999",
                    "Description": "Pillow",
                    "Price": "12.00"
                },
                {
                    "PID": "21000999",
                    "Description": "Pillow",
                    "Price": "12.00"
                }
            ]
        }
    }
}

BC2 Order имеет сущность Customer , объект значения OrderPosition и совокупный Order (Customer 1: n OrderPosition). В вопросах программирования вам теперь необходимо отобразить Items в OrderPosition и User в Заказчик . Этот процесс картирования - именно то, что делает антикоррупционный слой. Но это то же самое, что и постоянные отношения между клиентом и поставщиком Возьмите элементы DM1 и переведите их в DM2.

...