Трехуровневая архитектура: должен ли уровень данных зависеть от уровня домена или наоборот? - PullRequest
2 голосов
/ 12 мая 2010

Оба варианта верны? Один из них лучше другого? В каких ситуациях? Тяжелее одного достичь, чем другого?

Ответы [ 2 ]

1 голос
/ 12 мая 2010

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

Что это значит?

Уровень данных вызывающе не должен зависеть от уровня домена.

Уровень домена, скорее всего, будет использовать объекты данных, но в идеале вы должны делать это путем внедрения зависимостей. Один из способов сделать это - использовать интерфейсы и ссылаться на интерфейсы только во время компиляции. Во время выполнения предоставьте конкретную реализацию для этих интерфейсов через контейнер IoC, такой как Structure Map или Unity.

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

0 голосов
/ 12 мая 2010

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

Обоснование:

  • Вы хотите сохранить гибкость для изменения бизнес-логики, не оказывая ненужного влияния на данные
  • Уровень данных будет намного проще и менее подвержен ошибкам, если вы сможете сделать его независимым от решений бизнес-логики
  • Уровень домена обычно является вызывающей стороной уровня данных, поэтому нет необходимости создавать зависимость наоборот

Это на самом деле весьма аналогично тому, как уровень домена должен иметь минимальные зависимости от уровня представления (хотя на практике это может быть трудно достичь).

...