正在阅读:15秒为ASP.NET应用缓存Oracle数据15秒为ASP.NET应用缓存Oracle数据

2004-02-14 09:34 出处:CSDN 作者:ern(翻译) 责任编辑:linjixiong


  为了进一步研究上述问题的解决方案,我们举一个Web应用的例子来说明如何实现。例子中,我们使用VB.NET实现的ASP.NET应用,通过Oracle Data Provider for .NET (ODP)来访问 Oracle 9i数据库。

  这个例子使用Oracle数据库中一个名为Employee的表。我们为该表上insert, update, delete设定触发器。这些触发器调用一个封装了一个Java存储过程的PL/SQL函数。这个Java存储过程负责更新缓存依赖的文件。

  ASP.NET Tier的VB.NET实现

  我们设计了含一个回调方法的监听类来处理缓存项无效时的通知。这个回调方法RemovedCallback用一个代理(delegate)函数来注册。回调方法onRemove的声明必须与CacheItemRemovedCallback代理声明又相同的签名。

  Dim onRemove As CacheItemRemovedCallback = Nothing

  onRemove = New CacheItemRemovedCallback(AddressOf RemovedCallback)

  监听事件处理方法RemovedCallback负责处理数据库触发器的通知,其定义如下。若缓存项失效,可用数据库方法调用getRecordFromdatabase()从数据库取出数据。参数”key”指从缓存中删除的项的索引位置。参数”value”指从缓存中删除的数据对象。参数"CacheItemRemovedReason"指从缓存中删除数据项的原因。

  PublicSub RemovedCallback(ByVal key AsString, ByVal value AsObject, ByVal reason As CacheItemRemovedReason)

  Dim Source As DataView

  Source = getRecordFromdatabase()

  Cache.Insert("employeeTable ", Source, New

  System.Web.Caching.CacheDependency("d:\download\tblemployee.txt"), 

  Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, 

  CacheItemPriority.Normal, onRemove)

  EndSub


察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品