根据数据库插入/更新整合和引发事件?

时间:2011-06-13 07:18:28

标签: .net wcf sql-server-2008 events esb

我们有一个不幸的情况,我们的许多应用程序直接与数据库对话(主要是本机应用程序,我们的托管应用程序通过DAL)。我们有300多个表,需要根据对某些表的修改来引发事件。这些事件将通过企业服务总线(nServiceBus)或MSMQ引发,我们的应用程序将挂钩这些事件。

例如:

  • 如果表1中有插入,表2中有更新,请引发一些事件。
  • 如果表1中有更新,表2中的删除和表3中的更新,则会引发一些事件。

总之,我们预计不会有超过25个活动,每个活动最多不会超过5个表。

的信息:

  1. 我们做了很多长时间运行的任务,我们的应用程序需要轮询才能完成。
  2. 我们有很多旧的应用程序,它们直接与数据库对话,并且更改它们以使用某种DAL不是一种选择。
  3. 我们需要进行一些原始事件过滤,以便某些事件只被审核而不会被提升。
  4. 我们正在使用SQL Server 2008 R,但在我们所有的安装站点上可能没有企业许可证。
  5. 我们正在寻找一种我们可以加入的类似CDC的解决方案。指出可能的解决方案或输入/经验会非常有用:)

1 个答案:

答案 0 :(得分:0)

我更愿意避免这种情况,并且已经避免了几次。

我的备份计划(即制定了草图但从未实施过)是:

  • 使用触发器将消息提供给队列
  • 使用Service Broker阅读这些消息
  • 在服务代理中使用.NET程序集来调用WCF服务(或者可能在MSMQ上发送消息)。

使用队列和Service Broker意味着触发器不需要任何重要的处理并阻止客户端。