当前位置:中国站长下载文章中心网页编程.NET编程 → 为ASP.NET应用缓存Oracle数据

为ASP.NET应用缓存Oracle数据

减小字体 增大字体 作者:编辑整理  来源:互联网  发布时间:2008-9-15 22:29:33
on

con.ConnectionString=strconnection

con.Open()

Returncon

CatchexAsException

ThrowNewException("ExceptioninDatabaseTierMethodgetOracleConnection()"+ex.Message,ex)

EndTry

EndFunction

Oracle数据库Tier实现

定义Employee表上DML事件的触发器体如下。这个触发器简单的调用一个PL/SQL包裹函数来更新名为tblemployee.txt的操作系统文件。文件副本在两台机器(机器1和机器2)上更新。两台机器运行同一个Web应用的不同实例来均衡负载。这里administrator指Oracle数据库的方案(schema)对象所有者。

begin

administrator.plfile('machine1\\download\\tblemployee.txt');

administrator.plfile('machine2\\download\\tblemployee.txt');

end;

为更新缓存依赖文件,我们需要写一个C函数或Java存储过程。我们的例子中选择了Java存储过程,因为Oracle数据库服务器有一个内置的JVM,使得书写Java存储过程很方便。必须有足够的内存分配给Oracle实例的系统全局区(SGA)中的Java池。静态方法updateFile接受一个绝对路径作为参数,并在合适的目录中创建缓存依赖文件。若文件已经存在,则先删除然后创建。

importjava.io.*;

publicclassUpdFile{publicstaticvoidupdateFile(Stringfilename)

{

try{

Filef=newFile(filename);

f.delete();

f.createNewFile();

}

catch(IOExceptione)

{

//logexception

}

};

PL/SQL包裹实现如下。包裹函数以文件名为参数,调用Java存储过程中updateFile方法。

(p_filenameINVARCHAR2)

ASLANGUAGEJAVA

NAME'UpdFile.updateFile(java.lang.String)';

WebFarm部署中的Oracle数据缓存

正如我们讨论的例子中所示,Web服务器1和机器2构成了一个WebFarm来为我们的Web应用提供负载均衡。每台机器运行同一个Web应用的一个实例。在这个情况下,每个实例可以拥有自己的存放在Cache对象中的缓存数据副本。当Employee表改变,相应的数据库触发器更新两台机器上的文件tblemployee.txt。每个实例都指定一个到tblemployee.txt的缓存依赖,WebFarm的两个实例都可以正确更新,使得两个实例上的数据缓存可以和数据库表Employee保持同步。

结论

数据缓存是优化Oracle数据库上ASP.NET应用的有效技巧。尽管ASP.NET不允许设定缓存的数据库依赖,Oracle触发器协同Java存储过程可以扩展ASP.NET缓存的威力从而允许Oracle数据库缓存。这个技巧也可以适用于WebFarm部署。

上一页  [1] [2]