Что такое частичная обратная связь?

Я опытный веб-разработчик в нескольких различных сетевых технологиях. В настоящее время я работаю в .Net, и мне стало интересно узнать о частичной обратной передаче.

Я понимаю, что такое функция Partial Postback и как работать с ней программно, но мне не нравится использовать технологию, которую я не понимаю, как реализован частичный Postback.

Я понимаю запросы HTTP и асинхронные запросы, то, что меня беспокоит в частичном обратном обращении, заключается в том, что оно похоже на то и другое.

Возможно, мне просто что-то не хватает, но мне кажется, что Partial Request делает оба, сначала отпираясь от асинхронного запроса POST, но браузер, похоже, знает, и индикатор активности начинает вращаться, что обычно происходит только во время Страница запроса HTTP-запроса.

Так может ли кто-нибудь пролить свет на то, как Microsoft внедрила на уровне HTTP-запроса частичный обратный вызов?

Ответы

Ответ 1

Из Как написать свой собственный частичный обратный вызов в ASP.NET 2.0:

В основе частичной пост-обратной конструкции лежит XMLHttpRequest, DOM API. Он может использоваться внутри языка сценариев веб-браузера, например JavaScript, для отправки HTTP-запроса непосредственно на веб-сервер без необходимости перезагрузки всей страницы и обработки ответа с сервера снова на языке сценариев. Эти данные в форме XML могут затем использоваться для управления элементами страницы на стороне клиента.

При нажатии кнопки на странице ASPX клиентский HTTP-запрос выполняется с использованием API XMLHttpRequest. Этот запрос обрабатывается HttpHandler на веб-сервере. HttpHandler получает запрос, обрабатывает его и отправляет ответ на объект XMLHttp на странице ASPX. Объект XMLHttp, в свою очередь, потребляет ответ и отображает соответствующие изменения пользовательского интерфейса, но браузер не должен полностью обновлять страницу.

UpdatePanel не только обновляет элементы управления, которые он содержит, но также обновляет значение ViewState с помощью, полученной с сервера, после обработки.

Ответ 2

Я знаю, что на этот вопрос уже был дан ответ, но я не согласен с ответом...

По моему скромному мнению, термин "частичная обратная передача" используется неправильно в вышеупомянутой статье " Как написать свою собственную частичную обратную передачу в ASP.NET 2.0. В этой статье автор показывает, как сделать вызов AJAX HttpHandler. Это совсем другой процесс, чем вызов PartialPostback в ASP.NET.

Я верю, что эта "разница" ускользает в (выше ответах) последумом комментарии, который гласит:

"UpdatePanel не только обновляет элементы управления, которые он содержит, но и обновляет значение ViewState с помощью, полученной с сервера, после обработки".

Хотя этот заключительный комментарий несколько неуловим - иллюстрирует определение "частичного обратной передачи" с помощью ASP.NET UpdatePanel... он не объясняет, что такое частичная обратная передача (что, опять же, является совсем другим процессом чем обычный вызов AJAX).

Чтобы разработать...


MICROSOFT ASP.NET AJAX Использование UpdatePanel:
На базовом уровне Microsoft AJAX поддерживает асинхронные запросы через частичную обратную передачу. Частичные обратные вызовы повторяют один и тот же жизненный цикл страницы, как и синхронный обратный перенос полной страницы, но обновляются только определенные регионы или элементы управления на странице - , что обеспечивает частичную рендеринг страниц. MICROSOFT ASP.NET AJAX зависит от шаблона перехватчика для генерации и обработки частичной обратной передачи. После инициализации библиотеки JavaScript MICROSOFT ASP.NET AJAX добавляют набор обработчиков событий клиента для перехвата вызовов, которые обычно инициируют обратную передачу полной страницы. Функция обработчика перехватывает обратные вызовы от зарегистрированных элементов управления, генерирует частичную обратную передачу, обрабатывает контент ответа и затем обновляет содержимое асинхронно. Поскольку MICROSOFT ASP.NET AJAX построен на существующей архитектуре postback ASP.NET, он использует проверку событий и поддерживает состояние представления во время процесса частичной обратной передачи. Ваш стандартный "нормальный" вызов AJAX не выполняет эти действия!

Короче говоря...

MICROSOFT ASP.NET AJAX использует "нормальный" AJAX для " ajax-ify" на страницах и добивается частичных обновлений... и при этом он торгует и управляет временем просмотра MULTIPLE за один раз. Это ПОЧЕМУ это называется "частично-обратной" . Впоследствии это также объясняет, почему они изначально описывали UpdatePanel как средство для создания ajaxy ваших страниц (поскольку это не то же самое, что использовать AJAX).


НОРМАЛЬНЫЕ звонки AJAX:
Асинхронные запросы, инициированные с использованием JavaScript в браузере, создают новое соединение с сервером. Да... это может включать в себя перенос с сохранением состояния на страницу, но также запросы без учета состояния без ресурсов, кроме текущей страницы. Однако в случае асинхронной обратной передачи только информация, которая должна обрабатываться текущей страницей на сервере, передается в запрос (и вы можете контролировать это). Значение, содержимое не нужно отправлять всю страницу, не нужно управлять видом-состоянием, а встроенные в накладной ресурс (native) служебные данные можно обойти. Между тем, асинхронная обратная передача только вызывает сервер-события, связанные с обработкой ТЕКУЩЕГО ЗАПРОСА. Вот почему обычный AJAX намного быстрее, чем PARTIAL POSTBACKS!

Эти точки иллюстрируют...

Не только ЧТО "частичная обратная передача"... но ПОЧЕМУ существует разница между "частичным обратным обращением" и "ajax". Вот почему это лучший ответ.