DDD, NHibernate и структура проекта / наименование - PullRequest
7 голосов
/ 14 апреля 2009

Что вы рекомендуете в качестве правильной структуры проекта для решения WebForms, которое использует NHibernate и пытается внедрить некоторые концепции DDD?

Предполагая, что корневое пространство имен и имя решения - Sample

  • Sample.Domain - содержит мои доменные объекты и файлы сопоставления
  • Sample.Repositories - содержит мои репозитории и файл конфигурации соединения nhibernate
  • Sample.Business - содержит мою бизнес-логику
  • Sample.Web - актуальный проект WebForms - все Презентация

Что я забыл? Есть ли более стандартный способ назвать их?
Какие-нибудь хорошие сообщения в блоге на эту тему?

Ответы [ 4 ]

3 голосов
/ 14 апреля 2009

Кажется, что некоторые недостающие части являются центральным местом для служб, необходимых для решения и тестовых проектов. У меня обычно есть что-то вроде этого:

  • Sample.Core - сервисы и код, которые необходимо использовать в приложении
  • Sample.Data - классы доменов и интерфейсы репозитория
  • Sample.Data.NHibernate - файлы отображения, свободно конфигурируемый и т. Д. И реализации репозитория, в основном все, что специфично для слоя отображения данных
  • Sample.Services - реализации и интерфейсы служб
  • Sample.Web - веб-приложение

У меня есть соответствующее дерево тестовых проектов:

  • Тесты \ Sample.Core.Tests
  • Тесты \ Sample.Data.NHibernate.Tests
  • и т.д ...

Конечно, дерево будет более сложным в зависимости от проекта. Что касается обсуждений, ознакомьтесь с Onion Architecture . Вы также можете ознакомиться с примерами проектов в Domain-Driven Design и посмотреть, что из них можно извлечь.

2 голосов
/ 14 апреля 2009

Я сохраняю это простым и склоняюсь к разделению по пространству имен, а не по проекту, особенно в начале. Я обычно начинаю с трех проектов в решении:

  • Sample - содержит пространства имен Sample.Model, Sample.Model.Mappings и Sample.Services.
  • Sample.Tests - содержит модульные тесты, структурированные так же, как Sample.
  • Sample.Web - пользовательский интерфейс
2 голосов
/ 14 апреля 2009

Я обнаружил, что у каждого есть свои предпочтения именования, я предпочитаю:

  • Sample.Domain - доменные объекты, файлы сопоставления
  • Sample.Services - бизнес-логика и сервисы (и репозитории, хотя я видел их разделение)
  • Sample.Web - Web Stuff.
  • Sample.Migrations - Миграция данных.

Бен Шейрман также недавно писал об этом: Экспорт решений Visual Studio с помощью Factory Factory .

Он использует другую структуру, но также имеет отличный способ стандартизировать ваш шаблон.

1 голос
/ 30 ноября 2011

Вы можете увидеть, как это делается в архитектуре s # arp . Это очень прочная архитектурная основа

...