Разница между обратным и обратным вызовом - PullRequest
113 голосов
/ 13 декабря 2008

Я продолжаю слышать такие слова, как ' callback ' и ' postback '. В чем разница между двумя?

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

Ответы [ 6 ]

199 голосов
/ 13 декабря 2008

Обратная передача происходит, когда данные (вся страница) на странице публикуются от клиента к серверу. То есть данные отправляются обратно на сервер , и, таким образом, страница обновляется. (перерисовывается) ... воспринимайте это как ' отправка серверу всей страницы (asp.net), заполненной данными '.

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

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

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

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


На следующем рисунке показаны жизненные циклы страниц как обратной, так и обратной связи на веб-сайте ASP.NET:

ASP.NET Page Life Cycles
(источник: esri.com )

18 голосов
/ 13 декабря 2008

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

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

5 голосов
/ 14 декабря 2008

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

3 голосов
/ 28 января 2017

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

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

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

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

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

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

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

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

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

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

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

0 голосов
/ 27 марта 2012

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

0 голосов
/ 23 декабря 2008

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

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

...