Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
ГЛАВА 24. Web-приложения ASP.NET 2.0
Предыдущая глава была посвящена композиции страниц ASP.NET и поведению содержащихся в них Web-элементов управления. На основе полученных знаний в этой главе мы рассмотрим роль типа HttpApplication. Вы увидите, что функциональные возможности HttpApplication позволяют выполнять перехват ряда событий, что дает возможность рассматривать Web-приложения, скорее, как связную единицу, а не как набор автономных файлов *.aspx.
В дополнение к исследованию типа HttpApplication в этой главе также обсуждается важная тема управления состоянием объектов. Здесь вы узнаете о роли данных состояния представлений и элементов управления, о переменных уровня сеанса и приложения, а также о связанной с состояниями конструкции ASP.NET, которая называется кэш приложения. После основательного изучения предлагаемых платформой .NET приемов управления состояниями, в конце главы мы обсудим роль файла Web.config и различные приемы изменения конфигурации приложений.
Проблема состояния
В начале предыдущей главы было указано, что HTTP является сетевым протоколом, не обеспечивающим сохранение состояний. Именно этот факт делает процесс разработки Web-приложений столь отличающимся от процесса построения выполняемого компоновочного блока. Например, при создании приложения Windows Forms вы можете быть уверены в том, что любые члены-переменные, определенные в классе формы, будут существовать в памяти до тех пор, пока пользователь не прекратит работу выполняемого файла.
public partial class MainWindow: Form {
// Данные состояния.
private string userFavoriteCar;
…
}
Однако в World Wide Web вы не можете делать такие роскошные предположения. Чтобы не быть голословными, давайте создадим новый Web-узел ASP.NET (с именем SimpleStateExample), содержащий один файл *.aspx. В файле с внешним кодом поддержки определим строковую переменную уровня страницы с именем userFavoriteCar.
public partial class _Default: Page {
// Данные состояния?
private string userFavoriteCar;
}
Далее, построим Web-интерфейс пользователя, показанный на рис. 24.1.

Рис. 24.1. Пользовательский интерфейс для страницы примера состояния
Обработчик события Click сервера для кнопки Указать… позволит назначить строковую переменную в соответствии со значением TextBox:
protected void btnSetCar_Click(object sender, EventArgs e) {
// Сохранение информации о машине.
userFavoriteCar = txtFavCar.Text;
}
а обработчик события Click для кнопки Прочитать… будет отображать текущее значение члена-переменной в поле элемента Label страницы.
protected void btnGetCar_Click(object sender, EventArgs e)
// Присваивание тексту надписи значения члена-переменной.
lblFavCar.Text = userFavoriteCar;
}
При построении приложения Windows Forms можно предполагать, что после установки пользователем начального значения это значение будет сохраняться в течение всего времени работы приложения. Запустив наше Web-приложение, вы, к сожалению, обнаружите, что при каждом вторичном обращении к Web-серверу значение строковой переменной userFavoriteCar снова возвращается в своему пустому начальному значению, так что поле текста Label будет постоянно оставаться пустым.
Снова подчеркнем, что HTTP не имеет никаких внутренних средств автоматического запоминания данных уже отправленного HTTP-ответа, и именно поэтому объект Page немедленно уничтожается. Когда клиент повторно обращается к файлу *.aspx, создается новый объект Page, переустанавливающий все члены-переменные уровня страницы. Это, очевидно, и оказывается главной проблемой. Представьте себе, каким бы неудобным был процесс заказа товаров, если бы каждый раз при обращении к Web-серверу вся введенная вами информация (например, о том, что вы хотите купить) пропадала. Если вам необходимо помнить информацию о пользователях, которые регистрируются на вашем узле, вам придется использовать различные приемы сохранения состояния объектов.
Замечание. Эта проблема касается не только ASP.NET. Сервлеты Java, CGI-, "классические" ASP-и РНР-приложения – всем этим технологиям также приходится решать проблемы управления состоянием.
Чтобы сохранить значение строкового типа userFavoriteCar в промежутке между повторными обращениями к серверу, можно запомнить значения этого типа в сеансовой переменной. Соответствующие подробности обработки состояния сеанса будут рассматриваться в следующих разделах. Но здесь для полноты мы приводим соответствующий программный код, необходимый для текущей страницы (заметьте, что здесь больше не используется приватный член-переменная строкового типа, так что не забудьте закомментировать или просто удалить его определение).
protected void btnSetCar_Click(object sender, EventArgs e) {
Session["UserFavCar"] = txtFavcar.Text;
}
protected void btnGetCar_Click(object sender, EventArgs e) {
lblFavCar.Text = (string)Session["UserFavCar"];
}
Если выполнить приложение теперь, то информация о любимой машине в промежутке между обращениями к серверу будет сохраняться благодаря объекту HttpSessionState, обрабатываемому с помощью унаследованного свойства
Исходный код.Файлы примера SimpleStateExample размещены в подкаталоге, соответствующем главе 24.
Технологии управления состоянием ASP.NET
ASP.NET предлагает целый ряд механизмов, которые можно использовать для поддержки информации состояния в Web-приложениях. В частности, у вас на выбор есть следующие варианты.
• Использование данных состояния представлений ASP.NET.
• Использование данных состояния элементов управления ASP.NET.
• Определение переменных уровня приложения.
• Использование объектов кэширования.
• Определение переменных сеансового уровня.
• Взаимодействие с данными cookie.
Мы рассмотрим детали каждого из указанных подходов по очереди, начиная с темы состояния представлений ASP.NET.
Роль состояния представлений ASP.NET
Термин состояние представлений уже упоминался множество раз здесь и в предыдущей главе без формального определения, так что позвольте демистифицировать этот термин раз и навсегда. В рамках классической технологии ASP требовалось, чтобы Web-разработчики вручную указывали значения элементов формы в процессе построения исходящего HTTP-ответа, Например, если поступивший HTTP-запрос содержал пять текстовых блоков с конкретными значениями, файл *.asp должен был извлечь текущие значения (с помощью коллекций Form или QueryString объекта Request) и вручную поместить их в поток HTTP-ответа (ясно, что это было весьма неудобное решение). Если разработчик этого не делал, то пользователь видел пять пустых текстовых блоков.
Читать дальшеИнтервал:
Закладка: