
- •Интернет сокеты.
- •Система доменных имен
- •Интернет сервисы (что такое, примеры).
- •World Wide Web (основные стандарты и отличие от сети Internet).
- •Адресация ресурсов web-сети.
- •Общее описание протокола http.
- •Методы http запроса.
- •Заголовки http сообщений.
- •Задание типов содержания http сообщения.
- •Поддержка различных типов содержания http сообщений.
- •Поддержка сеансов работы пользователей с помощью куки.
- •Основные понятия языки гипертекстовой разметки html.
- •Формы языка html (назначение, описание, логика работы).
- •Каскадные таблицы стилей (css) (назначение, описание и использование).
- •Основные понятия языка сценариев JavaScript.
- •Объектная модель документа и ее использование в сценариев JavaScript.
- •Web браузеры (виды, функции, архитектура).
- •Web серверы (виды, функции, архитектура).
- •Технология разработки web-приложений Common Gateway Interface (cgi) (логика работы, недостатки).
- •Расширения web-серверов - интерфейс isapi.
- •Расширения web-серверов - интерфейс Java Servlet api.
- •Технология разработки web-приложений ssi.
- •Подход к разработке web-приложений на основе архитектурного шаблона mvc.
- •Что такое asp.Net web-приложения (состав, логика работы, отличие от Windows приложений).
- •Порядок работы asp.Net web-приложения.
- •Конфигурирование asp.Net-приложения.
- •Что такое web формы? Для чего предназначены, что они включают, как описываются?
- •Обработка web-форм на сервере. Жизненный цикл web страницы. Основные события и действия.
- •Класс Page. Назначение, основные элементы, способ использования.
- •Серверные html элементы управления (состав, логика работы).
- •Серверные Web элементы управления (состав, логика работы).
- •Что такое обратные отправки (post back)? Для чего и как используются?
- •Проверочные элементы управления (validator) (состав, способы использования).
- •Связывание элементов управления с данными (что такое, как выполняется).
- •Темы asp.Net web-приложения.
- •Способы сохранения состояния приложения (виды, назначение).
- •Способы оформления web-страниц приложения (css, Темы)
- •Назначение, описание и использование MasterPages.
- •Обеспечение аутентификации и авторизации пользователей в web-приложении.
- •Реализация переходов между web-формами и навигации на сайте.
- •Взаимодействие web приложения с Базами Данных.
- •Организация разработки web-приложений.
- •Особенности разработки web-приложений.
- •Современные методологии разработки web-приложений.
Способы сохранения состояния приложения (виды, назначение).
Одной из сложностей разработки web-приложения является то, что протокол HTTP является протоколом без сохранения состояния.
Это означает, что переданные в HTTP запросах данные на web-сервере автоматически не сохраняются, а уничтожаются после их обработки на сервере.
Однако среда выполнения ASP.Net приложений предоставляет много возможностей сохранения полученных от пользователей данных.
Это достигается за счет использования таких средств, как:
поддержка состояние отображения (коллекция ViewState);
поддержка состояния сеанса работы пользователя (объект Session);
поддержка состояние web-приложения (объект Application).
использование куки.
Отображение состояния web-формы ViewState
Отображения состояние web-формы ViewState выполняет автоматическое сохранение значений свойств ЭУ и доступно только внутри данной web-формы.
Значения отображения состояния передаются в HTTP ответе web-приложения (скрытое поле __VIEWSTATE) и возвращаются опять web-приложению в HTTP запросе браузера.
Данные полученные обратной отправке (postback) от web-формы опять отправляются пользователю (т.е. сохраняются).
В переменных состояния можно хранить данные любого типа (если они сериализуются).
Отображение состояния (ViewState) целесообразно использовать в том случае, когда необходимо организовать хранение данных в пределах одной страницы.
Все элементы управления используют отображение состояния по умолчанию для сохранения значений свойств между операциями обратной отправки данных.
В отображении состояния можно организовать хранение своих собственных данных, состоящих из простых типов и специальных объектов.
Работа с отображением состояния реализуется с помощью коллекции, которая является словарем.
данные хранятся в формате имя-значение.
каждый элемент, при этом индексируется с помощью уникального строкового имени или номера.
Например для добавления в коллекцию ViewState элемента с именем Name и присваивает ему значение “Иван”.
ViewState["Name"]="Иван";
При этом, если в коллекции до этого не существовало элемента с именем Name, то он добавляется, если же такой элемент был, его значение заменяется новым.
Для извлечения элемента из коллекции необходимо использовать имя элемента.
Т.к. коллекция ViewState позволяет сохранять данные состоящие не только из простых типов, но и специальные объекты (в общем случае любые объекты), во время извлечения значения элемента, необходимо преобразовать его тип к тому, который будет извлекаться.
Например можно извлечь значение элемента Name и преобразовать его в строку.
string name;
if (ViewState["Name"]!=null)
name=(string)ViewState["Name"];
Проверка на наличие элемента коллекции необходима, т.к. при обращении к несуществующему элементу коллекции возникает исключение NullReferenceException.
Особенности ViewState
Во-первых, количество информации, сохраняемой в состояние вида не должно быть большим, т.к. это приводит к увеличению объема передаваемых данных от сервера к клиенту и наоборот.
В случае необходимости сохранения большого количества данных лучше воспользоваться средствами базы данных, либо использовать состояние сеанса.
Во-вторых, в ViewState нельзя сохранять критично важные данные (доступ пользователя к которым необходимо запретить),
они легко могут быть декодированы и прочитаны, более того, опытный пользователь сможет изменить эти данные при осуществлении запроса на обратную отправку.
в этом случае лучше воспользоваться состоянием сеанса.
Кроме этого ViewState не позволяет сохранять информацию, которая будет использоваться несколькими страницами.
В этом случае лучше воспользоваться состоянием сеанса, объектами куки, либо строкой запроса.
Хранение состояния сессии
Сессия это сеанс работы одного пользователя, в ходе которого запросы пользователя не поступают через интервал времени больший, чем задано в установках сервера.
Хранение состояния сеанса работы пользователя выполняется с помощью объекта Session.
Он используется для хранения любого типа пользовательских данных, которые необходимо сохранять между последовательностью запросов одного и того же пользователя.
Пользовательские данные при этом сохраняются в формате «имя=значение».
Объект Session позволяет сохранить информацию на одной странице и использовать ее на другой и поддерживает любые типы объектов (в том числе и объекты своих классов).
Использует тот же синтаксис работы с коллекцией, что и ViewState.
Отличается только имя коллекции – Session (свойство объекта Page).
Каждый пользователь приложения имеет разные сессии и разные коллекции информации.
Объект Session идеально подходит для хранения такой информации, как «корзина для покупок», когда пользователь переходит между страницами сайта.
Управление состоянием сессии (Session state) является трудоемким способом, который требует дополнительных ресурсов процессора и памяти сервера.
Это не часть HTTP стандарта.
ASP.Net присваивает каждой сессии 120 битный идентификатор.
Только этот id передается между web-сервером и пользователем.
Работа с состоянием сеанса практически аналогично работе с состоянием вида, за исключением того, что вместо ключевого слова ViewState используется Session.
Например, для сохранения объекта user в памяти сеанса, необходимо выполнить следующий код:
Session["user"]=user;
Для восстановления сохраненного объекта user необходимо воспользоваться следующим кодом:
user=(User) Session["user"];
Состояние сеанса уничтожается в следующих случаях:
если пользователь закрывает браузер;
по истечении 20 минут с момента последней активности пользователя;
при явном завершении сеанса из программного кода с помощью вызова метода Session.Abandon().
Управление состоянием сессии
Когда пользователь предъявляет id сессии,
ASP.Net ищет соответствующую сессию;
считывает сериализованные данные связанные с данной сессией;
преобразует их в объекты оперативной памяти;
Помещает их в специальную коллекцию, из которой они могут быть получены.
При обработки HTTP запроса он проходит через обработку модулем SessionStateModule, который
При поступлении запроса генерирует ID, получает данные сессии от внешнего провайдера состояния (external state providers) и привязывает данные к контексту запроса.
При окончании обработки запроса сохраняет информацию страницы.
Хранением информации сессии занимается внешний компонент, который называется провайдером состояния (state provider)
InProc
хранение состояния сеанса в оперативной памяти на Web server (по умолчанию, самое быстрое).
Подходит для простых приложений, но если требуется поддерживать данные состояния между запусками, необходимо использовать StateService или SQLServer.
StateServer
хранение состояния сеанса с помощью сервиса, называемого «ASP.NET Служба состояния» (State Service).
Данные сохраняются между запусками и доступны с разных Web серверам в Web ферме.
Сервис ASP.NET State Service установлен на любом компьютере где установлены ASP.NET Web Application (по умолчанию его надо запускать вручную).
SQLServer
хранение состояния сеанса в базе данных на SQL Server.
Данные сохраняются между запусками и доступны с разных Web серверам в Web ферме.
Хранение на «ASP.NET State Service» более эффективно, чем на SQL Server. Однако, база данных на SQL Server предлагает больше возможностей по интеграцию и отчетности.
Custom
позволяет задать своего провайдера хранилища данных, если он разработан.
Off
данные состояния сессии не хранятся.
Если они не используются, то для повышения эффективности их лучше отключить.
Передача ID сессии
Если куки включены то они используются
ID сессии передается в специальном cookie (c именем ASP.NET_SessionId),
данный куки создается автоматически, когда используется коллекция Session.
Данный подход используется по умолчанию.
Если куки отключены, то используется измененный URL
в этом случае ID сессии передается в специально измененном URL.