powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Убить HttpContext-ом
25 сообщений из 68, страница 1 из 3
Убить HttpContext-ом
    #38629976
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно, или есть способ лучше?

Код: 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.
using Microsoft.Practices.Unity;

    public class HttpContextLifetimeManager : LifetimeManager
    {
        object Key;

        public HttpContextLifetimeManager(Type type)
        {
            Key = Tuple.Create(GetType(), type);
        }

        public override object GetValue()
        {
            return HttpContext.Current.Items[Key];
        }

        public override void RemoveValue()
        {
            HttpContext.Current.Items.Remove(Key);
        }

        public override void SetValue(object newValue)
        {
            HttpContext.Current.Items[Key] = newValue;

            var d = newValue as IDisposable;
            if (d != null)
                HttpContext.Current.DisposeOnPipelineCompleted(d); // <== Убийство
        }
    }
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630023
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что за очередной лисапед? :)
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630042
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630043
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630044
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это если для mvc.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630050
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё правильно hVostt пишет, юзаем бутстраппер от MS. Далее в UnityConfig регистрируем типы и вуаля. Через колдовство в PreApplicationStartMethod + ApplicationShutdownMethod у нас в конструкторы контроллеров инжектятся зависимости.

P.S. Юнити от MS наше всё.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630106
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоP.S. Юнити от MS наше всё.

к сожалению, пока это один из самых медленных и неповоротливых IoC-контейнеров.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630118
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630154
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttмсущкоP.S. Юнити от MS наше всё.
к сожалению, пока это один из самых медленных и неповоротливых IoC-контейнеров.
Я тебя умоляю. Никто не собирается в цикле из миллиарда итераций геренить контейнеры и резолвить 100500 экземпляров классов. А меряться процессорными тиками удел пионеров. Да и тем более замеры от Васи Пупкина меня мало интересуют. Unity - это религия практик, которой тыщу лет. Надежно, нативно, привычно. 100 лет работало и будет работать, в том числе на больших нагрузках.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630170
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТС'у будет полезно. Можно с помощью IControllerFactory вообще обойтись без DI и полноценно инжектить в конструкторы контроллеров. Вот тут рецепт: http://codearticles.ru/articles/2351 Просто и со вкусом, без тяжелой артиллерии.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630171
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей К,

А я чё-то не увидел там HttpContextLifetimeManager. Может плохо смотрел... А пока решили применить Autofac. Как он?
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630173
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttэто если для mvc.Для MVC 5
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630182
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущко,

Unity не поддерживает .NET 4.0 и сразу же идёт лесом, ползком-ползком.

Unity не умеет работать с типизированными коллекциями типа IList<IService>, поэтому получает пинка под зад.

Unity не имеет работать с ограничениями (по типу where) при работе с джененериками. способность в некоторых случаях весьма полезная. а Unity курит неврно в сторонке.

Unity не поддерживает параметризованные фабрики Func<IService>

Unity требует атрибутов для внедрения в проперти. вот убожество.

а также:

не умеет выбирать конструктор, падает при рекурсивных резолвах, роняя за собой всё приложение, и вообще Unity полон всяких внезапных сюрпризов.

и самое весёлое: Unity.., детище Microsoft.., не поддерживает Silverlight. Муха-ха-ха

Столько пилят этот Unity и никак до ума не доведут. Ну ево нафиг. Для студентов и пионеров самое то.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630185
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДля MVC 5

Autofac однозначно. Интеграция с MVC5 и WebAPI2 очень хорошая. Также есть интеграция с SelfHost. И вообще, мощный активно развивающийся контейнер, достойный уважения.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630186
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttUnity требует атрибутов для внедрения в проперти.++

это очень плохо.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630189
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КДля MVC 5

Autofac однозначно. Интеграция с MVC5 и WebAPI2 очень хорошая. Также есть интеграция с SelfHost. И вообще, мощный активно развивающийся контейнер, достойный уважения.Ок, пасиб.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630199
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttмсущко,

Unity не поддерживает .NET 4.0 и сразу же идёт лесом, ползком-ползком.

Unity не умеет работать с типизированными коллекциями типа IList<IService>, поэтому получает пинка под зад.

Unity не имеет работать с ограничениями (по типу where) при работе с джененериками. способность в некоторых случаях весьма полезная. а Unity курит неврно в сторонке.

Unity не поддерживает параметризованные фабрики Func<IService>

Unity требует атрибутов для внедрения в проперти. вот убожество.

а также:

не умеет выбирать конструктор, падает при рекурсивных резолвах, роняя за собой всё приложение, и вообще Unity полон всяких внезапных сюрпризов.

и самое весёлое: Unity.., детище Microsoft.., не поддерживает Silverlight. Муха-ха-ха

Столько пилят этот Unity и никак до ума не доведут. Ну ево нафиг. Для студентов и пионеров самое то.
Какие-то детские сопли. Для .NET 4.0 и ниже есть Unity более низкой версии. Для сильверлайта есть Unity 2.1 . Да и вообще для XAML того же SimpleIoC за глаза, который идет в коробке с MVVMLight. Новый Unity отлично работает даже на WinRT. Что такое не умение работать с типизированными коллекциями IList<IService> я так и не понял, мне это не нужно. Всё остальное - пыль и сопли. Мне вообще для 99.9% задач обычного штатного резолвера хватило бы.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630206
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоКакие-то детские сопли. Для .NET 4.0 и ниже есть Unity более низкой версии. Для сильверлайта есть Unity 2.1 . Да и вообще для XAML того же SimpleIoC за глаза, который идет в коробке с MVVMLight. Новый Unity отлично работает даже на WinRT. Что такое не умение работать с типизированными коллекциями IList<IService> я так и не понял, мне это не нужно. Всё остальное - пыль и сопли. Мне вообще для 99.9% задач обычного штатного резолвера хватило бы.

ну? я же так и сказал, для студентов и пионеров самое то

а типизированные коллекции это весчь ))
в связке с MEF очень хорошо, Resolve<ICollection<IProgramPlugin>>, и получаешь коллекцию всех подключенных плагинов. крута!
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630218
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttмсущкоКакие-то детские сопли. Для .NET 4.0 и ниже есть Unity более низкой версии. Для сильверлайта есть Unity 2.1 . Да и вообще для XAML того же SimpleIoC за глаза, который идет в коробке с MVVMLight. Новый Unity отлично работает даже на WinRT. Что такое не умение работать с типизированными коллекциями IList<IService> я так и не понял, мне это не нужно. Всё остальное - пыль и сопли. Мне вообще для 99.9% задач обычного штатного резолвера хватило бы.

ну? я же так и сказал, для студентов и пионеров самое то

а типизированные коллекции это весчь ))
в связке с MEF очень хорошо, Resolve<ICollection<IProgramPlugin>>, и получаешь коллекцию всех подключенных плагинов. крута!
Ты назвал то, что студентам и пионерам нужно. А одупляемые люди вполне обходятся даже самым минимумом. C МЕF вообще никаких вопросов, читай про UnityBootstrapper + ovveride ConfigureContainer. Там создаешь UnityContainer и AggregateCatalog, а потом RegisterCatalog. Вообщем, тебе лишь бы фантики, а не ехать
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630234
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущко,

с MEF только один из примеров. просто Unity принципиально не умеет работать ни с одной дженерик коллекцией (даже IEnumerable<IService>). самый потолок, это Array.

да и субъективно, Unity неудобен, работать с ним не в кайф.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630247
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttмсущко,

с MEF только один из примеров. просто Unity принципиально не умеет работать ни с одной дженерик коллекцией (даже IEnumerable<IService>). самый потолок, это Array.

да и субъективно, Unity неудобен, работать с ним не в кайф.
Честно говоря не использую DI "на полную катушку". Чисто по-минимуму. Говорю же, даже SimpleIoC за глаза для MVVM.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630346
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мсущкоЧестно говоря не использую DI "на полную катушку".

а я как-то попробовал и дюже втянулся

сейчас DI использую не просто как средство для разрешения зависимостей, а как полноценную фабрику и платформу всех компонентов приложения. если всё приложение построено на DI, то не проблема воткнуть аспекты, логгирующие все входы и выходы из каждой функции, также легко повесить хуки на моменты разрешения или уничтожения зависимостей. и, как следствие, покрывать тестами такое приложение в кайф. протестировать можно по отдельности любую часть или кусок, как бы сильно они не зависели от окружения.
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630404
мсущко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt, всё это можно, но не нужно (мне). Твоя проблема, что ты не можешь "остановиться" и не видишь грани между тем, что нужно для задачи, и тем, что через 100500 лет пригодилось бы (возможно). Придёт с опытом, а пока можно и погорланить на форумах и померяться яйцами. Я не против :)
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630439
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпокрывать тестами такое приложение в кайф.С ума все по сходили с этими тестами...

Поднимаем тестовую БД с данными (тестовый вебсервис) и вперёд. Так ведь нет. Надо всё опутать интерфейсами. Вдруг захочется подменить реализацию сервиса или повесить логирование... "Не согласен я, с обоими..." (ц)
...
Рейтинг: 0 / 0
Убить HttpContext-ом
    #38630478
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кповесить логирование

одна из частых задач.
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 1 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Убить HttpContext-ом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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