Ноу Інти, лекція, анатомія додатків

збереження стану

Однією з найбільш важливих проблем при розробці веб-додатків є специфіка взаємодії клієнта і сервера по протоколу HTTP. Як відомо, взаємодія клієнта і сервера по протоколу HTTP відбувається в режимі "запит-відповідь", при цьому сервер видаляє всі дані, специфічні для цієї взаємодії після того, як відправить відповідь. Веб-сервер змушений робити подібну очищення через те, що він може обслуговувати велику кількість клієнтів.

Однак, незважаючи на це в більшості випадків веб-додатку потрібно зберігати стан додатки між виконуються запитами. Наприклад, з додатком може знадобитися зберегти ім'я користувача та пароль для подальшої взаємодії з сайтом, або зберегти стан форми для її коректної обробки в майбутньому. Цю специфіку враховує платформа Microsoft ASP. NET і розробнику не потрібно винаходити власних механізмів щодо збереження стану.

Платформа ASP. NET містить цілий ряд інструментів, які дозволяють зберігати стан між HTTP-запит:

  • рядок запиту (QueryString);
  • стан виду (ViewState);
  • стан Сенас (Session);
  • стан додатки (Application);
  • профілі;
  • та інші.

Як видно, є безліч способів збереження стану. Вони відрізняються один від одного контекстом збереження стану або, інакше кажучи, часом життя даних, збережених між запитами.

Рядок запиту (QueryString) дозволяє зберігати стан при зверненні до поточної або зовнішньої сторінці сайту. При цьому значення стан передається в рядку запиту в якості параметра GET. Наприклад, такий запит може виглядати наступним чином:

При такому способі збереження стану, після перенаправлення користувача на нову (або ту ж саму) сторінку, в GET-параметр передається її стан. При цьому не мають значення назви ключів або типи сторінок.

З цих причин подібний спосіб збереження стану хоч і використовується в практиці розробки веб-додатків, але його популярність дуже мала. Замість цього часто використовуються інші способи збереження стану.

Стан виду (ViewState) дозволяє передавати стан між HTTP-запит в рамках однієї і тієї ж сторінки.

Платформа ASP. NET Web Forms (див. Далі) містить спеціальний спосіб обробки форми, який називається Postback. Ідея цього механізму полягає в тому, щоб відправити дані на сервер за допомогою HTTP-методу POST. при якому всі поля форми також відправляються на сервер і при цьому звернення здійснюється до тій же самій сторінці. Після звернення до веб-сторінці за допомогою механізму Postback форма як правило робить певний цикл обробки і модифікує вміст або зовнішній вигляд форми.

Використання механізму ViewState тісно пов'язане з механізмом Postback. Механізм ViewState забезпечує передачу даних між HTTP-запит на основі прихованого поля, яке зберігається в HTML-код сторінки. Якщо сторінці потрібно зберегти стан між запитами Postback. вона зберігає ці значення в прихованому полі HTML. При наступному Postback-запит ці дані знову будуть відправлені на сервер. де будуть оброблені. Так процес може повторюватися кілька разів, поки відбуваються звернення Postback до даної форми. Однак, стан ViewState втрачається при переході до іншої сторінки.

Приховане поле ViewState в коді HTML виглядає наступним чином.

Ноу Інти, лекція, анатомія додатків

Схожі статті