Разница между постбэком и обратным вызовом


116

Я продолжаю слышать эти слова « обратный вызов » и « постбэк » брошены вокруг.
В чем разница между двумя?

Является ли обратная передача очень специфичной для страниц ASP.NET?

Ответы:


204

Postback происходит, когда данные (вся страница) на странице отправляются от клиента на сервер ... т.е. данные отправляются обратно на сервер , и, таким образом, страница обновляется (перерисовывается) ... подумайте об этом как « отправка серверу всей страницы (asp.net), полной данных ».

С другой стороны, обратный вызов также является особым видом обратной передачи , но это просто быстрый возврат к серверу для получения небольшого набора данных (обычно), и, следовательно, страница не обновляется, в отличие от обратной передачи. ... подумайте об этом как о « вызове сервера и получении обратно некоторых данных ».

В Asp.Net ViewState не обновляется при вызове обратного вызова , в отличие от обратной передачи.

Причина , по которой вся страница отправляется с ASP.Net, потому что ASP.Net охватывает всю страницу в <form>с методом пост , и поэтому при нажатии кнопки передачи на странице, форма отправляется на сервер со всеми поля, которые есть в форме ... в основном сама вся страница.

Если вы используете FireBug (для Firefox), вы действительно можете увидеть обратные вызовы, вызываемые на сервер в файле Console. Таким образом, вы увидите, какие конкретные данные отправляются на сервер ( Request), а также данные, которые сервер отправил вам обратно ( Response).


На изображении ниже показаны жизненные циклы страниц как обратной передачи, так и обратного вызова на веб-сайте на основе ASP.NET:

Жизненные циклы страниц ASP.NET
(источник: esri.com )


18
На самом деле обратный вызов - это более общий термин программирования для функции, которую необходимо выполнить после завершения другой функции.
Райан Доэрти,

1
Это когда указатель на функцию передается другой функции, которую она позже вызовет
Андреас Греч,


18

Обратная передача происходит, когда от клиента на сервер отправляется запрос на ту же страницу, что и пользователь, просматривающий в данный момент. Когда происходит обратная передача, обновляется вся страница, и вы можете видеть типичный прогресс на индикаторе выполнения в нижней части браузера.

Обратный вызов, обычно используемый с AJAX, происходит, когда запрос отправляется от клиента на сервер, для которого страница не обновляется, только часть его обновляется без какого-либо мерцания в браузере.


5

Я согласен с ответом Дреаса, но хотел бы добавить пару моментов. Postback - это термин, который совсем недавно был введен программированием ASP .NET, как объяснил Дреас, тогда как обратный вызов является более общим и использовался задолго до появления веб-разработки. Фактически, я впервые услышал об обратном вызове еще в те дни, когда я начал программировать на C (возможно, этот термин существовал до этого, я не знаю), и это просто означает указатель на функцию и этот указатель на функцию (назовите это A) передается другой функции (назовите это B), которая позже вызовет A. Обратный вызов также недавно используется Yahoo UI Connection Manager и другими фреймворками Ajax, но я считаю, что этот термин впервые использовался еще в старые времена C.


4

Большая часть этого обсуждения - язык болтовни ASP.NET ....

Ответ ДА. Postback - это "термин", специфичный для Microsoft ASP.NET. Но помните, что поставщики, такие как Microsoft, оборачивают свои СОБСТВЕННЫЕ версии этих процессов вокруг своих собственных реализаций, сбивая нас всех с толку относительно того, что ДЕЙСТВИТЕЛЬНО ПРОИСХОДИТ в мире Http / Html.

Их версия POSTBACK в основном представляет собой традиционный HTTP-запрос POST, отправляемый обратно на исходный сервер. Но в ASP.NET они делают это, прикрепляя гигантский тег HTML-элемента FORM (с атрибутом метода POST) вокруг всей веб-страницы, а не традиционные элементы управления формой в одной крошечной части веб-страницы. Они делают это, потому что они используют спецификацию HTTP для поддержания «состояния» своей страницы и ее элементов управления, а также для обеспечения того, чтобы вся страница, даже традиционная разметка полей без формы, вернулась в неизменном виде.

