Как реализовать DDD с C # .NET 4 - PullRequest
       31

Как реализовать DDD с C # .NET 4

2 голосов
/ 17 февраля 2011

Набирая это, я понимаю, что это очень сложно объяснить. Мои извинения, если это неразличимо. Моя конечная цель состоит в том, чтобы кто-то с большим опытом посмотрел на то, как я структурирую свое решение, и предоставил отзыв о том, является ли это приемлемой установкой.

В настоящее время я управляю несколькими небольшими проектами поддержки, которые слабо связаны друг с другом. Они по всей доске. Я хочу создать единое приложение INTERNAL-WEB для управления этими проектами. Мне удалось сгруппировать все концептуально в три области. ДОСТАВКА, ВНЕШНИЕ-ВЕБ, ВНУТРЕННИЕ-ВЕБ. С точки зрения бизнеса, SHIPPING отправляет виджеты клиентам, которые затем подключаются к EXTERNAL-WEB. Проблема в том, что определение WIDGET и CUSTOMER в SHIPPING отличается от определения EXTERNAL-WEB, поэтому мне нужно разделить их на две части.

Подумав, я пришел к выводу, что лучший способ организовать это в VS2010 - это создать решение, а затем вложить в него несколько проектов. Я предполагаю макет, подобный следующему.

SOLUTION
---SOLUTION.SHIPPING.Domain             (Classes)
---SOLUTION.SHIPPING.Infrastructure     (Classes)
---SOLUTION.EXTERNAL-WEB.Domain         (Classes)
---SOLUTION.EXTERNAL-WEB.Infrastructure (Classes)
---SOLUTION.INTERNAL-WEB.Domain         (Classes)
---SOLUTION.INTERNAL-WEB.Infrastructure (Classes)
---SOLUTION.WebUI                       (MVC3 Project)

Мне придется добавить дополнительные проекты для контекстных карт и антикоррупционных слоев, чтобы обеспечить связь между доменами, но это базовый макет.

Это умный или глупый?

Спасибо, Грег

1 Ответ

2 голосов
/ 17 февраля 2011

То, как вы настроили свое решение, не имеет ничего общего с DDD и не повлияет на успех вашего проекта. Хороший код, который организован плохо, намного лучше, чем плохой код, который организован хорошо.

Проекты связаны с производительностью и сложностью. Прямо сейчас вы мучаетесь из-за деталей, которые на самом деле не имеют значения.

Чем больше проектов, тем меньше время компиляции, что увеличивает смещение контекста. Попробуйте прочитать книгу и сделать паузу на 30 секунд на каждой странице.

Новые проекты должны создаваться либо для развертывания, либо для совместного использования кода. В качестве веских причин можно указать, является ли домен общим для двух фронтов или если у вас чудовищная стратегия развертывания (1000 компьютеров), а мегабайты по-прежнему важны.

Как только вы упростите правила для новых проектов, решения начнут приниматься естественным образом по мере развития кодовой базы и появления новых требований. По сути, вы принимаете физические решения в самый последний момент. Это хорошо. Не зацикливайтесь на этом, когда у вас есть функции и код для написания!


Не уверен, почему этот вопрос помечен как MVC, но кодовая база MVC довольно скудна, имея только 1 основной проект. Компилируется быстро и очень легко ориентироваться.

...