有没有办法通知Web服务器(在我的情况下,在C#中托管MVC2 webapp的Web服务器)数据库发生了变化这一事实?目的是使Web服务器缓存与数据库保持同步.
ASP.NET中有轮询构造允许这样做,但我更喜欢推送系统.我也假设数据库可以由Web服务器本身以外的元素操作.
我对sql Server / ASP MVC的有限诀窍说,一种方法是通过创建一个表格TRIGGER,它几乎击中了一个强制更新的URL.
解决方法
如果变化率适中,
SqlDependency
是可行的方法.对于高变化率,您最好轮询更改.要了解sqlDependency的工作原理,请阅读
The Mysterious Notification. ASP已经内置了对sqlDependency的支持,即
SqlCacheDependency
.还有
LinqToCache,如果可能的话,它会将sqlDependency功能添加到任意LINQ查询中.
触发绝对是一个很大的禁忌.你不能让数据库事务在某些URL上等待响应,你的性能将基本没有崩溃.更不用说可用性问题(如果URL没有响应,更新将失败,无论出于何种原因).