我目前正在从事一个具有特定要求的项目。简要概述如下:
- 从外部网络服务检索数据
- 数据存储在 SQL 2005 中
- 数据通过 Web GUI 进行操作
- 与 Web 服务通信的 Windows 服务与我们的内部 Web UI 没有耦合,除了通过数据库。
- 与 Web 服务的通信既需要基于时间,又需要通过用户对 Web UI 的干预来触发。
Web 服务通信触发的当前(预生产)模型是通过存储手动干预生成的触发请求的数据库表。我真的不想拥有多个触发机制,但希望能够根据调用时间使用触发器填充数据库表。在我看来,有两种方法可以做到这一点。
1) 调整触发器表以存储两个额外的参数。一个是“这是基于时间的还是手动添加的?” 和一个可以为空的字段来存储时间细节(具体格式待定)。如果它是手动创建的触发器,则在触发触发器时将其标记为已处理,但如果它是定时触发器则不标记。
或
2) 创建第二个 Windows 服务,以定时间隔动态创建触发器。
第二个选项对我来说似乎是一个骗局,但选项 1 的管理很容易变成一个编程噩梦(你怎么知道表的最后一次轮询是否返回了需要触发的事件,然后你如何停止它在下一次投票时重新触发)
如果有人能抽出几分钟帮助我决定走哪条路线(这两条路线之一,或者可能是第三条未列出的路线),我将不胜感激。