Есть ли причина предпочитать jQuery.Ajax asp.net UpdatePanel? - PullRequest
9 голосов
/ 20 июля 2010

Если я занимаюсь разработкой приложения asp.Net, могут ли быть случаи, когда я должен забыть о MS Ajax UpdatePanels и предпочесть jQuery.Ajax для обновления какой-либо части моей страницы?

Спасибо

Ответы [ 5 ]

10 голосов
/ 20 июля 2010

Да, на самом деле вы должны почти всегда предпочитать использовать свою собственную (или jQuery) функциональность ajax до этого.

Существует много накладных расходов, связанных сMS Ajax UpdatePanel (он выполняет полную обратную передачу, а затем обновляет элементы, которые изменились на странице), поэтому полезные функции веб-сайта с поддержкой AJAX - отклики, непрерывность и т. д. - почти полностью потеряны (IMHO).У вас очень мало контроля над тем, что фактически передается по кабелю, что возвращается, и как это обрабатывается по возвращении клиенту.

С другой стороны, с помощью jQuery Ajax вы получаете полный и мгновенный контроль, вы можете делать как легкие (или тяжелые) запросы по своему усмотрению, так и решать - API не имеет никакого отношениясложнее в использовании, чем у UpdatePanel.

Имея это в виду, есть сценарии, когда UpdatePanel в порядке или даже лучше.Особенно в ASP.NET WebForms может быть сложно вернуть только часть страницы таким способом, который изящно ухудшается, если пользователь не может использовать javascript, и для быстрого стиля разработки методом «перетаскивания» существуетJQuery не может конкурировать.(Нравится ли вам разработка методом перетаскивания или нет - это совсем другое обсуждение ...)

2 голосов
/ 20 июля 2010

Я бы сказал, что вам определенно следует отдать предпочтение jQuery AJAX по сравнению с ASP.NET AJAX UpdatePanel. Если вы посмотрите на ASP.NET AJAX-сайт , на самом деле нет упоминания о ASP.NET AJAX и / или UpdatePanel ... но есть много упоминаний о jQuery. Фактически, похоже, что Microsoft предпочитает разработчиков ASP.NET, использующих jQuery в качестве клиентской JavaScript AJAX-инфраструктуры, а не UpdatePanel и связанных элементов управления ASP.NET AJAX.

Они по-прежнему предоставляют ссылки на AJAX Control Toolkit, но с таким количеством подключаемых модулей jQuery зачем вам нужен Toolkit?

UpdatePanel медленнее и громоздче - используйте JQuery AJAX.

2 голосов
/ 20 июля 2010

Конечно, ИМХО, вы должны предпочесть jQuery стандартным панелям обновления ASP.Net. причина (главная) в производительности - когда вы публикуете некоторые данные с помощью jQuery.ajax, вы публикуете только то, что нужно серверу, чтобы понять сообщение. обычно это 1-2 параметра текста.

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

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

1 голос
/ 20 июля 2010

Если вам удобна вся схема обратной передачи ASP.Net, одно из преимуществ использования таких элементов управления состоит в том, что (в большинстве случаев) они защищают вас от побочных эффектов от обратных передач и тому подобного.Но в данном конкретном случае это обходится дорого: у вас есть полный постбэк для каждого AJAX-запроса (который будет включать состояние просмотра), что может привести к снижению производительности по сравнению с прямым AJAX-запросом, ср:

http://geekswithblogs.net/dlussier/archive/2007/09/06/115188.aspx

Я также не уверен в том, хорошо ли он обрабатывает межсайтовые запросы (JSONP и т. П.), Поэтому необходимо учитывать два предостережения.

0 голосов
/ 20 июля 2010

Как утверждают другие, MS-Ajax и UpdatePanels работают плохо - иногда до такой степени, что их невозможно использовать.Как уже отмечали другие, обратные вызовы ajax, которые должны быть небольшими и легкими, тяжелые, поскольку они также включают в себя полный ViewState.

Помимо этих проблем, я обнаружил некоторые другие недостатки MS-Ajax:

  1. Сгенерированный MS javascript включает в себя много служебных данных.Я предполагаю, что они встроили много проверок типов и переменных, чтобы сделать их javascript более безопасными.Эти накладные расходы значительно замедляют обработку на стороне браузера, особенно когда эти сгенерированные функции javascript вызываются многократно / рекурсивно (как в случае некоторых сторонних элементов управления).
  2. Кодовая часть ASPX становится намного большесложный и сложный в обслуживании, потому что один и тот же жизненный цикл страницы выполняется для начальной загрузки страницы, а также для каждого отдельного обратного вызова ajax.Как и весь сложный код, это могут быть преодолены опытными разработчиками и хорошими комментариями к коду - но это, тем не менее, является недостатком.

Последнее замечание: одно из преимуществ MS-Ajax & UpdatePanels - выможет сойти с 90% невежества JavaScript и все еще кодировать их.«Традиционный» Ajax включает в себя FAR больше кодирования JavaScript, чем MS-Ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...