我有一个ASP .NET Web服务,它利用来自客户端的长期连接。
在15分钟内,Web Service检查SQL表中记录中字段值的更改。如果该值发生更改,则立即使用ReadMessage向客户端发送响应。每30秒对数据库进行一次检查/轮询。这有几个缺点:
我想要的是找到一种方法来通知Web服务,以便活动的http客户端更新记录。
还应注意,每个与Web服务的客户端连接都在表中具有自己的特定记录。
答案 0 :(得分:2)
您是否考虑在数据库中设置一些触发器?如果您使用的是SQL Server,则可以使用SQL Server CLR集成。
http://msdn.microsoft.com/en-us/library/ms254963%28v=VS.80%29.aspx
答案 1 :(得分:2)
我认为SqlDependency正是您所寻找的。查询通知允许应用程序在更改查询结果时收到通知
答案 2 :(得分:0)
你可以在桌子上放一个触发器。免责声明:我试图远离触发器,因为它很容易编写一个很差的错误,当它出错时很难调试。但是,我还没有写过CLR触发器,因为你可以更好地控制错误处理,所以我认为它有更多的安全性。
但更好的方法是让更新表的任何流程开始时通知您的Web服务更改,如果这是一个选项。