Луковая архитектура и регистрация зависимостей в DI-контейнере - PullRequest
3 голосов
/ 17 октября 2011

Я читал об архитектуре Onion, и у меня есть простой вопрос о том, как должны быть организованы зависимости сборки, чтобы контейнер DI мог все соединять.

Предположим, что очень простое решение имеет следующую структуру:

UI => BL <= DAL </p>

Итак, пользовательский интерфейс и DAL ссылаются на BL, но не знают друг друга.

Также предположим, что BL имеет интерфейс с именем IDatabaseService, который реализован в DAL с помощью DALDatabaseService.

Контейнер (предположительно) будет настроен в точке входа пользовательского интерфейса. Поскольку пользовательский интерфейс не знает о DAL, как он может зарегистрировать IDatabaseService для преобразования в DALDatabaseService?

1 Ответ

2 голосов
/ 17 октября 2011

В большинстве случаев это делается путем информирования контейнера о DAL (через конфигурацию) и размещения сборок DAL в том же каталоге, что и пользовательский интерфейс или в другом известном месте (GAC и т. Д.). В Spring.NET вы добавляете типы DAL в конфигурационный файл Spring. В Castle Windsor вы можете включить класс, реализующий IWindsorInstaller, в каждую библиотеку DLL, типы которой должны быть зарегистрированы в контейнере IoC, и в пользовательском интерфейсе указать контейнеру найти все компоненты в определенном каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...