Имам приложение WinForms, което се надявам да преработя, за да използвам DDD архитектура. Първо, опитвам се наистина да обмисля самата архитектура, имам книгата на Евънс и книгата на Върнън и намирам, че се боря с три сценария, с които бих се сблъскал по-скоро веднага в кандидатурата си. Страхувам се, че може да прекаля с мисленето или да бъда твърде стриктен в моя концептуален процес на проектиране.
1.) Използвайки пример, предоставен в урока на Pluralsight за DDD, лекторът отбеляза, че различните ограничени контексти трябва да бъдат представени чрез собствено решение. Въпреки това, ако имам приложение winforms, което не е ориентирано към услуги (това в крайна сметка ще се промени и голяма част от този въпрос става спорен), това не изглежда осъществимо. Следователно работя при предположението, че ще ги разделя на различни проекти/пространства от имена, като внимавам, че няма взаимозависимости. Това ли е правилният начин да мислим за това или пропускам нещо очевидно?
2.) Имам потребителски интерфейс за навигация, който стартира други модули/прозорци, които биха принадлежали към отделни презентационни слоеве на различни ограничени контексти. Помислете за първия прозорец, който ще бъде отворен, когато стартирате ERP приложение. Тъй като това не се вписва точно в нито един конкретен BC, как нещо подобно ще бъде правилно приложено. Това трябва ли да попада в споделено ядро?
3.) Имам ограничен контекст за Управление на длъжности и ограничен контекст за рейтинг/разходи. Част от бизнес процеса е, че когато се създава задание, неговите детайли се оценяват. Това има свой собствен потребителски интерфейс и т.н., което ми се струва доста добре, че тази презентация все още адекватно попада в контекста на управлението на работата. Въпреки това, действителният процес на оценка на тези подробности определено не трябва. Не съм напълно сигурен как да комуникирам с контекста на рейтинг/цена, тъй като bc трябва да се държат отделно един от друг. Осъзнавам, че мога да изпращам съобщения, но това изглежда прекалено много за неразпространено приложение. Всеки BC би могъл да хоства самостоятелно някакъв вид API, но това отново изглежда прекалено, въпреки че това би подготвило екипа добре за мигриране към разпределена архитектура по-късно. И накрая, последната ми идея е да имам някаква споделена зависимост, която е нещо като магазин за събития. Не знам дали това е същото като събитията в домейна, тъй като те изглежда имат отделна грижа сами по себе си. И така, това означава ли, че това също ще попадне под споделено ядро или някакъв друг тип решение?
Благодаря ви предварително.