我在数据库中有几行。我创建了一个Windows服务,每隔5分钟更新一次数据库中的新行。检查数据库中的新行 - 使用轮询或SQL依赖性?
现在我想跟踪新行,如果有任何.....在WCF服务,并发送一个通知给客户端。
数据库是SQL Server,轮询数据库或此SQL依赖关系是什么路要走?一段代码会帮助很多
我在数据库中有几行。我创建了一个Windows服务,每隔5分钟更新一次数据库中的新行。检查数据库中的新行 - 使用轮询或SQL依赖性?
现在我想跟踪新行,如果有任何.....在WCF服务,并发送一个通知给客户端。
数据库是SQL Server,轮询数据库或此SQL依赖关系是什么路要走?一段代码会帮助很多
将“date
”或“datetime
”(取决于您的SQL Server版本)字段添加到您的表中,这是“发送给客户端”日期。默认为NULL
。
为您的服务编写一个存储过程来调用,该函数返回一个包含NULL
日期的所有行的结果集。在同一过程中将所有空日期设置为CURRENT_TIMESTAMP
以将它们标记为“发送到客户端”
根据需要频繁轮询过程。
哦,我想我会去与这个SQL缓存依赖项,添加数据库中的另一列是不是一个选项..谢谢反正.. –
@PiyushSardana - 如果你已经解决了你的问题,请张贴它作为答案,并接受它。这样你就不会有人继续为这个问题添加答案。 – Tony
我没有解决它,但我找到了,这可能会帮助我在WCF中实现相同,这里的链接http://www.dotnetcurry.com/ShowArticle.aspx?ID=263 –
对于频率为5分钟的更新,使用查询通知(即SqlDependency
)要好得多。一个例子见Remove pooling for data changes from a WCF front end。如果您使用LINQ,那么您也可以使用LinqtoCache,它为LINQ查询提供SqlDependency支持的缓存失效。
或插入新记录的触发器... –
@st_stefanov以及触发器如何通知客户端? –
Remus,如果他的实现允许的话,有一个解决方案。他可以使用发布/订阅MQ通信解决方案并发送所有客户端收到的通知消息,他们将在此事件中执行其逻辑。我们一直在使用它多年。 –