Различие между клиентскими обратными вызовами и методами страницы Ajax - ASP.NET

И в Macromedia Dreamweaver и в Eclipse я делал следующее:

Working folder: 
C:\Development\
    \ProjectA
    \ProjectB
    \ProjectC

Каждый проект имеет свой собственный репозиторий, и каждый контроль имеет только/trunk/.

Примечание: Для Eclipse не создавайте проект репозитория SVN, просто создавайте "Приложение Java", или "проект" Приложения PHP как Вы обычно был бы, и использовать внешнюю программу, чтобы сделать контроль в ту папку. Eclipse затем автоволшебно обнаружит .svn информацию и позволит Вам использовать инструменты SVN, все еще с помощью надлежащей рабочей области.

14
задан Nick 7 September 2009 в 16:35
поделиться

3 ответа

По сути, Обратные вызовы клиента и методы страницы Ajax делают то же самое. Они используют объект XMLHttpRequest для отправки запроса (обычно асинхронного) на некоторый URL-адрес, получения результатов этого запроса, а затем выполнения предоставленного вами метода обратного вызова ( обратного вызова в нижнем регистре c ), передавая результаты запроса вашему методу.

При этом существует одно большое различие между двумя подходами:

  • Методы страницы реализованы как статические методы на вашей странице. Класс вашей страницы - это просто удобный контейнер для этих методов, который действительно может быть размещен где угодно (веб-служба, пользовательский HttpHandler и т. Д.). Поскольку ни один экземпляр никогда не будет построен, клиент не Нет необходимости отправлять данные ViewState , и Asp.Net не должен проходить жизненный цикл страницы . Обратной стороной является то, что у вас нет доступа к методам и свойствам экземпляра класса Page . Однако во многих случаях это можно обойти, преобразовав методы экземпляра в статические методы. (См. эту статью для получения дополнительной информации.)

  • Обратные вызовы клиентов реализованы как методы экземпляра на вашей странице. У них есть доступ к другим методам экземпляра на вашей странице, включая данные, хранящиеся в ViewState . Это удобно, но имеет свою цену: для создания экземпляра Page клиент должен отправить относительно большой объем данных на сервер и пройти через значительную часть жизненного цикла страницы. . ( В этой статье есть хорошая диаграмма , показывающая, какие части.)

Кроме того, стоимость их настройки довольно сильно варьируется, и клиенты используют их по-разному:

  • Обратные вызовы клиентов требуют изрядное количество идиосинкразических строительных лесов код, тесно связанный с Asp.Net (как показано по ссылке выше). Данный гораздо более простые альтернативы, которые у нас есть сейчас, я склонен сказать, что эта технология устарела (для новой разработки).

  • Вызов методов страницы с использованием ScriptManager требует меньше настроек, чем клиентские обратные вызовы: у вас просто есть чтобы разместить ScriptManager на вашем страницы, установите EnablePageMethods = true , затем получите доступ к методам вашей страницы через прокси PageMethods прокси.

  • Вызов методов страницы с использованием jQuery требует только подключения библиотеки jQuery (и, конечно же, знания jQuery).

Я предпочитаю использовать jQuery для доступа к методам страницы, потому что он не зависит от серверной инфраструктуры и предоставляет только нужное количество деталей реализации, но на самом деле это всего лишь вопрос вкуса. Если вы выберете ScriptManager , его прокси-сервер сделает вызов метода страницы немного проще для глаз, что некоторые могут посчитать более важным.

22
ответ дан 1 December 2019 в 10:19
поделиться

Я бы сказал, что есть различия, но я бы сказал, делайте это так, как вам удобнее.

Я использовал оба подхода, и вызовы jQuery со страницы обычно Быстрее. Я пишу обработчик ashx, который выполняет работу, необходимую для вызова jquery (запрашивает базу данных, что-то обрабатывает и т. Д.), И вызывает его со страницы. Я бы не стал использовать aspx-страницу для вызова jQuery, потому что вы отправляете много информации, которая вам вообще не понадобится. Разница / преимущество использования вызова Ajax.Net заключается в том, что вам не нужно создавать другую страницу для обработки вещей, вы можете использовать для этого те же события страницы.

