Привет, ребята, я хотел бы услышать от вас, каковы основные преимущества и недостатки применения внедрения зависимостей на уровне controller и / или domain level.
Позвольте мне объяснить; если я получу IUserRepository в качестве параметра для моего пользователя , я могу действовать двумя способами:
1) Я внедряю IUserRepository непосредственно в мой объект домена, затем я использую пользователя на уровне контроллера, не обновляя объекты, это означает, что я получаю их из контейнера DI .
2) Я внедряю IUserRepository на свой контроллер (скажем, Register.aspx.cs), и там я создаю все свои доменные объекты, используя зависимости, которые пришли из контейнера DI .
Вчера, когда я разговаривал с моим другом, он сказал мне, что если вы получаете свои доменные объекты из контейнера, вы теряете контроль над его жизненным циклом, так как контейнер управляет им для вас, он имел в виду, что это может быть ошибка склонен при работе с большими файлами конфигурации xml. Мнение, которое не совпадает, поскольку у вас могут быть тесты, которые циклически проходят по каждому объекту домена в сборке и затем спрашивают контейнер, является ли это единичным объектом, областью запроса, областью сеанса или областью приложения. Это терпит неудачу, если любой из них верен. Способ обеспечить, чтобы такого рода проблемы не возникали.
Я с большей вероятностью использовал доменный подход (1), так как вижу значительную экономию на повторяющихся строках кода на уровне контроллера (конечно, в XML-файле будет больше строк).
Еще один момент, который поднял мой друг Роуз, заключался в том, что по какой-то причине вы обязаны перейти с контейнера di на A и сказать, что B не поддерживает инъекцию конструктора (как в случае контейнера со швом , Java, которая манипулирует BC или выполняет свою задачу только посредством внедрения сеттера), хорошо, его смысл в том, что, если у меня весь мой код на уровне контроллера, я могу плавно реорганизовать свой код, как я получаю доступ к таким инструментам, как авторефакторинг и автозаполнение, которые недоступны при работе с файлами XML.
Я застрял в этой точке, так как я должен был принять решение немедленно.
Какой подход я должен использовать мою архитектуру?
Есть ли другие способы мышления ???
Вы, ребята, действительно думаете, что это актуальная проблема, стоит ли беспокоиться об этом?