Unity или любой другой IoC-контейнер в этом отношении никогда не должен играть никакой роли в вашем приложении, кроме начальной загрузки приложения. И это решительно не должно входить в бизнес и уровень данных.
Таким образом, вы загружаете свое приложение в Main
, используя Unity, и после этого Unity завершается. Не позволяйте Unity касаться какой-либо другой части вашего приложения, кроме этого.
Вот подробное описание этой темы: Как я использую контейнеры Inversion of Control и последующие действия Извлечение из контейнера .
Если все размещено на переднем слое, то не весь проект зависит от переднего слоя, и если я изменю передний слой с Windows App на Web-приложение, тогда мне придется снова выполнить работу по объединению!
Нет, если вы все настроили правильно. Вам не нужен Unity для разрешения компонентов вашего приложения. Unity и другие контейнеры IoC просто очень полезные инструменты для решения этой проблемы. Вы должны сначала написать свое приложение, чтобы не нуждаться в Unity. Затем вы можете легко подключить Unity или какой-либо другой контейнер IoC, чтобы разрешить компоненты, необходимые для запуска вашего приложения.
Три R
с внедрением зависимости
- Регистрация
- Resolve
- Release
Регистрация - это когда вы настраиваете контейнер. Это происходит, когда ваше приложение запускается в Main
. Разрешение - это когда вы разрешаете корневые компоненты для вашего приложения. Это то, что заставляет основные компоненты вашего приложения работать вместе. Выпуск - это когда приложение закрывается, и вы удаляете контейнер так, чтобы компоненты были выпущены правильно. Обратите внимание, что контейнер никогда, НИКОГДА, НИКОГДА не входит в ваше приложение после этого.