Callback и его отличие от Postback
Перед тем как рассмотреть примеры новой возможности обратного вызова, посмотрим на работу механизма возврата данных формы на сервер (Postback) типичной страницы ASP .NET.
Когда на странице инициируется событие отправки данных, запускается большой и сложный механизм.
- Init
- Load State
- Process Postback Data
- Load
- Postback Events
- Save State
- PreRender
- Render
- Unload
В обычной ситуации постбэка событие на странице, например, щелчок на кнопке формы, вызывает отправку запроса HTTP POST web-серверу. Сервер обрабатывает запрос обработчиком IPostbackEvent Handler и запускает весь жизненный цикл страницы заново. Она загружает состояние страницы, обрабатывает введенные данные, обрабатывает события отправки, сохраняет состояние страницы, генерирует страницу заново и отправляет ее браузеру клиента. Страница полностью перезагружается, это занимает время и использует дополнительный трафик.
С другой стороны, можно задействовать возможность обратного вызова, как показано на рисунке.
В этом случае событие (например, нажатие на кнопку) вызывает выполнение скрипта-обработчика у клиента (функция JavaScript), который посылает асинхронный запрос web-серверу.
На сервере обработчик ICallbackEventHandler пропускает запрос через процесс, похожий на тот, который используется при постбэке, но некоторые крупные этапы этого процесса (например, отрисовка страницы) пропускаются. После того как информация загружена, результат возвращается к объекту, вызвавшему обратный вызов. Код скрипта вставляет эти данные в web-страницу, используя возможности JavaScript делать это без обновления страницы. Количество фаз жизненного цикла сокращается до 6:
- Init
- Load State
- Process Postback Data
- Load
- CallBack Event
- Unload
Чтобы понять, как это работает, посмотрите на простой пример в следующем разделе.