Я сейчас работаю над проектом с особыми требованиями. Краткий обзор этого:
- Данные извлекаются из внешних веб-сервисов
- Данные хранятся в SQL 2005
- Данные обрабатываются через веб-интерфейс
- Служба Windows, которая взаимодействует с веб-службами, не связана с нашим внутренним веб-интерфейсом, кроме как через базу данных.
- Связь с веб-службами должна быть основана на времени и инициироваться с помощью вмешательства пользователя в веб-интерфейсе пользователя.
Текущая (предпроизводственная) модель для запуска связи через веб-сервис осуществляется через таблицу базы данных, в которой хранятся запросы на запуск, сгенерированные из ручного вмешательства. Я действительно не хочу иметь несколько механизмов триггера, но хотел бы иметь возможность заполнять таблицу базы данных триггерами, основанными на времени вызова. На мой взгляд, есть два способа сделать это.
1) Адаптируйте таблицу триггеров для хранения двух дополнительных параметров. Один из них "Это основано на времени или добавлено вручную?" и обнуляемое поле для хранения временных данных (точный формат должен быть определен). Если это триггер, созданный вручную, пометьте его как обработанный при срабатывании триггера, но не если это синхронизированный триггер.
или
2) Создайте вторую службу Windows, которая создает триггеры на лету через определенные интервалы времени.
Второй вариант мне кажется выдумкой, но управление вариантом 1 может легко превратиться в кошмар программирования (откуда вы знаете, если последний опрос таблицы возвратил событие, которое нужно запустить, и как вы затем остановите его повторно при следующем опросе)
Я был бы признателен, если бы кто-нибудь мог выделить несколько минут, чтобы помочь мне решить, какой маршрут (один из этих двух или, возможно, третий, не включенный в список) выбрать.