На каком уровне мне следует применить внедрение зависимостей? Контроллер или домен?

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

Позвольте мне объяснить; если я получаю IUserRepository в качестве параметра для моего пользователя , я могу действовать двумя способами:

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

2) Я вводю IUserRepository в свой контроллер (скажем, Register.aspx.cs), и там я обновляю все свои объекты домена, используя зависимости, полученные из Контейнер DI .


Вчера, когда я разговаривал с моим другом, он сказал мне, что если вы получаете объекты домена из контейнера, вы теряете его управление жизненным циклом, поскольку контейнер управляет им за вас, он означало, что это могло быть подвержено ошибкам при работе с большими файлами конфигурации xml. Мнение, которое не согласуется, поскольку у вас могут быть тесты, которые проходят через каждый объект домена в сборке, а затем спрашивают контейнер, является ли это синглтоном, областью запроса, областью сеанса или областью приложения. Это не удастся, если хоть одно из них истинно. Способ гарантировать, что такого рода проблемы не возникнут.

Я более склонен использовать доменный подход (1), так как я вижу большую экономию на повторяющихся строках кода на уровне контроллера (конечно, в XML-файле будет больше строк).

Еще один момент, мой друг. Роза заключалась в том, что представьте, что по какой-либо причине вы обязаны перейти с контейнера di A на контейнер B, и скажите, что B не поддерживает внедрение конструктора (что имеет место для контейнера шва , Java, который манипулирует BC или только выполнять свою задачу через установку установщика), ну, его точка зрения заключается в том, что, если у меня есть весь мой код на уровне контроллера, я могу плавно реорганизовать свой код, так как я получаю доступ к таким инструментам, как Auto-Refactoring и автозаполнение, которое недоступно при работе с файлами XML.

Я застрял на этом этапе, так как мне нужно сразу принять решение.

Какой подход я должен использовать в своей архитектуре? Есть ли другие способы мышления ???

Вы, ребята, действительно думаете, что это актуальная проблема, мне стоит беспокоиться об этом?

6
задан Jacob 12 April 2011 в 20:37
поделиться