Я прочитал много книг и целых 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.