IoC и управляющие интерфейсы - PullRequest
2 голосов
/ 22 марта 2011

Скажем, у меня была библиотека бизнес-объектов, которая использовала IoC для реализации библиотеки доступа к данным. Где я должен определить интерфейс доступа к данным? К какой библиотеке это относится? Или это должно быть в отдельной библиотеке только для интерфейсов?

1 Ответ

3 голосов
/ 22 марта 2011

Я бы определил интерфейсы в бизнес-сфере. Тогда реализации интерфейсов будут находиться в библиотеке, которая ссылается на бизнес-область (и на которую ссылается любой контекст приложения, или на библиотеку IoC, на которую ссылается контекст приложения).

Тогда замена одной реализации на другую - это просто создание другой библиотеки и замена ссылки в контексте приложения.

В структуре проекта .NET это будет выглядеть примерно так:

Проект доменной логики
(ничего не указывает)
Доменные модели
Интерфейсы репозитория
Интерфейс IoC Service Locator
Репозиторий Проект
(Ссылки на проект «Доменная логика»)
Реализация репозитория
Проект IoC
(Ссылки на проект «Доменная логика»)
(Проект репозитория ссылок)
Внедрение локатора служб IoC
IoC Bootstrapping
Заявочный проект
(Ссылки на проект IoC)
(Ссылки на проект «Доменная логика»)
(Может понадобиться ссылка на проект репозитория, не уверен)
Реализует пользовательский интерфейс, который взаимодействует с моделями доменов

...