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