powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / выбор IoC
25 сообщений из 286, страница 1 из 12
выбор IoC
    #38473821
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чисто ради интереса кто-нибудь выбирает контейнер исходя из к примеру http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison , или как сложилось и тем пользуется? По идее время отдачи экземпляра не совсем спички так как обращения к контейнеру идут довольно часто.

п.с. сам как то подсел на Autofac и дальше не слезал.
...
Рейтинг: 0 / 0
выбор IoC
    #38473836
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я за родные DI контейнеры: http://msdn.microsoft.com/en-us/library/dd203101.aspx
Если MVC, то DI контейнер доступен в самом фреймворке, так что ничего дополнительно ставить не нужно.

Всё остальное на помойку.
...
Рейтинг: 0 / 0
выбор IoC
    #38473878
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

Autofac. более логичной имплементации среди DI для .NET пока не встречал. везде что-нибудь, да через Ж. особенно убогий Unity.
...
Рейтинг: 0 / 0
выбор IoC
    #38473892
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕсли MVC, то DI контейнер доступен в самом фреймворке, так что ничего дополнительно ставить не нужно.

чо за бред ты несёшь? ты поддержку от реализации отличаешь?
...
Рейтинг: 0 / 0
выбор IoC
    #38473898
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttчо за бред ты несёшь?
Не бросай слюну по сторонам, чтобы опять стыдно не было. По факту - что конкретно тебя интересует?

hVosttты поддержку от реализации отличаешь?
MVC поддерживает и реализует DI контейнер и фабрику. Что тебя смущает?
...
Рейтинг: 0 / 0
выбор IoC
    #38473905
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuвремя отдачи экземпляра не совсем спички так как обращения к контейнеру идут довольно часто

в рамках жизненного цикла, повторные запросы возвращают объекты максимально быстро. для критичных мест, можно отдавать фабрику вместо объекта, также можно задать вызов контруктора вручную, также можно отдавать по ключу и по индексу. ещё можно кешировать. в Autofac всё это делается очень гибко.
...
Рейтинг: 0 / 0
выбор IoC
    #38473913
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУMVC поддерживает и реализует DI контейнер и фабрику. Что тебя смущает?

смущает конечно. где ты там контейнер увидел? не говори, что DependencyResolver
...
Рейтинг: 0 / 0
выбор IoC
    #38473919
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuПо идее время отдачи экземпляра не совсем спички так как обращения к контейнеру идут довольно часто.
Если у тебя это критичное место (циклы, многопоточность и т.п.), почему бы вначале не отресолвить объекты, а потом использовать их инстансы в нужном месте? Каждой задаче - свой подход, не всегда в лоб это хорошо.

hVosttсмущает конечно. где ты там контейнер увидел? не говори, что DependencyResolver
Именно DependencyResolver в данном случае является DI контейнером.
...
Рейтинг: 0 / 0
выбор IoC
    #38473926
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУИменно DependencyResolver в данном случае является DI контейнером.

это сервис локатор . никакие зависимости MVC не разруливает, потому что никакой контейнер он не реализует. вместо этого он предоставляет точки расширения в виде фабрик, куда легко подставляется нужный контейнер, хоть Unity, хоть Autofac, хоть что-угодно-другое.

признавайся. пил вчера?
...
Рейтинг: 0 / 0
выбор IoC
    #38473931
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давай только без ругани) я просто хотел узнать кто что юзает и почему) пример со ссылкой привел как возможный фактор выбора контейнера для кого то
...
Рейтинг: 0 / 0
выбор IoC
    #38473936
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttэто сервис локатор .

Садись - двойка.

DependencyResolverПредоставляет точку регистрации для сопоставителей зависимостей, реализующих IDependencyResolver или интерфейс локатора общей службы IServiceLocator.

Локатор предоставляет точку регистрации для локатора? Мало масляное

