|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊?sql 本文以SQLServer2005上完成为准,SQLServer2000由于完成机制分歧,请查阅相干材料。
步骤一:在SQLServer2005上实行ALTERDATABASE<DatabaseName>SETENABLE_BROKER;语句让响应的数据库启用监听服务,以便撑持SqlDependency特征。
这条语句最幸亏数据库未实行任何事件的情形下实行。
步骤二:挪用SqlDependency.Start(StringstrConnectionString)办法,在使用程序端启用依附监听器。
该办法的参数为一个数据库的毗连字符串,该数据库必需已实行过步骤一的操纵。
关于统一毗连字符串,若已实行过该语句,再次实行不会产生任何非常,但前往值会为False.
假如是在Web程序中利用,倡议能够将该语句放在Application_Start事务中实行。
监听是基于数据库的,而依附才能够基于表大概查询。
步骤三:该步骤分离有两种分歧的做法。该阶段必需注重步骤。
办法A:创建毗连工具,再创立一个SqlCommand实例,创立SqlCacheDependency实例,在这步以后再挪用Command工具来猎取数据(这个按次很主要)。以后挪用Cache的Insert语句创建一个依附于一个详细查询数据集的Cache项。
SqlConnectionconn=newSqlConnection(strConnection);
SqlCommandcommand=newSqlCommand(strCommandText,conn);
SqlCacheDependencydependency=newSqlCacheDependency(command);
//注册办法到托付,该托付是
CacheItemRemovedCallbackonRemove=newCacheItemRemovedCallback(RemovedCallback);
//新增或修正一条缓存纪录
Cache.Insert(strCacheKey,objAppCache,dependency,absoluteExpiration,slidingExpiration,CacheItemPriority.Default,onRemove);
办法B:创建毗连工具,再创立一个SqlCommand实例,最初创立SqlDependency实例。界说SqlDependency的托付OnChange,当数据产生改动时做出响应的处置(好比扫除Cache)。
SqlConnectionconn=newSqlConnection(strConnection);
SqlCommandcommand=newSqlCommand(strCommandText,conn);
SqlCacheDependencydependency=newSqlCacheDependency(command);
dependency.OnChange+=newOnChangeEventHandler(Dependency_OnChange);
注重事项:
不晓得是否是还存在BUG,我在项目开辟中碰到一些奇异的征象。一样的代码,在有的呆板上运转则能捕获到变更,有的则完整没反响;也偶然会呈现Cache刚创建就重复产生依附改动的事务。偶然Cache还会数据产生变更却不激发事务。
但从终极项目实行的情形看,仿佛都只是某些呆板情况酿成的不断定要素?这个没法断定。不外最少数据库端是不是一般启用,能够经由过程SQLServerProfiler来检察监督。我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 |
|