Как вы отправляете обновление в браузер, не поддерживающий HTML5?

#asp.net #.net-4.0

#asp.net #.net-4.0

Вопрос:

Мы рассматриваем веб-приложение для предоставления пользователям частых обновлений системных данных. Первоначально данные будут ограничены давлением в системе, расходом и т.д. Но концепция может быть применима ко многим областям нашего бизнеса. Данные хранятся в SQL Server.

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

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

  1. Существует ли технология push, которую мы можем использовать для ASP.NET ?
  2. Если нет, или если это лучшее решение, следует ли нам опросить базу данных с помощью jQuery / AJAX? Есть предложения по примерам, на которые нам следует обратить внимание?

Ответ №1:

Используя HTTP, вы можете отправлять ответы только на запросы клиента, поэтому отправка содержимого без веб-сокетов невозможна.
Наиболее распространенными решениями являются

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

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

Ответ №2:

Лучшим решением здесь является опрос через ajax.

Поскольку вы используете ASP.NET некоторые встроенные элементы управления ajax могут сделать это довольно простым:

http://ajax.net-tutorials.com/controls/timer-control/

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

Ответ №3:

«Comet» — это технология, которую вы ищете. По сути, это несколько методов, которые люди придумали для выполнения того, о чем вы просите. Самый простой из этих методов заключается в том, что браузер постоянно запрашивает сервер о любых обновлениях, о которых он должен знать. Наиболее универсальный (но сложный) метод предполагает разумное использование встроенного <script> тега, который ссылается на динамический ресурс скрипта.

Ответ №4:

Вы можете использовать ASP.NET Timer управление в сочетании с UpdatePanel для периодической проверки наличия новых данных, а затем обновления UpdatePanel .