hVosttникакие зависимости MVC не разруливает, потому что никакой контейнер он не реализует. вместо этого он предоставляет точки расширения в виде фабрик, куда легко подставляется нужный контейнер, хоть Unity, хоть Autofac, хоть что-угодно-другое.
Он регистрирует и сопоставляет. Это основное, что делает DI. Всякие управления жизнью и прочие фантики - навороты, которые чаще всего просто не нужны. Что-то типа простенького модного SimpleIoC. Учи матчать.


hVosttпризнавайся. пил вчера?
Нет. А ты?
...
Рейтинг: 0 / 0
выбор IoC
    #38473937
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuдавай только без ругани) я просто хотел узнать кто что юзает и почему) пример со ссылкой привел как возможный фактор выбора контейнера для кого то

если используешь IoC, главное это удобство и логичность использования. если тебе использовать выбранный DI контейнер удобно, значит сделал верный выбор. скорость резолва не существенна. правда, если уже ранее зарезолвенный объект контейнер отдаёт всё равно медленно, то сразу в топку его
...
Рейтинг: 0 / 0
выбор IoC
    #38473943
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСадись - двойка.

млять. главное, держу в руках книжку от Microsoft, где черным по белому написано, что DependencyResolver в ASP.NET MVC это Service Locator, и целая глава накалякана про отличия SL от DI... будешь продолжать возражать?? не позорься уж.

МСУЭто основное, что делает DI

двойешник-колышнек ты. основное отличие DI от SL:

SL — класс запрашивает внешний компонент для получения его зависимостей
DI — класс получает зависимости через конструктор (или открытые свойства)

типа. матчасть дуй учить
...
Рейтинг: 0 / 0
выбор IoC
    #38473967
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУСадись - двойка.
млять. главное, держу в руках книжку от Microsoft, где черным по белому написано, что DependencyResolver в ASP.NET MVC это Service Locator, и целая глава накалякана про отличия SL от DI... будешь продолжать возражать?? не позорься уж.
Это раньше его по привычке так называли. Смотри, вот подтверждение:
http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-dependency-injection IDependencyResolver interface replaces the previous IMvcServiceLocator. Implementers of IDependencyResolver must return an instance of the service or a service collection.

На данный момент DependencyResolver может служить полноценным DI контейнером, который и регистрирует и сопоставляет. Кроме того, доступна фабрика DefaultControllerFactory, которую можно инициализировать через ControllerBuilder.Current.SetControllerFactory. Это еще более расширяет IoC функционал, особенно это полезно для инъекции в конструктор контроллера. То есть, сопоставлением в MVC занимается не только DependencyResolver. Всё это полноценные DI контейнеры.

hVosttдвойешник-колышнек ты. основное отличие DI от SL:

SL — класс запрашивает внешний компонент для получения его зависимостей
DI — класс получает зависимости через конструктор (или открытые свойства)

типа. матчасть дуй учить

Бездарность :)

DependencyResolver может и запрашивать и получать. Документацию читал?
...
Рейтинг: 0 / 0
выбор IoC
    #38473980
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУDependencyResolver может и запрашивать и получать. Документацию читал?

у меня книжка по MVC 4, на инглише не так уж и давно пришла из Амазона. да читал. и по букве доки там от DI только поддержка . инъекция не выполняется . как можно говорить о Dependency Injection без Injection?

это логика, Спок (с)
...
Рейтинг: 0 / 0
выбор IoC
    #38473985
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну умора....

1. перейди по ссылке которую ты дал http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-dependency-injection

2. Нажми Ctrl-F и вставь "No parameterless constructor defined for this object"

не дошло? без Unity/Autofac/Ninject ты не получишь никакого DI. даже близко.
...
Рейтинг: 0 / 0
выбор IoC
    #38473989
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хвост, вот эта инфа из букваря окончательно тебя опустит ниже плинтуса. Я же знаю, как ты не любишь читать доки

The Service Locator Pattern

Идет описание паттерна. А внизу:

Related PatternsThe following patterns are related to the Service Locator pattern:
Dependency Injection. This pattern solves the same problems as the Service Locator pattern, but it uses a different approach.
Inversion of Control. The Service Locator pattern is a specialized version of this pattern. It inverts an application's traditional flow of control. It is the object that is called instead of the caller that controls a process.

А теперь логическая нить, с которой у тебя обычно проблемы.

1. DI и IoC - это родственные паттерны, Service Locator - отдельная песня.
2. DependencyResolver может инжектировать. Следовательно, удовлетворяет первому пункту (паттерн Dependency Injection).
3. DependencyResolver поддерживает инверсию, он может сопоставлять. Следовательно, удовлетворяет второму пункту (паттерн Inversion of Control).

DummyDependencyResolver
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class DummyDependencyResolver : System.Web.Mvc.IDependencyResolver
{
    public object GetService(Type serviceType)
    {
        if (serviceType.Equals(typeof(IDataService)))
        {
            return new SqlDataService();
        }
        return null;
    }

    public IEnumerable<object> GetServices(Type serviceType)
    { 
        return Enumerable.Empty<object>();
    }
}



Код: c#
1.
DependencyResolver.SetResolver(new DummyDependencyResolver());



Код: c#
1.
var service = DependencyResolver.Current.GetService<IDataService>();



Присаживайся. Сегодня опять двойка
...
Рейтинг: 0 / 0
выбор IoC
    #38473992
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

ну умора....

1. перейди по ссылке которую ты дал http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-dependency-injection

2. Нажми Ctrl-F и вставь "No parameterless constructor defined for this object"

не дошло? без Unity/Autofac/Ninject ты не получишь никакого DI. даже близко.

Рассмешил

Срочно бежать читать про IControllerFactory. Если лень читать доки, возьми у меня готовый рецепт: http://codearticles.ru/articles/2351

Никаких Unity/Autofac/Ninject, всё работает на штатном функционале MVC. Вот пример параметризации конструктора:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class HomeController : Controller
{
    private IDataService DataService;

    [DefaultConstructor]
    public HomeController(IDataService service)
    {
        this.DataService = service;
    }
}



Опять двойка, сударь?
...
Рейтинг: 0 / 0
выбор IoC
    #38473997
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,


МСУ1. DI и IoC - это родственные паттерны, Service Locator - отдельная песня.

DI и SL родственные паттерны. в IoC это архитектурный принцип (а не паттерн).

МСУ2. DependencyResolver может инжектировать.

не может и никогда не будет. потому что это Service Locator. в чистом виде.

МСУ3. DependencyResolver поддерживает инверсию, он может сопоставлять.

он не может поддерживать инверсию. это абсурдное по своей сути утверждение.



прекращай дёргать инфу из букваря. и попробуй в чистый проект MVC без юнити и других контейнеров, добавить в любой контроллер зависимость в виде конструктора. в результате будет ошибка выполнения. фабрика не сможет создать экземпляр контроллера, и прямым текстом тебе об этом скажет "иди учи матчасть"
...
Рейтинг: 0 / 0
выбор IoC
    #38474007
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУРассмешил

Срочно бежать читать про IControllerFactory. Если лень читать доки, возьми у меня готовый рецепт: http://codearticles.ru/articles/2351

Никаких Unity/Autofac/Ninject, всё работает на штатном функционале MVC. Вот пример параметризации конструктора:

во-первых, это исключительно реализация фабрики, а не DependencyResolver, и она не станет разруливать дочерние зависимости. проверь.
...
Рейтинг: 0 / 0
выбор IoC
    #38474013
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDI и SL родственные паттерны. в IoC это архитектурный принцип (а не паттерн).
Не нужно тут коверкать своим википедийным языком. В доке MS четко написано: Inversion of Control - The Service Locator pattern is a specialized version of this pattern. Принцип, паттерн, подход... Решил позаниматься буквоедством, человек?

hVosttМСУ2. DependencyResolver может инжектировать.
не может и никогда не будет. потому что это Service Locator. в чистом виде.
Лично этот класс не может, но у него есть штатный помощник - IControllerFactory :)

hVosttМСУ3. DependencyResolver поддерживает инверсию, он может сопоставлять.
он не может поддерживать инверсию. это абсурдное по своей сути утверждение.
Resolve - чем тебе не инверсия? В чем обсурдность?

hVosttпрекращай дёргать инфу из букваря. и попробуй в чистый проект MVC без юнити и других контейнеров, добавить в любой контроллер зависимость в виде конструктора. в результате будет ошибка выполнения. фабрика не сможет создать экземпляр контроллера, и прямым текстом тебе об этом скажет "иди учи матчасть"
Я тебе дал ссылку на рецепт. Изучи нативные возможности MVC :)
...
Рейтинг: 0 / 0
выбор IoC
    #38474016
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttво-первых, это исключительно реализация фабрики, а не DependencyResolver, и она не станет разруливать дочерние зависимости. проверь.
Слушай, ну тут уже пошло меряние пиписьками. Я тебе изначально сказал, что это не тот богатый функционал, который есть в Unity, автофаках и прочей ипостаси. Ты чем читаешь?
...
Рейтинг: 0 / 0
выбор IoC
    #38474031
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВ доке MS четко написано: Inversion of Control - The Service Locator pattern is a specialized version of this pattern

SL является паттерном, реализующим IoC. всё правильно. только IoC это не паттерн. не может быть паттерна. ты ещё скажи, что "разделяй и властвуй" — тоже паттерн.

МСУЛично этот класс не может, но у него есть штатный помощник - IControllerFactory :)

это тебя заносит... если я в качестве реализации IControllerFactory подсуну класс, размечающий и форматирующий харды, это что получается, IControllerFactory ещё и офигенная утилита для управления дисками?? если ты чего-то туда запихал — свою кастрированную реализацию подобия DI, это не называется нативной поддержкой . иначе, любой человек — это президент в чистом виде, осталось только наделить его полномочиями.

не неси ерунду. признай что глупость сказал
опростоволосился!

МСУЯ тебе дал ссылку на рецепт. Изучи нативные возможности MVC :)

ты мне дал ссылку на кастомную реализацию DI. и ещё хватает смелости называть это нативной реализацией?? ну харе уже чушь-то пороть!

в чистом ASP.NET MVC нет никакого DI.

но есть возможность запихнуть свой говнокод в фабрику или поставить Autofac
...
Рейтинг: 0 / 0
выбор IoC
    #38474036
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttэто не называется нативной поддержкой

тьфу, поддержка-то есть... нативного DI нету
...
Рейтинг: 0 / 0
выбор IoC
    #38474046
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хвост, смотри, локатор только ищет и всё. Что следует даже из его названия.

То есть вот это поведение чисто локатора, не спорю:

Код: c#
1.
var service = DependencyResolver.Current.GetService<IDataService>();



А DependencyResolver может делать еще и так:

IDependencyResolver
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class DummyDependencyResolver : System.Web.Mvc.IDependencyResolver
{
    public object GetService(Type serviceType)
    {
        if (serviceType.Equals(typeof(IDataService)))
        {
            return new SqlDataService();
        }
        return null;
    }

    public IEnumerable<object> GetServices(Type serviceType)
    { 
        return Enumerable.Empty<object>();
    }
}



И даже вот так:

Код: c#
1.
DependencyResolver.SetResolver(new DummyDependencyResolver());



То есть это уже контейнер, получается. Да, без навороченных управлений life time, без непосредственного инжектирования - для этого есть фабрика, можно использовать её. Да и инжектирование многим не нужно, достаточно просто резолвить по месту требования. Лично я в MVC не использую инжектинг через фабрику - у меня в базовом контроллере поднимаются с помощью Lazy через инверсию все репозитории (контексты) и доступны в унаследованных контроллерах.
...
Рейтинг: 0 / 0
25 сообщений из 286, страница 1 из 12
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / выбор IoC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]