Например, если вам нужно заполнить второй раскрывающийся список, используя выбранное значение в первом, вы можете использовать Ajax.Net для вызова SelectedIndexChanged в коде страницы позади и при его запуске перейти к Page_Load, SelectedIndexChanged, Page_PreRender и так далее. В методе событий вы должны запросить базу данных и заполнить второй ddl.

С jQuery все может быть немного иначе. Вы вызываете обработчик ashx, обработчик - это просто серверный метод, который творит чудеса и возвращает данные в желаемой форме (json, массив строк, xml и т. Д.) И заполняет второй ddl с помощью javascript. Как я уже говорил вам ранее, некоторые люди не чувствуют себя слишком комфортно с клиентским кодом и склонны делать это на сервере, но я всегда говорю, что вам нужно использовать правильный инструмент для правильной работы, поэтому знайте свои инструменты и применяйте их мудро.

Если вы хотите узнать больше об ASP.Net, обработчиках ASHX и jQuery, вы можете прочитать сообщение , которое я написал об этом.

Надеюсь, это поможет .-

4
ответ дан 1 December 2019 в 10:19
поделиться

По сути, они одинаковы. Оба :

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

Они разные. :

  1. Методы страницы просто требуют, чтобы вы украсили статический метод атрибутом, и все готово. Остальная часть магии выполняется обработчиками и модулями HTTP. Обратные вызовы требуют, чтобы вы реализовали несколько интерфейсов и самостоятельно обработали асинхронные обработчики событий . Я считаю, что они немного сложнее.
  2. Обратные вызовы работают только с некоторыми элементами управления . Вызов методов страницы позволяет влиять на любой элемент управления с помощью настраиваемого JavaScript. У обратных вызовов есть небольшое преимущество в том, что поведение на стороне клиента уже написано и исправлено. Однако с методами страницы вы получаете большую гибкость (поведение на стороне клиента определяется вами).

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

Что касается ScriptManager по сравнению с вопросом JQuery, я чувствую, что здесь вкус больше, чем что-либо еще. Мне нравится синтаксис JQuery, и я чувствую, что он работает лучше, но по большому счету самая дорогая вещь - это XmlHttpRequest ... после этого выполнение javascript, вероятно, будет незначительным по сравнению с этим.

хотя (поведение на стороне клиента определяется вами.)

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

Что касается ScriptManager по сравнению с вопросом JQuery, я чувствую, что здесь вкус больше, чем что-либо еще. Мне нравится синтаксис JQuery, и я чувствую, что он работает лучше, но по большому счету самая дорогая вещь - это XmlHttpRequest ... после этого выполнение javascript, вероятно, будет незначительным по сравнению с этим.

хотя (поведение на стороне клиента определяется вами.)

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

Что касается ScriptManager по сравнению с вопросом JQuery, я чувствую, что здесь вкус больше, чем что-либо еще. Мне нравится синтаксис JQuery, и я чувствую, что он работает лучше, но по большому счету самая дорогая вещь - это XmlHttpRequest ... после этого выполнение javascript, вероятно, будет незначительным по сравнению с этим.

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

Что касается ScriptManager по сравнению с вопросом JQuery, я чувствую, что здесь вкус больше, чем что-либо еще. Мне нравится синтаксис JQuery, и я чувствую, что он работает лучше, но по большому счету самая дорогая вещь - это XmlHttpRequest ... после этого выполнение javascript, вероятно, будет незначительным по сравнению с этим.

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

Что касается ScriptManager по сравнению с вопросом JQuery, я чувствую, что здесь вкус больше, чем что-либо еще. Мне нравится синтаксис JQuery, и я чувствую, что он работает лучше, но по большому счету самая дорогая вещь - это XmlHttpRequest ... после этого выполнение javascript, вероятно, будет незначительным по сравнению с этим.

мне кажется, здесь вкус больше, чем что-либо еще. Мне нравится синтаксис JQuery, и я чувствую, что он работает лучше, но по большому счету самая дорогая вещь - это XmlHttpRequest ... после этого выполнение javascript, вероятно, будет незначительным по сравнению с этим.

мне кажется, здесь вкус больше, чем что-либо еще. Мне нравится синтаксис JQuery, и я чувствую, что он работает лучше, но по большому счету самая дорогая вещь - это XmlHttpRequest ... после этого выполнение javascript, вероятно, будет незначительным по сравнению с этим.

0
ответ дан 1 December 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: