У меня есть приложение WinForms, которое я надеюсь провести рефакторинг для использования архитектуры DDD. Во-первых, я пытаюсь по-настоящему погрузиться в саму архитектуру, у меня есть книга Эванса и книга Вернона, и я обнаруживаю, что борюсь с тремя сценариями, с которыми я бы сразу столкнулся в своем приложении. Боюсь, что я слишком много обдумываю или слишком строг в процессе концептуального проектирования.
1.) Используя пример из учебника Pluralsight по DDD, докладчик подчеркнул, что различные ограниченные контексты должны быть представлены их собственным решением. Однако, если у меня есть приложение winforms, которое не ориентировано на сервисы (со временем это изменится, и многие из этих вопросов станут спорными), это не представляется возможным. Поэтому я исхожу из предположения, что я буду разделять их на разные проекты / пространства имен, проявляя бдительность, чтобы не было взаимозависимостей. Это правильный способ думать об этом или я упускаю что-то очевидное?
2.) У меня есть пользовательский интерфейс навигации, который запускает другие модули / окна, которые принадлежат отдельным уровням представления в разных ограниченных контекстах. Подумайте о первом окне, которое откроется, когда вы запустите приложение ERP. Поскольку это не совсем вписывается в какой-либо конкретный BC, как можно было бы правильно реализовать что-то подобное. Должно ли это относиться к общему ядру?
3.) У меня есть ограниченный контекст управления заданиями и ограниченный контекст рейтинга / стоимости. Это часть бизнес-процесса, когда при создании задания оцениваются его детали. У него есть собственный пользовательский интерфейс и т. Д., И я считаю, что эта презентация адекватно попадает в контекст управления заданиями. Однако в фактическом процессе рейтинга этих деталей точно не должно быть. Я не совсем уверен, как взаимодействовать с контекстом рейтинга / стоимости, поскольку bc должны храниться отдельно друг от друга. Я понимаю, что могу обмениваться сообщениями, но это кажется излишним для нераспределенного приложения. Каждый BC может иметь возможность самостоятельно размещать какой-либо API, но, опять же, это кажется излишним, хотя это могло бы хорошо подготовить команду к переходу на распределенную архитектуру в дальнейшем. Наконец, моя последняя идея - иметь некую общую зависимость, которая является своего рода хранилищем событий. Я не знаю, совпадает ли это с событиями домена, поскольку они, кажется, вызывают отдельную озабоченность сами по себе. Итак, означает ли это, что это также подпадает под общее ядро или какой-либо другой тип решения?
Заранее спасибо.