Сервер отправлял события с помощью SQL

#c# #javascript #asp.net #server-sent-events

#c# #javascript #asp.net #сервер-отправленные-события

Вопрос:

Кажется, я не могу найти способ сделать это, поэтому я решил спросить здесь. Я совершаю asp.net сайт, который использует данные из базы данных SQL Server. Я использую JavaScript для получения данных и форматирования их так, как я хочу.

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

Комментарии:

1. SignalR похож на сокет. ввод-вывод для .net land

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

3. если вы хотите поговорить с источником событий JS, это всего лишь слегка измененный http-ответ. вы можете использовать sql-триггер / хранимую процедуру для запуска ответа sse (если вы транслируете) или отправить его из того же места, где вы общаетесь с базой данных и клиентом.

Ответ №1:

SqlDependency:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx

http://dotnet.dzone.com/articles/c-sqldependency-monitoring

Использование класса SqlDependency — хороший способ повысить эффективность вашего приложения, управляемого данными (будь то Web или Windows Forms), за счет устранения необходимости постоянного повторного запроса к базе данных для проверки изменений данных.

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

Вот старая книжная метка:

http://rusanu.com/2006/06/17/the-mysterious-notification/