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





Постбэк происходит, когда данные (вся страница) на странице отправляются от клиента на сервер… т.е. данные отправляются обратно на сервер, и, таким образом, страница обновляется (перерисовывается)… воспринимайте это как «отправка серверу всей страницы (asp.net) с данными».
С другой стороны, обратный вызов - это тоже особый вид обратной передачи, но это просто быстрый возврат к серверу для получения небольшого набора данных (обычно), и, таким образом, страница не обновляется, в отличие от обратной передачи ... воспринимайте это как ' вызов сервера и получение обратно данных некоторый '.
С Asp.Net, ViewState не обновляется при вызове обратного вызова, в отличие от постбека.
Причина того, что вся страница публикуется с помощью ASP.Net, заключается в том, что ASP.Net включает всю страницу в <form> с почтовый метод, и поэтому, когда на странице нажимается кнопка отправки, форма отправляется на сервер со всеми поля формы ... в основном сама страница целиком.
Если вы используете FireBug (для Firefox), вы действительно можете видеть обратные вызовы, вызываемые на сервер в Console. Таким образом, вы увидите, что конкретные данные отправляется на сервер (Request), а также данные, которые сервер отправил вам обратно (Response).
На приведенном ниже изображении показаны жизненные циклы страниц как обратной передачи, так и обратного вызова на веб-сайте на основе ASP.NET:

(source: esri.com)
Когда указатель на функцию передается другой функции, она позже вызывает
Источник изображения: edndoc.esri.com/arcobjects/9.2/NET_Server_Doc/developer/ADF/…
Обратная передача происходит, когда от клиента к серверу отправляется запрос на ту же страницу, что и пользователь, просматривающий в данный момент. Когда происходит обратная передача, обновляется вся страница, и вы можете видеть типичный прогресс на индикаторе выполнения в нижней части браузера.
Обратный вызов, обычно используемый с AJAX, происходит, когда запрос отправляется от клиента на сервер, для которого страница не обновляется, только его часть обновляется без какого-либо мерцания в браузере.
Я согласен с ответом Дреаса, но хотел бы добавить пару моментов. Postback - это термин, который совсем недавно был введен программированием ASP .NET, как объяснил Дреас, тогда как обратный вызов является более общим и использовался задолго до появления веб-разработки. Фактически, я впервые услышал об обратном вызове еще в те дни, когда начал программировать на C (возможно, этот термин существовал до этого, я не знаю), и это просто означает указатель на функцию и этот указатель на функцию (назовите это A) передается другой функции (назовите эту B), которая позже вызовет A. Обратный вызов также недавно используется Диспетчер подключений Yahoo UI и другими фреймворками Ajax, но я считаю, что этот термин впервые использовался еще в старые времена C.
Обратная передача происходит, когда запрос отправляется на сервер, нет необходимости указывать подробную информацию о безопасности для каждого запроса.
Когда вы делаете запрос для другой страницы, обратный вызов используется сервером
Обратная передача также является двусторонней, в основном, когда обратная передача выполняется в это время, он вызывает специальный метод, который известен как двусторонняя передача. Обратная передача выполняется на стороне сервера, а обратная передача - на стороне клиента.
Большая часть этого обсуждения - язык болтовни ASP.NET ....
Ответ - ДА. Postback - это термин, специфичный для Microsoft ASP.NET. Но помните, что поставщики, такие как Microsoft, оборачивают свои СОБСТВЕННЫЕ версии этих процессов вокруг своих собственных реализаций, сбивая нас всех с толку относительно того, что ДЕЙСТВИТЕЛЬНО ПРОИСХОДИТ в мире Http / Html.
Их версия POSTBACK в основном представляет собой традиционный HTTP-запрос POST, отправляемый обратно на исходный сервер. Но в ASP.NET они делают это, наклеивая гигантский тег элемента HTML FORM (с атрибутом метода POST) вокруг всей веб-страницы, а не традиционные элементы управления формой в одной крошечной части веб-страницы. Они делают это, потому что используют спецификацию HTTP для поддержания «состояния» своей страницы и ее элементов управления, а также для обеспечения того, чтобы вся страница, даже традиционная разметка полей, не являющихся формами, вернулась без изменений.
К сожалению, это отправляет ОГРОМНОЕ количество ненужных данных по сети, так что их VIEWSTATE и его сестра POSTBACK на странице стали многими рассматриваться как трата полосы пропускания и небрежный способ реализации состояния веб-страницы. Я могу показать вам, что большинство современных браузеров и веб-сайтов, если они разработаны с использованием кешируемого CSS и согласованной разметки HTML, будут возвращать состояние страницы совершенно естественно, используя собственный HTML-кеш браузеров. т.е. полный POSTBACK часто не нужен.
ОБРАТНЫЙ ЗВОНОК - это просто 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. Это долгий путь и отличная система. Но было бы полезно, если бы больше людей понимало основы того, что они делают, прежде чем использовать их, поскольку эти фреймворки можно настроить и немного упростить, чтобы улучшить их, если вы увидите, что на самом деле происходит под капотом.
Фактически, обратный вызов - это более общий термин программирования для функции, которую необходимо выполнить после завершения другой функции.