CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > 技巧

ASP.NET应用中缓存Oracle数据

作者: 佚名,  出处:中国IT实验室收集整理, 责任编辑: 李春禹, 
2007-12-19 11:27
  进一步的,文章提出了一个保持缓存数据以使其始终与Oracle数据同步的实现。当相应的数据源改变时,我们可以用这种方法来从缓存中删除项目。为更新缓存依赖文件,我们需要写一个C函数或Java存储过程。

  以下是引用片段: 

 PublicFunction getDatabaseConnection(ByVal strconnection as string) As OracleConnection
  Dim con As Oracle.DataAccess.Client.OracleConnection = Nothing
  Try
  con = New Oracle.DataAccess.Client.OracleConnection
  con.ConnectionString = strconnection
  con.Open()
  Return con
  Catch ex As Exception
  ThrowNew Exception("Exception in Database Tier Method getOracleConnection() "
  + 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接受一个绝对路径作为参数,并在合适的目录中创建缓存依赖文件。若文件已经存在,则先删除然后创建。

  import java.io.*;public class UpdFile {public static void updateFile(String filename) { try {  File f = new File(filename);  f.delete();  f.createNewFile(); } catch (IOException e) {  // log exception }};

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

  (p_filename IN VARCHAR2)

  AS LANGUAGE JAVA

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

  Web Farm部署中的Oracle数据缓存

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

  结论

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

共4页。 9 1 2 3 4

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i