Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУА DependencyResolver может делать еще и так: всё! я теперь понял что в книжке имелось в виду, что DependencyResolver очень часто путают с DI из-за приведённой тобой возможности. да, такое поведение сильно размывает применимое к нему понятие Service Locator. но всё же. это SL. основная причина этому объяснению — это то, что в MVC нет нативной возможности зарегистрировать типы Outside (принцип внешней управляемой зависимости). всей информацией он должен обладать, посему это не более чем шикарная возможность для установки своего полноценного контейнера DI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:16 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttSL является паттерном, реализующим IoC. всё правильно. только IoC это не паттерн. не может быть паттерна. ты ещё скажи, что "разделяй и властвуй" — тоже паттерн. MS пишет, что паттерн. Да какая разница, я не занимаюсь буквоедством, в отличие от тебя, - для меня всё это практики, паттерны, подходы. Не будь похож на прыщавого студента, который цепляется к словам, повышая свою самооценку. Смешно, ей богу hVosttэто тебя заносит... если я в качестве реализации IControllerFactory подсуну класс, размечающий и форматирующий харды, это что получается, IControllerFactory ещё и офигенная утилита для управления дисками?? Я тебе сказал, как с помощью IControllerFactory решить задачу инъекции, если она тебе так нужна. Причем тут харды? hVosttне неси ерунду. признай что глупость сказал опростоволосился! А ты забавный Читай буквари, хватит писать глупости на форуме. Вчера ты тоже с пеной у рта мне доказывал, что лямбда в LINQ компилируется в... Expression. Пришлось откровенно над тобой поглумиться и убить твой моск об документацию :) Не разжигай (с) hVosttМСУЯ тебе дал ссылку на рецепт. Изучи нативные возможности MVC :) ты мне дал ссылку на кастомную реализацию DI. и ещё хватает смелости называть это нативной реализацией?? ну харе уже чушь-то пороть! 1. Фабрика - это не DI. 2. Ты сам вот тут ляпнул, что: hVosttНажми Ctrl-F и вставь "No parameterless constructor defined for this object" не дошло? без Unity/Autofac/Ninject ты не получишь никакого DI. даже близко. А я тебе без Unity/Autofac/Ninject решил задачу. Как мне это удалось? Элементарно, Ватсон - я колдую по ночам hVosttв чистом ASP.NET MVC нет никакого DI. Есть, DependencyResolver. Не такой унылый как локатор, не такой крутой как Unity/Autofac/Ninject. Но таки это DI контейнер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:17 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУЛично я в MVC не использую инжектинг через фабрику - у меня в базовом контроллере поднимаются с помощью Lazy через инверсию все репозитории (контексты) и доступны в унаследованных контроллерах. а как же инжектинг в фильтры? как же инверсия на аспектах? инжектинг во вью? наследование хорошо для разработки библиотек, но для конечных приложений больше подходит чистый DI и аггрегация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:18 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУА я тебе без Unity/Autofac/Ninject решил задачу. Как мне это удалось? Элементарно, Ватсон - я колдую по ночам ты вместо U/A/N подсунул CustomControllerFabric. там еще и не такую магию можно делать. но ж даже не смешно. где твоя нативность? нативность, это создал проект, зарегал типы, определил в своём контроллере зависимость и получил результат. но в твоём случае, надо ещё полезть и произвести замену родной фабрики на свою. не по правилам играешь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:20 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttМСУА DependencyResolver может делать еще и так: всё! я теперь понял что в книжке имелось в виду, что DependencyResolver очень часто путают с DI из-за приведённой тобой возможности. да, такое поведение сильно размывает применимое к нему понятие Service Locator. Ну наконец-то!!! hVosttно всё же. это SL. Вот же ты вредный hVosttполноценного контейнера DI. Отлично сказал. А теперь озвучь пункты полноценности DI. И не забудь уточнить, кто именно определил эти пункты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:20 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttа как же инжектинг в фильтры? как же инверсия на аспектах? инжектинг во вью Точно так же, в реализации фильтра я честно резолвлюсь. Вью у меня получает всё из вью модели. И да, по поводу аспектов - скажи пожалуйста, есть ли какая-либо разница, например, между соединением транзитного Меркурия с натальным Марсом и транзитного Марса с натальным Меркурием? То есть, имеется в виду инверсия планет. Или транзитного Нептуна к натальному Плутону и транзитного Плутона к натальному Нептуну. hVosttнаследование хорошо для разработки библиотек, но для конечных приложений больше подходит чистый DI и аггрегация. А ты смешной :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:23 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttты вместо U/A/N подсунул CustomControllerFabric. там еще и не такую магию можно делать. но ж даже не смешно. где твоя нативность? нативность, это создал проект, зарегал типы, определил в своём контроллере зависимость и получил результат. Хватит писать глупости. Чем выше требования, тем больше функционала. То есть обсуждение имеет место для конкретного функционла, я уже об этом писал. Мне вполне устроить мотоцикл, а не самосвал. Мысль понятна? hVosttно в твоём случае, надо ещё полезть и произвести замену родной фабрики на свою. не по правилам играешь! Я тебе решил задачу. Если ты хочешь этот функционал в DI, возьми DI помощнее. Это же не значит, что если в автофаке есть что-то, чего нету в юнити, значит юнити на DI? Тут тоже так. MS наделили DependencyResolver минимальным набором, которого хватает 99% разработчикам. Для чего-то более серьезного - бери самосвал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:27 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУОтлично сказал. А теперь озвучь пункты полноценности DI. И не забудь уточнить, кто именно определил эти пункты. да очень просто. DI-контейнер инжектирует зависимости через открытый конструктор или через открытые свойства. и он инжектирует все зависимости неограниченно в глубину, иначе смысл в DI теряется напрочь. должна быть точка регистрации всех зависимостей таким образом, чтобы она происходила снаружи (каждый подключаемый модуль сам регистрирует все свои типы). контейнер ни о каких типах ничего знать не должен. я незнаю почему ты так снисходительно относишься к Lifetime Scope, но без управления жизненным циклом объектов DI-контейнер что безрукий кастрат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:28 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУА ты смешной :) почитай уважаемых людей. честно говоря истеричные призывы все запихивать иерархию классов я встречал в книжках начала 2000-ых. сейчас что Рихтер, что Фаулер призывает крепко задуматься, прежде чем использовать в архитектуре приложения наследование. получается не я смешной.. не сам же я это выдумал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:30 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУХватит писать глупости. Чем выше требования, тем больше функционала. То есть обсуждение имеет место для конкретного функционла, я уже об этом писал. Мне вполне устроить мотоцикл, а не самосвал. Мысль понятна? я тебе не о функционале говорю. ты писал "нативно" а сейчас уже отбрехиваешься от своих слов? не? МСУтебе решил задачу. Если ты хочешь этот функционал в DI, возьми DI помощнее. Это же не значит, что если в автофаке есть что-то, чего нету в юнити, значит юнити на DI? Тут тоже так. MS наделили DependencyResolver минимальным набором, которого хватает 99% разработчикам. Для чего-то более серьезного - бери самосвал. чиорт подиери. при чем тут решение задачи. ты говорил в MVC есть DI. я тебя спросил, покажи мне его. ты написал свой, воткнул его и рад стараться. плевать что там, самокат или самосвал. в родном MVC нет ни того, ни дрогого. но есть отличная трасса (читай, поддержка ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:33 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttда очень просто. DI-контейнер инжектирует зависимости через открытый конструктор или через открытые свойства. и он инжектирует все зависимости неограниченно в глубину, иначе смысл в DI теряется напрочь. А локатор только ищет. Я же тебе объяснил вот тут: 15173084 Но DependencyResolver может иметь: 1. Свои сопоставления через реализацию IDependencyResolver 2. SetResolver Эти два пункта уже не относятся к сервис локатору. Следовательно, это уже не локатор. Давай так: это контейнер без возможности инжектировать напрямую (инжектировать будем через фабрику, пусть это будет моя мальенькая хитрось) Тем более эта возможность многим реально не нужна. hVosttдолжна быть точка регистрации всех зависимостей таким образом, чтобы она происходила снаружи (каждый подключаемый модуль сам регистрирует все свои типы). контейнер ни о каких типах ничего знать не должен. Эта точка есть, она реализуется в реализации IDependencyResolver. Регистриуется через SetResolver. И доступна для поиска. И всё это может штатный DependencyResolver. Таки совсем не локатор, согласен? hVosttя незнаю почему ты так снисходительно относишься к Lifetime Scope, но без управления жизненным циклом объектов DI-контейнер что безрукий кастрат. Не передергивай, я не против управления жизнью. Но только тогда, когда это будет требовать задача. Когда такая задача будет, я возьму это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:37 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttМСУА ты смешной :) почитай уважаемых людей. честно говоря истеричные призывы все запихивать иерархию классов я встречал в книжках начала 2000-ых. сейчас что Рихтер, что Фаулер призывает крепко задуматься, прежде чем использовать в архитектуре приложения наследование. получается не я смешной.. не сам же я это выдумал. Я, в отличие от тебя, умею отделять шелуху от орехов. Наследование было и будет всегда сильным инструментом. В руках же мартышки это будет гранатой, которую лучше не брать. Давай не будем касаться этой темы. hVosttя тебе не о функционале говорю. ты писал "нативно" а сейчас уже отбрехиваешься от своих слов? не? Я же сказал, DependencyResolver "нативно" поддерживает 2 фичи. Которые не свойственны локатору впринципе. DependencyResolver - это простой DI контейнер. hVosttчиорт подиери. при чем тут решение задачи. ты говорил в MVC есть DI. Да, именно так. hVosttя тебя спросил, покажи мне его. Я показал. А ты назвал его локатором. Пришлось немного потрудиться, но мне удалось тебя убедить в том, что это не локатор. Тут согласен, что был не прав? hVosttты написал свой, воткнул его и рад стараться. Я написал свой чисто под задачу инъекции в конструктор. Подпорка к штатному контейнеру. Согласен? hVosttплевать что там, самокат или самосвал. в родном MVC нет ни того, ни дрогого. Я же тебе рассказал про 2 фичи. Пропустил мимо ушей: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:42 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУЯ написал свой чисто под задачу инъекции в конструктор. Подпорка к штатному контейнеру. Согласен? блин. я тут как раз изобрёл универсальное средство. решает абсолютно любые задачи. я всё стеснялся об этом кому-нибудь говорить, но ты придал мне уверенности. урите же! Код: c# 1. 2. 3. отдаю даром да, конечно надо свою реализацию сделать. но согласись же, это бомба! любую работу делает! МСУЯ же сказал, DependencyResolver "нативно" поддерживает 2 фичи. Которые не свойственны локатору впринципе. DependencyResolver - это простой DI контейнер. МСУНо DependencyResolver может иметь: 1. Свои сопоставления через реализацию IDependencyResolver 2. SetResolver т.е. это всё DI, осталось только реализовать IDependencyResolver так? а ну да, ещё фабрики свои определить... представляю, как бы ты с таким подходом продавал дом: — ...ну вы же говорили у вас есть вода! — Что вы кранов не видите чтоли? Вон и трубы есть... — ... ну так оттуда же ничего не течёт! — Щас погодите, я тут подогнал к дому свой личный водовоз, будет вам демонстрация, что вода есть. А если вам нужна газировка или пиво, можете даже шампанское подключить, будете коня своего купать! надо только свой самосвал подогнать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:51 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttя тут как раз изобрёл универсальное средство. Оно умеет лямбду "транслировать" в Expression? ) МСУЯ же сказал, DependencyResolver "нативно" поддерживает 2 фичи. Которые не свойственны локатору впринципе. DependencyResolver - это простой DI контейнер. МСУНо DependencyResolver может иметь: 1. Свои сопоставления через реализацию IDependencyResolver 2. SetResolver hVosttт.е. это всё DI, осталось только реализовать IDependencyResolver так? Вообще-то это в любом случае нужно сделать. Именно таким образом определяются сопоставления. Их в любом случае нужно делать в любом DI контейнере. В случае DependencyResolver делается именно так, через твоё любимое наследование. Не вижу причин для паники. hVosttа ну да, ещё фабрики свои определить... Смотря для чего. В моих проектах они не определены. За ненадобностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:58 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУДавай так: это контейнер без возможности инжектировать напрямую (инжектировать будем через фабрику, пусть это будет моя мальенькая хитрось) Тем более эта возможность многим реально не нужна. ну да, это SL-локатор, но такого типа, который легко превращается в DI. МСУЭта точка есть, она реализуется в реализации IDependencyResolver. Регистриуется через SetResolver. И доступна для поиска. И всё это может штатный DependencyResolver. Таки совсем не локатор, согласен? совсем не согласен. получается сторонный модуль должен напрямую дёрнуть SetResolver. не хорошо. про какую тогда мы инверсию зависимостей говорим? МСУНе передергивай, я не против управления жизнью. Но только тогда, когда это будет требовать задача. Когда такая задача будет, я возьму это: а когда это не требуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:12 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУОно умеет лямбду "транслировать" в Expression? ) ещё как ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:14 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУВообще-то это в любом случае нужно сделать. Именно таким образом определяются сопоставления. Их в любом случае нужно делать в любом DI контейнере. В случае DependencyResolver делается именно так, через твоё любимое наследование. Не вижу причин для паники. не-не-не... если бы можно было выполнить что-то типа DependencyResolver.Current.Register<T>().As<I>() (или вроде того) и получить инверсию зависимостей в контроллерах, то можно было бы утверждать о наличии нативного DI контейнера. а пока что нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:17 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttну да, это SL-локатор, но такого типа, который легко превращается в DI. Ты хоть понимаешь, какую глупость ляпнул? hVosttсовсем не согласен. получается сторонный модуль должен напрямую дёрнуть SetResolver. не хорошо. про какую тогда мы инверсию зависимостей говорим? Что за бред, какой сторонний модуль? Это должен сделать тот, кто создал контейнер. hVosttа когда это не требуется? Обратный вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:26 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttМСУВообще-то это в любом случае нужно сделать. Именно таким образом определяются сопоставления. Их в любом случае нужно делать в любом DI контейнере. В случае DependencyResolver делается именно так, через твоё любимое наследование. Не вижу причин для паники. не-не-не... если бы можно было выполнить что-то типа DependencyResolver.Current.Register<T>().As<I>() (или вроде того) и получить инверсию зависимостей в контроллерах, то можно было бы утверждать о наличии нативного DI контейнера. а пока что нет. Ты как маленький ребенок. Какая разница, как именно регистрируются зависимости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:31 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУОбратный вопрос. практически всегда. либо объект выдаётся один и тот же в рамках одного httprequest, либо каждый раз создаётся новый, либо один на весь домен, либо один на тред, либо из кеша... либо в рамках жизненной транзакции. DI также должен разрушить Disposable-объект, когда он будет не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:36 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУТы как маленький ребенок. Какая разница, как именно регистрируются зависимости не как , а где и когда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:37 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttпрактически всегда. либо объект выдаётся один и тот же в рамках одного httprequest, либо каждый раз создаётся новый, либо один на весь домен, либо один на тред, либо из кеша... либо в рамках жизненной транзакции. Если говорить о вебе, то меня устраивает дефолтное поведение: на реквест, по окончанию будет диспоуз. hVosttDI также должен разрушить Disposable-объект, когда он будет не нужен. Это я сам определю, мне не нужно это от DI. hVosttМСУТы как маленький ребенок. Какая разница, как именно регистрируются зависимости не как , а где и когда. Всегда Цацку не дали - всё, это не DI! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:52 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
МСУЕсли говорить о вебе, то меня устраивает дефолтное поведение: на реквест, по окончанию будет диспоуз. кто диспозит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:05 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
hVosttкто диспозит? В MVC базовый контроллер, как вариант. Может и контроллер наследник, если потребуется какая-то нештатная ситуация. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В том же WPF отдельная абстракция IWindowService (выполняет роль презентёра): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. EmployeesViewModel Код: 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. P.S. Хвост, ты сначала изучи хорошенько ООП и нативные возможности .NET, а то как курица уткнулся во что-то одно и не желаешь смотреть объективнее на жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:43 |
|
||
|
выбор IoC
|
|||
|---|---|---|---|
|
#18+
Не вставилось, продолжаем тему диспоузинга в XAML технологиях: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Ну и так далее. Хвост, что тебя конкретно интересует? Вчера научил тебя LINQ, даже спасибо не сказал. Сегодня разжевал тебе инверсию. Скоро ты станешь богом, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:46 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38474084&tid=1357917]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 264ms |
| total: | 425ms |

| 0 / 0 |
