|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVosttТы тоже не в курсе что такое DI и как он работает? ты меня с топискартером перепутал - выдохни ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:26 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
ИзопропилhVosttТы тоже не в курсе что такое DI и как он работает? ты меня с топискартером перепутал - выдохни Ну а чего ты придумываешь про какую-то зависимость от контейнера по всему коду? Не знаешь как DI устроен? В этом и суть, что зависимости от контейнера нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:30 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVosttСначала изучи вопрос, литературы и информации в сети дофига. https://www.google.ru/?gfe_rd=cr&ei=FFrVVrzwJoTAtAGIqJCQBA&gws_rd=ssl#q=dependency injection C#&safe=off&tbs=lr:lang_1ru&lr=lang_ru Ну это то я уже давно изучил. Использую Autofac. Читал книгу Марка Сиимана. Так, что можем считать данный шаг сделан. Переходим к следующему - изучению примера проекта :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:34 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVostt, особенно хотелось бы глянуть, как у вас там все "тестируемое" благодаря такому подходу. Нет, мне правда очень очень интересно ! А то я может прозябаю в каменном веке, пока вы там уже бороздите просторы большого театра. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:35 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVosttНу а чего ты придумываешь про какую-то зависимость от контейнера по всему коду? Не знаешь как DI устроен? В этом и суть, что зависимости от контейнера нет это не я , а топикстартер придумал. Да ещё объявил общепринятым подходом. внимательно прочитай мой мой первый пост в этом топике. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:37 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
ProBiotekкак у вас там все "тестируемое" благодаря такому подходу очень просто: ServiceLocator это завуалированный new со всеми вытекающими ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:40 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Изопропил, Так как надо тогда ? Покажите уже пример проектика. Я считал, что использовать IDependencyResolver.Current это норма. Так вроде и работают с Аутофаком. Может я что-то упустил. Покажите, научите меня. Не дайте прозябать в невежестве. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:41 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Изопропилэто не я , а топикстартер придумал. Да ещё объявил общепринятым подходом. внимательно прочитай мой мой первый пост в этом топике. А, тогды сорри ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:44 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
ProBiotekИли мне нужно через 10 уровней тянуть ILifetimeScope, чтобы использовать его только на 11м ?Ну инжектируй ILifetimeScope так же, как ты инжектируешь другие сервисы. зы: Попробуй поработать с TransactionScope в паре с async / await. Расскажешь потом... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:44 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVostt, Спасибо за ответы ... вот теория IoC (Inversion of control/инверсия зависимостей) реализуется с помощью: 1) DI (Dependency Injection/инъекция зависимости) через: - 1. A constructor injection; - 2. Parameter injection; - 3. A setter injection; - 4. An interface injection 2) IoC container через: Castle, Ninject, Autofac и др. 3) Service Locator (не путать с контейнером, ps. пункт 2, хотя очень похожи) ок с пунктом 3 понятно ... зло. я правильно понял IDependencyResolver = Service Locator ? правильно понимаю что хорошим тоном будет использования DI + IoC container ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:45 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
ИзопропилhVosttпропущено... Ты тоже тока из берлоги вчера вылез? а что, общепринятым нынче является сеять зависимость от контейнера по всему говнокоду?Обёртка вокруг контейнера пишется за 5 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:45 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVosttЛегко. В ASP.NET MVC контроллеры создаются из контейнера, в конструкторе контроллера перечисляются интерфейсы, которые нужны ему для работы, и контейнер их туда подставляет. И так далее по цепочке. Нигде не нужен статический резолвер, нигде не нужно обращаться к контейнеру напрямую.Если только не захочется создать вложенный LifetimeScope. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:46 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
ProBiotekНу это то я уже давно изучил. Использую Autofac. Читал книгу Марка Сиимана. Не похоже как-то. Суть IoC — уменьшить количество зависимостей. А ты не только не уменьшаешь, но ещё и добавляешь зависимость от контейнера. Т.е. весь твой код должен ЗНАТЬ про какой-то резолвер, чтобы получать через него зависимости. Потом, все твои компоненты ЗНАЮТ про резолвер и обращаются к нему. Теперь каждый компонент в любом месте может получить что угодно внутри реализации и ты об этом даже не узнаешь. Т.е. любая часть кода у тебя обладает возможностью GOD MODE, делаю что хочу, когда хочу, и где хочу. Логически подумай, нет ли здесь проблемы? Если умом не доходишь, тогда продолжай читать литературу до просветления. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:48 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Артем GhVostt, Спасибо за ответы ... вот теория IoC (Inversion of control/инверсия зависимостей) реализуется с помощью: 1) DI (Dependency Injection/инъекция зависимости) через: - 1. A constructor injection; - 2. Parameter injection; - 3. A setter injection; - 4. An interface injection 2) IoC container через: Castle, Ninject, Autofac и др. 3) Service Locator (не путать с контейнером, ps. пункт 2, хотя очень похожи) ок с пунктом 3 понятно ... зло. я правильно понял IDependencyResolver = Service Locator ? правильно понимаю что хорошим тоном будет использования DI + IoC container ? тут нет "абсолютного зла/добра". если хочешь получить действительно слабосвязную архитектуру (а зачем?), то однозначно кто-то третий "со стороны" должен резолвить зависимости, иначе это все полумеры (а может они сгодятся?). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:49 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Алексей КОбёртка вокруг контейнера пишется за 5 минут. Говно в своей обёртке. Ок ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:49 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Алексей КЕсли только не захочется создать вложенный LifetimeScope. Все подробности реализации упаковываются в архитектурные фабрики. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:50 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVostt, С тем что резолвер использовать не нужно ... это понятно. Получается завязка. Нужен живой пример. Пример с контроллером ниже он правильный? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:54 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVosttProBiotekНу это то я уже давно изучил. Использую Autofac. Читал книгу Марка Сиимана. Не похоже как-то. Суть IoC — уменьшить количество зависимостей. А ты не только не уменьшаешь, но ещё и добавляешь зависимость от контейнера. Т.е. весь твой код должен ЗНАТЬ про какой-то резолвер, чтобы получать через него зависимости. Потом, все твои компоненты ЗНАЮТ про резолвер и обращаются к нему. Теперь каждый компонент в любом месте может получить что угодно внутри реализации и ты об этом даже не узнаешь. Т.е. любая часть кода у тебя обладает возможностью GOD MODE, делаю что хочу, когда хочу, и где хочу. Логически подумай, нет ли здесь проблемы? Если умом не доходишь, тогда продолжай читать литературу до просветления. Ну а как надо? Теорию я прочитал. Научили бы, чем шпынять. Это все равно что сказать неучу "ты не понимаешь, читай книги пока сам не изобретешь". Ну ок, я согласен с тем, что Фабрики ограничат полный доступ к контейнеру. Хотя смотрел пример MVC проектов, где этим не заморачиваются. Билдят один контейнер и пихают его как резолвер. И потом используют по всему проекту. Так покажите пример как нужно... Хочу правильно делать, а не как сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:55 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Артем GhVostt, С тем что резолвер использовать не нужно ... это понятно. Получается завязка. Нужен живой пример. Пример с контроллером ниже он правильный? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
правильный ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:56 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Вот вам всем. Официальная документация Autofac. http://docs.autofac.org/en/latest/integration/mvc.html Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Что вы меня то ругаете. Я делал как указано в доке. Если вы говорите, что этот подход в корне не верный. Так покажите верный. Плиз. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:57 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Артем GНужен живой пример. Пример с контроллером ниже он правильный? В контексте обсуждения: правильный. Контроллер зависит от конкретных компонентов и он их как-то получает (через DI), но подробностей о том как он получает свои зависимости ему неизвестны. Всё верно. Тут глядя на сигнатуру класса мы уже знаем, что может делать этот контроллер, а что не может. Очевидно, что он не может отправить SMS, или получить прямой доступ к базе данных. И это великолепно! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 12:57 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
ProBiotekЧто вы меня то ругаете. Я делал как указано в доке. Если вы говорите, что этот подход в корне не верный. Так покажите верный. Плиз. Ну и? Всё правильно сделал. Теперь можно получать зависимости вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 13:14 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVostt, Ну я понял. Вы просто против того, чтобы откуда угодно можно было получить контейнер и делать с ним все что хочешь. Для чего инъектировать в классы уже зарезолвленные объекты - не давая им повода самим резолвить. Ну ок. Мне просто, чаще, лень делать лишние прослойки :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 13:19 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
hVostt, А как в вашем подходе быть с ILifetimeScope ? Положим в MVC все еще терпимо - там в Autofac создается ILifetimeScope на каждый запрос. А как быть в обычных WinForms (с которых я и начал тему) ? Ведь если там не контролировать создание ILifetimeScope явно, то это приведет к тому, что через 10 часов работы программы - будет висеть гектар созданных объектов, которые не будут удалены до завершения программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 13:23 |
|
Autofac как в любой точке программы получить резолвер ?
|
|||
---|---|---|---|
#18+
Владимир Путин-ЛенинАртем GhVostt, С тем что резолвер использовать не нужно ... это понятно. Получается завязка. Нужен живой пример. Пример с контроллером ниже он правильный? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
правильный ОК с DI разобрались ... это правильно Теперь IoC Container... Подскажите что Я установил 3 пакета ... Код: xml 1. 2. 3.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 13:24 |
|
|
start [/forum/topic.php?fid=20&msg=39182473&tid=1400755]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 167ms |
0 / 0 |