» Главная
eXcode.ru » Статьи » ASP / ASP.NET
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 8





Использование Global.asax в ASP.NET, примеры




Автор: Andrew Filev

Введение:

Для начала попробую убедить вас в том, что Global.asax вещь интересная, а в некоторых случаях позволяет решить проблемы изящно и с повышением производительности приложения в целом. Россия - не Штаты, а русские - не американеры, поэтому бывают у нас и с английским проблемы. А какие книжки по ASP на русском мы знаем? Немногие... Первая, (и, наверное, за исключением статей в журналах, единственная) что приходит в голову - зелененькая "Программирование Active Server Pages" Скота Хилайера и Даниэла Мезика (Scot Hillier and Daniel Mezick). Здесь про Global.asa писалось столько же, что и про остальные ASP features, и даже меньше. Как следствие - многие имеют смутное представление зачем он нужен и когда его лучше использовать. Я рискну попробовать развеять сей туман неясности.
Global.asax - где его найти.

Еще в ASP мы встречались с Global.asa. Теперь он несколько изменил название, добавив традиционную для ASP.NET буковку ′x′ в конец. Для тех кто не знает, расскажем где он сидит. Если официально, то он должен быть помещен в корень дерева виртуальных папок приложения. Чуть проще - в той же папке, что и файлы приложения.(если одна папка. Если дерево - см. официальное определение). Теперь посмотрим, как он обрабатывается Runtime. А дело такое: ASP.NET находит Global.asax и при первом запуске любого ресурса или страницы приложения компилируется в .Framework класс (расширяющий HttpApplication, кому интересно). При этом гарантируется, что пользователь не сможет просмотреть или закачать Global.asax.
Global.asax - что в нем можно делать.

Global.asax задуман для обработки событий уровня приложения (ну или там сессии), а не конкретного пользователя. Говоря просто, здесь не важно Вася ты или Britney Spears, важно что приложение запустилось. События имеют вид

Application_ИмяСобытия(аргументы)

Как примеры приведем Application_Start(); Session_End() и т.д. Ниже предлагается возможный вариант Global.asax:



<%@ImportNamespace="System.Data"%>
<%@Import Namespace = "System.Data.SQL"%>
<script language ="C#" runat="server">
void Application_Start(Object sender,EventArgs e){
SQLConnection myConnection=
new SQLConnection("server=localhost;uid=sa;pwd=;database=dotSITE");
SQLDataSetCommand myCommand =
new SQLDataSetCommand("select * from Authors", myConnection);
DataSet ds = new DataSet();
Command.FillDataSet(ds, "Authors");
Application["DataStored"] = ds;
}
</script>



Здесь показано интересное применение Global.asax. Мы создаем некий объект для хранения данных, не изменяющихся и нужных каждому пользователю. За счет того, что происходит это один раз, мы экономим время на получении данных и повышаем производительность. Такой подход применим, конечно, к любому ресурсу, общему для всех клиентов и не изменяемому ими.

Еще одно применение Global.asax - объявление там статичных объектов. Они могут принадлежать к 3 областям видимости:

appinstance (уровень приложения, не разделяем), application (уровень приложения), session (уровень сессии).

Мы приведем пример:

<object id="MyID" runat="server" progid="Com Object Prog ID" scope="session"/>

Другие аспекты конфигурации приложений будут рассмотрены в статье, посвященной составу и роли файлов Config.web
К началу статьи





Добавил: MadvEXДата публикации: 2005-12-02 22:59:17
Рейтинг статьи:3.00 [Голосов 10]Кол-во просмотров: 8232

Комментарии читателей

Всего комментариев: 1

2011-08-17 10:16:34
Джон
Хорошая статья!
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Что для вас важнее в ПО
Его размер
7% (9)
Его цена
7% (8)
Его простота и доступность
17% (20)
Его функциональность
64% (77)
Наличие дополнительных фич
0% (0)
Наличие русского языка
5% (6)
Графицеский интерфейс
1% (1)
Изготовитель
0% (0)

Проголосовало: 121
Hадпись на дисплее нового каpманного компаса под упpавлением Windows CE - "Севеp не найден."
Рейтинг: 8.4/10 (7)
Посмотреть все анекдоты