Куда относится интерфейс IRepository? - PullRequest
4 голосов
/ 23 июня 2011

В типичной трехслойной системе GUI-> DOMAIN-> DAL, где находится IRepository?Принадлежит ли он к DOMAIN или DAL.Я недостаточно знаю об ортогональности и уровнях обслуживания, чтобы понять, в чем разница. (Edit) Позвольте мне уточнить.Где (на каком уровне?) Должен быть определен интерфейс IRepository?Также в каком слое должен быть реализован IRepository?Позвольте мне прояснить еще больше ... Я пытаюсь смешать "Отдельный интерфейс" Фаулера с IRepository.Моя задача - обеспечить соблюдение правил зависимости.Если IRepository определен в DOMAIN, пакет DAL будет зависеть от DOMAIN.Иначе, если, наоборот, IRepository определен в DAL, то DOMAIN будет зависеть от DAL.Опять же, где находится IRepository?Это мое третье редактирование.

Ответы [ 3 ]

6 голосов
/ 23 июня 2011

Обычно IRepository (или, точнее, определенные интерфейсы, такие как IUserRepository) принадлежит слою DOMAIN. Репозиторий относится к слою DOMAIN и предназначен для работы с совокупными корнями. Отсюда и местоположение. Но реализация IRepository принадлежит DAL, конечно. Затем вы можете использовать IoC, чтобы склеить все вместе.

1 голос
/ 23 июня 2011

Я бы сказал, что он принадлежит DAL (Data Access Layer).Репозиторий это именно то ... репозиторий для извлечения и хранения ваших объектов.Я считаю, что считается плохой формой иметь какую-либо бизнес-логику на этом уровне, которая относится к уровням домена.И совершенно очевидно, что он не имеет ничего общего со слоем GUI.

1 голос
/ 23 июня 2011

Поскольку хранилище занимается извлечением и сохранением данных, правильным уровнем будет DAL.

...