К сожалению, это отправляет ОГРОМНЫЙ объем ненужных данных по сети, так что их VIEWSTATE и его сестра POSTBACK на странице стали многими рассматриваться как трата пропускной способности и небрежный способ реализации состояния веб-страницы. Я могу показать вам, что большинство современных браузеров и веб-сайтов, если они разработаны с использованием кешируемого CSS и согласованной разметки HTML, будут возвращать состояние страницы совершенно естественно, используя собственный HTML-кеш браузеров. т.е. полный POSTBACK часто не нужен.

CALLBACK - это просто JavaScript. Это просто цирковые уловки ECMASCRIPT, которые ASP.NET хранит в том, что они называют своим AJAX API, в гигантских библиотеках JavaScript, которые ваш браузер загружает с сервера и которые разработчики ASP.NET неосознанно упаковывают на свои веб-страницы, чтобы инициировать изменения на веб-странице без полного POSTBACK. ASP.NET API для AJAX просто создает весь этот массивный Javascript, который находится на стороне клиента и который запускается в браузере, когда пользователь что-то меняет, перематывает что-то или щелкает что-то в браузере, вызывая традиционные события DOM браузера JavaScript, затем отправляет гигантский объем JSON или других данных обратно на сервер для обработки. Затем это возвращается и принимается библиотеками и объектами Javascipted в памяти браузера и изменяет части веб-страницы и разметки пользователя.

Было сказано, что около 5-10% пользователей и браузеров отключили Javascript, поэтому весь этот JSON и AJAX вылетят из строя для этих людей. т.е. обратный звонок работать не будет.

Вот что происходит за кулисами. Если вы спросите меня, многое из этого перебор. Вот почему модели контроля Интернета в ASP.NET подвергались критике в прошлом.

Если вы на секунду отказались от ASP.NET, вы могли бы сами написать простое поле FORM на веб-странице HTML с одним текстовым полем и кнопкой, нажать его и посмотреть, как оно отправляется на сервер, точно так же, как это делала бы страница ASP.NET, но быстрее и проще. Вот что такое настоящий POSTBACK. Браузер, естественно, отправляет серверу необходимый для этого HTTP-заголовок POST, но кэширует HTML в остальной части страницы, поэтому визуализирует сам по себе молниеносно.

Для CALLBACK вы можете просто добавить простой код Javascript / ECMAScript на ту же HTML-страницу, где, когда пользователь наводит курсор на какой-то текст или кнопку, щелкает или изменяет поле формы, веб-страница не POST, но за кулисами вы пусть Javascript отправит что-то на сервер. Другое дело, как вы справляетесь с этим с помощью собственного JavaScript, JSON или библиотек. Но это не волшебство. Для людей, у которых не отключен Javascipt или Javascript, вы должны проектировать страницы без ОБРАТНОГО ВЫЗОВА и просто кэшировать любые изменения, которые возвращаются при нажатии элементов управления полями формы или гиперссылок. Это одна из причин пересмотреть процедуры обратного вызова, хотя большинство современных пользовательских агентов теперь настроены для подпрограмм веб-сайтов с ECMAScripted.

Вот что сбивает людей с толку ... эти реализации поставщиков очень простых HTTP-запросов и трюков с Javascripted накладываются на непонятный язык. Затем это побуждает людей создавать чудовищные веб-приложения, которые делают все эти ненужные вещи, которые решило бы очень простое кодирование.

Я все еще использую и рекомендую ASP.NET. Это долгий путь и отличная система. Но было бы полезно, если бы больше людей понимало основы того, что они делают, прежде чем использовать их, поскольку эти фреймворки можно настроить и немного упростить, чтобы улучшить их, если вы увидите, что на самом деле происходит под капотом.


0

Обратная передача происходит, когда запрос отправляется на сервер, нет необходимости указывать подробную информацию о безопасности для каждого запроса.

Когда вы делаете запрос, обратный вызов другой страницы используется сервером


0

Обратная передача также является двусторонней, в основном, когда обратная передача выполняется в это время, он вызывает специальный метод, который известен как двусторонняя передача. Обратная передача выполняется на стороне сервера, а обратная передача - на стороне клиента.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.