ADO.NET 2.0中的查询通知

http://tech.ddvip.com   2008年01月22日    社区交流

内容摘要:学习如何使用ADO.NET 2.0和SQL Server 2005中新的通知技术处理即席数据刷新。

  4.消息可以:

  a.引发通知并将通知传回注册的客户端。

  b.驻留在Service Broker's的服务队列中,高级客户端可以实现自己的处理机制。

ADO.NET 2.0中的查询通知

  图1. 通知服务概览

  ASP.NET的SqlCacheDependency类(System.Web.Caching.SqlCacheDependency)和OutputCache指示词会使用SqlDependency实现自动的通知功能。如果ADO.NET客户端需要对查询通知拥有更多的控制权,那么可以使用SqlNotificationRequest并且手工处理Service Broker队列,实现自己喜欢的处理逻辑。深入解释Service Broker已经超出了本文的范围,A First Look at SQL Server 2005 for Developers的示例章节以及Roger Wolter的文章A First Look at SQL Server 2005 Service Broker将对您有所帮助。

  在继续下面的内容之前,明确这一点是十分重要的:当结果集改变时,每个SqlNotificationRequest或者SqlDependency只收到一条通知消息。不管数据改变是由于执行INSERT语句在数据库上进行了插入、使用DELETE语句删除了一行或多行,还是使用UPDATE更新了一行或多行,通知消息都是完全一样的,通知中也不包含任何有关改变的行数或者哪些行被改变的信息。当缓存对象或者用户应用程序收到这条关于数据改变的消息时只有一种选择,刷新整个结果集或者重新注册通知。您不会接收到多条消息,当该条消息引发后,数据库中的用户订阅也就不存在了。此外查询通知框架的工作前提是:为多种不同事件发送通知总比根本不通知要好。因此不仅仅在结果集改变时会发送通知,删除或者修改了结果集引用的表、回收数据库、以及其他一些原因也会发送通知。缓存或程序对通知的响应方式通常是一样的,即刷新缓存数据并且重新注册通知。

来源:51CTO    责编:豆豆技术应用

正在加载评论...