Таймер на основе триггеры событий

голоса
10

Сейчас я работаю над проектом с конкретными требованиями. Краткий обзор этих следующим образом:

  • Данные извлекаются из внешних веб-сервисов
  • Данные хранятся в SQL Server 2005
  • Данные манипулируют с помощью веб-интерфейса
  • Служба окна, которая взаимодействует с веб-службами не имеет связи с нашим внутренним веб-интерфейс, кроме как через базы данных.
  • Связь с веб-службами должен быть как раз на основе, и запускается с помощью вмешательства пользователя на веб-интерфейсе.

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

1) Адаптировать таблица триггера для хранения двух дополнительных параметров. Одно существо «Является ли это повременной или вручную добавить?» и обнуляемое поле для хранения деталей синхронизации (точный формат будет определенно). Если это manaully создан триггер, пометить его как обрабатывается , когда триггер был уволен, но если это приуроченная триггер.
или
2) Создайте вторую услугу окна , что создает триггеры на лету в определенные промежутки времени.

Второй вариант кажется помадки мне, но управление вариант 1 может легко превратиться в программирования кошмар (как вы знаете, если последний опрос таблицы вернул событие, которое должно выстрелить, и как вы потом остановить его повторно запуск на следующем опросе)

Я был бы признателен, если бы кто-нибудь мог бы сэкономить несколько минут, чтобы помочь мне решить, какой маршрут (один из этих двух, или, возможно, третий, Unlisted один), чтобы взять.

Задан 06/08/2008 в 11:43
источник пользователем
На других языках...                            


3 ответов

голоса
1

Почему бы не использовать SQL задания вместо службы Windows? Вы можете инкапсулировать все вы DB «триггер» код в хранимых процедурах. Тогда ваш пользовательский интерфейс и SQL Работа может вызвать те же хранимые процедуры и создавать триггеры, так же, является ли это вручную или на временном интервале.

Ответил 07/08/2008 d 19:24
источник пользователем

голоса
0

@Vaibhav

К сожалению, физическая архитектура решения не позволит какой-либо прямой связи между компонентами, кроме веб-интерфейса для базы данных и базы данных для службы (которые могут затем вызвать к веб-сервисов). Я, однако, согласны, что повторное использование классов связи было бы идеальным здесь - я просто не могу это сделать в рамках нашего бизнеса *

* Разве это не всегда так, что технически «лучше» решение загнаны внешних факторов?

Ответил 06/08/2008 d 12:03
источник пользователем

голоса
0

То, как я вижу это.

У вас есть службы Windows, который играет роль планировщика и в нем есть некоторые классы, которые просто вызывают WebServices и поместить данные в базах данных.

Таким образом, вы можете использовать эти классы непосредственно из WebUI, а также и импортировать данные, основанные на спусковом WebUI.

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

Вы можете даже преобразовать весь код в ехе, который затем можно запланировать с помощью планировщика Windows. И вызвать тот же ехе всякий раз, когда пользователь запускает действие из веб-интерфейса.

Ответил 06/08/2008 d 11:53
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more