#asp.net #.net-4.0
#asp.net #.net-4.0
Вопрос:
Мы рассматриваем веб-приложение для предоставления пользователям частых обновлений системных данных. Первоначально данные будут ограничены давлением в системе, расходом и т.д. Но концепция может быть применима ко многим областям нашего бизнеса. Данные хранятся в SQL Server.
Вопрос в том, как заставить таблицу на веб-странице обновляться при вставке новых данных в базу данных. Например, насос сообщает о новом значении потока. Обновления базы данных можно регулировать, но реально мы ожидаем новое обновление каждую минуту или две для наших целей.
Похоже, что это тот случай, когда будет использоваться push-уведомление, но что мы можем использовать с ASP.NET ? О HTML5 не может быть и речи, хотя мы просмотрели несколько демонстрационных версий с веб-сокетами.
- Существует ли технология push, которую мы можем использовать для ASP.NET ?
- Если нет, или если это лучшее решение, следует ли нам опросить базу данных с помощью 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
.