На основе последнего проекта DDD я сделал я пришел к следующему:
1 проект для вашей модели домена. (за ограниченный контекст). Поскольку в DDD важно, чтобы все говорили на одном языке/модели, сделайте это в один проект.
папки Используйте решение для разделения слоев, (как упоминалось theDmi)
Start с 1 проекта в каждом слое и рефакторинг по мере необходимости. Предполагая какую-то гибкость в вашем подходе, вам не нужно заранее планировать всю структуру проекта. Так же, как вы можете реорганизовать классы, проекты рефакторинга.Учитывайте следующее:
1) Имеет ли проект свой разум, чтобы существовать. Например, у автомобиля есть причина для существования, я могу купить его, заменить один и т. Д. У части двигателя нет причин существовать на своем собственном. Я никогда не покупаю его, если у меня нет подходящего автомобиля.
2) Избегайте предупреждения «Слишком мало классов в этом пространстве имен» из анализа кода. Если у меня есть только несколько типов автомобилей внутри каждой марки (и не имеют дело со многими отдельными частями автомобиля), поместите весь бренд в единый проект
3) Рассматривает ли иерархию одного проекта в пределах экрана (или 2) в вашем браузере решений. Как только вы начинаете поиск значков, которые, как вы знаете, существуют в рамках проекта, тогда рассмотрите разделение проекта. Например, автомобили могут быть разделены брендом.
Пусть сложность вашего решения будет возрастать по мере роста вашего проекта. Хотя я видел решения с проектом 100, я редко видел, как он работает. То же самое касается проектов с более чем 100 (может быть, немного больше для проектов) классов.
Если вы держите его между собой, то вы уверены в безопасности.
Обновление Посмотрите на кодовую карту ваших проектов. Если это говорит о значащей истории, тогда вы добры. Если он не пытается понять, что нужно изменить.
Границы разделения действительно определяются взаимозаменяемостью. Есть элементы «Продажи» и «Клиенты», которые разделяются, например, например, сам клиент. Обычно, когда я подхожу к DDD-проектам, я не беспокоюсь об этих жестких границах в начале и организую, когда я иду. Концепции DDD состоят в том, чтобы продвигать гибкость в отношении изменений, поэтому она играет в повествование о цели, так сказать. – MutantNinjaCodeMonkey
Итак, вы начинаете с создания уникальной модели, а затем итеративно рефинирируете и разделяете ее только тогда, когда это необходимо? – Franco
Да. В точку. DDD очень спроектирован так, чтобы быть итеративным в своем подходе. Шансы вы ударить его из парка в первый раз довольно тонкие. Не обязательно потому, что вы не правильно моделировали, а потому, что вы будете изучать вещи от тех, которые поставляют спецификации, которые меняют силу, когда вы идете. – MutantNinjaCodeMonkey