Это правильный подход для опроса базы данных? - PullRequest
1 голос
/ 23 июля 2010

Я создаю службу WCF (CALLER) для Azure.Служба (CALLER) вызывает асинхронные методы другой сторонней службы (EXTN).Сторонняя служба вызывает методы обратного вызова другой службы WCF (LISTNER), размещенной мной в Azure.ЗВОНОК вводит данные службы в полях данных со статусом = В ОЖИДАНИИ.

В службе обратного вызова (LISTNER) я обновляю статус запроса как ЗАВЕРШЕННЫЙ / ОТКАЗАНО в базе данных.Я хочу, чтобы CALLER был уведомлен об обновлении статуса в базе данных SQL Azure.

Я думаю о создании рабочего потока, который будет периодически опрашивать базу данных, чтобы проверить обновление статуса и уведомить об этом CALLER.

Есть ли другая лучшая / эффективная альтернатива этому подходу?

Ответы [ 3 ]

1 голос
/ 27 июля 2010

Необходимые функции реализованы в служебной шине AppFabric .

0 голосов
/ 31 июля 2010

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

Очереди, вероятно, самый эффективный способ отправки уведомлений, поэтомуони были созданы в первую очередь.Служебная шина используется для создания полупостоянных соединений между различными службами, предоставляя намного больше функций, чем простая передача сообщений.Это делает его немного менее гибким, требует немного больше программирования.Его модель выставления счетов (плата за соединение SB) также отражает это.Вы не должны использовать много SB-соединений.

0 голосов
/ 23 июля 2010

Не совсем. Есть другой способ (не уверен, что он работает на Azure) с использованием встроенной очереди сообщений SQL (очередь на обновления через триггер), и ваш поток может непрерывно опрашивать (есть способ получить чтение WAIT для etnry в очередь, так что вы выпускаете один, и он ждет), но кроме этого ...

... нет, не на уровне базы данных.

У меня есть похожее приложение, и я обрабатываю его с помощью триггера уведомлений ВНЕ БАЗЫ (т.е. уведомления отправляются из бизнес-логики об изменении значений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...