» Главная
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]Кол-во просмотров: 8333

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

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

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

Пароль:



Регистрация

Каким способом вы подключены к интернету
Dial-Up
26% (59)
ISDN
1% (2)
Выделенная линия
27% (61)
ADSL
32% (71)
Спутниковый интернет
2% (5)
GPRS-интернет
8% (17)
Другое
4% (9)

Проголосовало: 224
Если программа дает неверный результат - в ней ошибка. Если же результат правильный - ошибок, как минимум, две.
Рейтинг: 9.3/10 (132)
Посмотреть все анекдоты