2013-07-21 4 views
1

Сценарий выглядит следующим образом:Detect Database Query Update

  1. Клиент A и B Клиент и вошли в приложение.
  2. Клиент A и клиент B имеют заполненные сетки (отображает загруженные файлы).
  3. Клиент A загружает файл в базу данных.
  4. Клиент B должен обнаружить, что добавлены данные (файл, который был загружен клиентом A), и снова заново заполнить сетку.

Мне нужно знать поток, который работает на шаге 4. Я прочитал об использовании SqlDependency и просмотрел эту статью. http://rusanu.com/2007/11/01/remove-pooling-for-data-changes-from-a-wcf-front-end/
Однако, если я не ошибаюсь, в этой статье используются службы Notification Services, которые устарели в SQL Server 2008. Я также хотел бы знать, как регистрировать код на клиенте, когда он обнаружил, что в результате запроса в базе данных произошел сбой. Благодаря

Edited
В настоящее время варианты SqlDependency, триггер, WCF, шаблон Observer. Если кто-нибудь знает, может ли кто-либо из этих решений реализовать/не реализовать в моем сценарии, пожалуйста, не стесняйтесь комментировать и дайте мне знать.

ответ

2

Вы можете сделать это на прикладном уровне. У вас может быть централизованный метод/класс для обновления файлов в вашей базе данных. Затем вы можете зарегистрировать наблюдателей (шаблон наблюдателя), чтобы получать уведомления обо всех обновлениях. Таким образом, вы можете обновлять несколько клиентов при изменении данных в базе данных.

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

+0

У вас есть образец, который демонстрирует способ, которым вы описываете? Спасибо – user2541163

+0

На самом деле вы можете прочитать о схеме Observer в Интернете.Но чтобы все было просто, просто проигнорируйте его на предмет моментов и hardcode объект, который должен получить уведомление в вашем DAO или службе, которое обновит таблицу DB – Mangoose

+0

Im все еще немного запутался. Допустим, если клиент А обновляет файлы в базе данных и регистрирует наблюдателей, Хоус делает клиент Б известным, что наблюдатели регистрируются? – user2541163

1

Вы ошибаетесь, статья не использует службы уведомлений. После используется в статье:

  • на вершине есть веб-сервис (WCF дуплексный канал), что клиент звонит; клиенты имеют обратный вызов, который вызывается, когда что-то изменяется в данных; это также можно использовать с опросом базы данных; с другой стороны, в статье используется более сложный способ реагирования на изменения данных.
  • на базовом уровне доступа к данным, сервер приложений использует обычное подключение ADO.Net к , используя SqlDependency; используя эту технологию, абонент присоединяет событие, которое будет запущено при изменении данных; сервер немедленно отправит обновленные данные клиенту
  • на стороне базы данных, SQL Server Service Broker используется SqlDependency внутренне, чтобы избежать опроса; Вы можете сделать это вручную самостоятельно, если вы знаете, как манипулировать объектами Service Broker

Таким образом, ни одна из этих технологий не использует устаревшие Notification Services. Все, что вам нужно запустить (даже если вы используете SQL Server 2012), описано в этой статье.

+0

Спасибо или уточните – user2541163