检测数据库查询更新

时间:2013-07-21 10:25:26

标签: c# sql sql-server database wcf

方案如下:

  1. 客户端A和客户端B都已登录到该应用程序。
  2. 客户端A和客户端B已填充其gridview(显示上载的文件)。
  3. 客户端A将文件上传到数据库。
  4. 客户B必须检测到添加了数据(客户A上传的文件)并再次重新填充网格视图。
  5. 我需要知道第4步的工作流程。我阅读了有关使用SqlDependency并阅读了本文http://rusanu.com/2007/11/01/remove-pooling-for-data-changes-from-a-wcf-front-end/的信息 但是,如果我没错,本文使用在SQL Server 2008中不推荐使用的Notification Services。我还想知道当检测到数据库中的查询结果发生更改时如何在客户端中注册代码。感谢

    被修改
    目前的选项是SqlDependency,trigger,WCF,Observer模式。如果有人知道在我的场景中是否可以/不能实现这些解决方案中的任何一个,请随时发表评论并告诉我。

2 个答案:

答案 0 :(得分:2)

您可以在“应用程序”层中执行此操作。 您可以使用集中方法/类来更新数据库中的文件。 然后,您可以注册观察者(观察者模式)以获取任何更新的通知。 通过这种方式,您可以在数据库中的数据更改时刷新多个客户端。

只有在没有其他流程或直接数据库更新的数据更改时,上述建议才有效。

答案 1 :(得分:1)

你错了,文章没有使用Notification Services。 以下用于文章:

  • 在顶部有一个客户端调用的Web服务(WCF双工通道); 客户端有一个回调,当数据发生变化时会调用该回调; 这也可以用于数据库轮询;另一方面文章 使用更先进的技术来对数据变化做出反应
  • 在底层数据访问层,app server使用普通的ADO.Net连接 使用SqlDependency;使用这种技术,用户附加一个事件 将在数据发生变化时被解雇;然后服务器会立即发送 更新的数据到客户端
  • 在数据库端本身,SQL Server Service Broker由SqlDependency使用 在内部避免投票;如果你知道如何,你可以自己手动完成 操纵Service Broker对象

因此,这些技术都不使用已弃用的Notification Services。您需要启动的所有内容(即使您使用SQL Server 2012)也会在该文章中进行描述。