Если я разрабатываю asp. Сетевое приложение, могут там быть некоторые случаи, где я должен забыть о MS Ajax UpdatePanels и предпочесть jQuery. Ajax для обновления некоторой части моей страницы?
Спасибо
Да, на самом деле, вы должны почти всегда предпочесть использование собственной (или jQuery) функциональности ajax.
Существует много накладных расходов, связанных с MS Ajax UpdatePanel (она выполняет полный постбэк, а затем обновляет элемент(ы), которые изменились на странице), поэтому приятные возможности сайта с поддержкой AJAX - отзывчивость, непрерывность и т.д. - почти полностью теряются (IMHO). У вас очень мало контроля над тем, что на самом деле передается по кабелю, над тем, что возвращается, и над тем, как это обрабатывается после возвращения клиенту.
С jQuery Ajax, с другой стороны, вы получаете полный и мгновенный контроль, вы можете делать настолько легкие (или тяжелые) запросы, насколько пожелаете, и давайте посмотрим правде в глаза - API ничуть не сложнее в использовании, чем API UpdatePanel.
Учитывая это, все еще существуют сценарии, когда UpdatePanel подходит или даже лучше. Особенно в ASP.NET WebForms, может быть сложно вернуть только часть страницы таким образом, чтобы она плавно деградировала, если пользователь не может использовать javascript, а для быстрого стиля разработки "drag-and-drop", jQuery действительно не может конкурировать. (Нравится ли вам разработка "drag-and-drop" или нет - это совершенно другая дискуссия...)
.Конечно, ИМХО вам стоит предпочесть jQuery стандартным панелям обновления ASP.Net. Причина (основная) - производительность, когда вы отправляете какие-то данные с помощью jQuery.ajax, вы отправляете только то, что нужно серверу, чтобы понять сообщение. Обычно это 1-2 параметра текста.
когда вы делаете тот же самый пост, используя панель обновления, вся страница отправляется на сервер, затем вся страница возвращается и область рендерится.
если вы используете jQuery, вы можете создать ashx страницу на сервере, у этой страницы нет загрузки страницы и жизненного цикла обычной веб-формы, и она также очень легкая.
Я бы сказал, что вам определенно следует отдать предпочтение 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.
Как отмечали другие, MS-Ajax и UpdatePanels работают плохо - иногда до непригодности. Как отмечали другие, обратные вызовы ajax, которые должны быть маленькими и легкими, являются тяжелыми, потому что они также включают полный ViewState.
В дополнение к этим проблемам, я обнаружил еще несколько недостатков MS-Ajax:
Последнее замечание: единственное преимущество MS-Ajax и UpdatePanels в том, что вы можете быть на 90% незнающим javascript и все же написать их. "Традиционный" ajax включает в себя гораздо больше javascript-кода, чем MS-Ajax.
Если вы знакомы со всей схемой обратной передачи ASP.Net, одно из преимуществ использования таких элементов управления состоит в том, что (большую часть времени) они защищают вас от побочных эффектов, таких как обратные передачи и тому подобное. Но в этом конкретном случае за это приходится платить: у вас есть полная обратная передача для каждого запроса AJAX (который будет включать состояние просмотра), что может снизить производительность по сравнению с прямым запросом AJAX, cf:
http: // geekswithblogs.net/dlussier/archive/2007/09/06/115188.aspx
Я также не уверен, хорошо ли он обрабатывает межсайтовые запросы (JSONP и тому подобное), так что это два предостережения, которые следует учитывать.