Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HttpApplication в не System.Web классе 
:(
    Опции темы
sysprog
Дата 16.12.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Добрый день.

Господа, прошу вашей помощи!

Есть веб сайт, который использует некоторую библиотеку классов.
Необходимо получить доступ к текущему HttpApplication в каком-нибудь классе не передавая его как параметр в этот класс. Т.е. можно ли его вытащить через AppDomain или каким-нибудь другим способом?

Благодарю!
PM MAIL   Вверх
1stain
Дата 16.12.2008, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 11
Всего: 40



Код

HttpContext.Current.ApplicationInstance



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
sysprog
Дата 18.12.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Цитата(1stain @ 16.12.2008,  20:47)
Код

HttpContext.Current.ApplicationInstance

Дело то как раз и было в том, что пытаюсь получить доступ из другого контекста.

Я искал какое-то подобие фабрики для получения HTTPApplication
В общем, решение нашлось простое и логичное - написал свою фабрику, в которую поместил информацию, которая мне нужна в других объектах. Только не понятно, почему MS не предусмотрели стандартного аналогичного механизма.
PM MAIL   Вверх
PashaPash
Дата 19.12.2008, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



sysprog, HttpContext.Current - статическое свойство. Оно доступно вообще из любого места приложения. Из какого "другого" контекста ты не смог его получить? И что за "фабрики для хранения информации" - так теперь называют глобальные переменные? :(


--------------------
PM MAIL WWW   Вверх
Zakonnic
Дата 19.12.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 25.4.2006

Репутация: 3
Всего: 6



Ну вроде как "фабрика" - это один из шаблонов проектирования, так что все нормально. Насколько я знаю, аспнет-приложением, например, рулит фабрика хендлеров (IHttpHandlerFactory). Правда, я тоже не понял, как это автор реализовал...
--------------------
...и никогда не пишите в комментариях правду
PM MAIL ICQ   Вверх
PashaPash
Дата 19.12.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



Zakonnic, я знаю что такое фабрика, поэтому и спросил smile


--------------------
PM MAIL WWW   Вверх
sysprog
Дата 19.12.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Да, лоханулся я с : HttpContext.Current  smile   smile  
Не дочитал, что он статический...  :(

Приходится на 10 языках постоянно разговаривать с программистами на одном, с клиентами на другом, с начальством на третьем и т.д. 
Прошу прощения за формулировку! smile


Реализовал просто - простая фабрика классов, которая по запросу создает один экземпляр какого-то нужного известного класса и кладет это в статический Dictionary, откуда потом достает при надобности! smile 
С другой стороны своей реализацией упростил задачу себе же задачу, т.к. мне еще необходимо было хранить ID пользователя из БД и дополнительные поля, т.е. просто создал класс и забил его нужными свойствами.

Благодарю за внимание и помощь!
PM MAIL   Вверх
PashaPash
Дата 19.12.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



sysprog, посмотри в сторону отказа от синглтонов и перехода на StructureMap/Unity. Cтатический Dictionary - не лучший выбор.


--------------------
PM MAIL WWW   Вверх
sysprog
Дата 22.12.2008, 03:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Цитата(PashaPash @  19.12.2008,  22:09 Найти цитируемый пост)
sysprog, посмотри в сторону отказа от синглтонов и перехода на StructureMap/Unity. Cтатический Dictionary - не лучший выбор. 


Можно немного подробней? Интересно проблемы со статическим Dictionary!


Цитата

StructureMap is a Dependency Injection framework that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. StructureMap can enable looser coupling between classes and their dependencies, improve the testability of a class structure, and provide generic flexibility mechanisms. Used judiciously, StructureMap can greatly enhance the opportunities for code reuse by minimizing direct coupling between classes and configuration mechanisms.


Описано вроде красиво smile Можно в сжатом виде, для чего используется, какие преимущества и недостатки?
PM MAIL   Вверх
1stain
Дата 22.12.2008, 09:36 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 11
Всего: 40



Цитата(sysprog @  19.12.2008,  20:37 Найти цитируемый пост)
С другой стороны своей реализацией упростил задачу себе же задачу, т.к. мне еще необходимо было хранить ID пользователя из БД и дополнительные поля, т.е. просто создал класс и забил его нужными свойствами.

Вы уверены, что так проще? 
По-моему проще - это создать класс юзера со всеми необходимыми полями, отнаследовав его от IPrincipal и подсунуть контексту как значение свойства User.


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
PashaPash
Дата 22.12.2008, 14:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



Цитата(sysprog @  22.12.2008,  03:17 Найти цитируемый пост)
Можно немного подробней? Интересно проблемы со статическим Dictionary!

Да вполне обычные пролемы, как и со всеми сингтонами - синхронизация, лишние локи, возможное создание двух Dictionary одновременно (при ресайкле приложения, например), вообще наличие долгоживущих глобальных переменных, проблемы масштабируемостью - кто-нибудь обязательно напишет код, передающий данные через объект в этом Dictionary. Синглтоны - вообще зло.
Цитата(sysprog @  22.12.2008,  03:17 Найти цитируемый пост)
Описано вроде красиво smile Можно в сжатом виде, для чего используется, какие преимущества и недостатки? 

Достоинства - берет на себя управление зависимостями в проекте. Т.е. позволяет из любого места получить объект с нужным тебе интерфейсом. Примерно как твоя фабрика на Dictionary, только она создает не только один конкретный класс по ключу (интерфейсу), а еще и все объекты, от которых он зависит. И заодно берет на себя управление временем жизни - может выдавать один и тот же объект на каждый запрос (типа синглтон), может создавать каждый раз разный, может ограничивать время жизни одинм HttpRequest. Недостатки - это все-таки лишний кусок чужого кода smile


--------------------
PM MAIL WWW   Вверх
sysprog
Дата 22.12.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 9.8.2007

Репутация: нет
Всего: нет



Цитата(1stain @  22.12.2008,  09:36 Найти цитируемый пост)
Вы уверены, что так проще? 
По-моему проще - это создать класс юзера со всеми необходимыми полями, отнаследовав его от IPrincipal и подсунуть контексту как значение свойства User. 


Спасибо за информацию!! Знания не настолько глубоки. 
У меня правда еще MembershipProvider, нужно будет проверить получится ли таким образом юзера проинициализировать...

Цитата(PashaPash @  22.12.2008,  14:07 Найти цитируемый пост)
Достоинства - берет на себя управление зависимостями в проекте. Т.е. позволяет из любого места получить объект с нужным тебе интерфейсом. Примерно как твоя фабрика на Dictionary, только она создает не только один конкретный класс по ключу (интерфейсу), а еще и все объекты, от которых он зависит. И заодно берет на себя управление временем жизни - может выдавать один и тот же объект на каждый запрос (типа синглтон), может создавать каждый раз разный, может ограничивать время жизни одинм HttpRequest. Недостатки - это все-таки лишний кусок чужого кода smile 


PashaPash, спасибо за совет. Система действиетельно интересная, но боюсь, что клиент не одобрит сторонний опенсорс. Случайно, не в курсе как с безопасностью у них дела?

Это сообщение отредактировал(а) sysprog - 22.12.2008, 20:38
PM MAIL   Вверх
PashaPash
Дата 22.12.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 7
Всего: 49



Цитата(sysprog @  22.12.2008,  20:37 Найти цитируемый пост)
PashaPash, спасибо за совет. Система действиетельно интересная, но боюсь, что клиент не одобрит сторонний опенсорс. Случайно, не в курсе как с безопасностью у них дела?

Тогда бери Unity, из Microsoft Enterprise Library. Умеет то же, даже немного больше. И документация у них неплохая.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.1030 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.