.NET cache对象高速缓存机制
来源:互联网 发布:网络电视机用机顶盒吗 编辑:程序博客网 时间:2024/04/27 15:27
在.net中微软给我们提供高速缓存机制,很好的缓解了服务器的压力。.net中提供了aspx页面缓存,cache对象缓存,sql数据库缓存。
这里我只对cache对象缓存使用和背景说下自己的观点。
经常使用动软的代码生成器,在抽象工厂模式下的采用对象缓存创建DAL层实例。一直没有考虑这里的原理,今天翻阅《ASP.NET3.5高级编程》这本书中的高级缓存,突然明白了一个道理,这就是所谓的“学而不思则罔,思而不学则殆”。我们长期在工作的环境下,反而会不去学习思考一些事情,一些代码只知道复制过来,实现了某个功能就行,这样长期下去对自己的职业成长是有影响的。
大家熟知在BS的开发模式下,并行用户是有很多的,而页面的代码,类中对象是共享访问还是有各自独立的实例。很显然每个用户的数据是分离的,是线程独立的。譬如:每个用户的sessionid不同,每个人的实例对象也是不同。例如,一个student类,我的student和其他用户是不一样的,我的studentid,姓名,年龄都是和其他人不同的。这个唯一性是比较好理解吧。
这样的结果就是如果在短时间内,大量用户并行访问网站,就会造成每个会话都会分配一系列的内存空间,短时间内内存得不到释放,系统的访问速度就会降低,性能受到很大影响。
微软给我提供cache缓存对象,缓存是存储在web服务器中应用程序的应用程序域里,所有用户共享使用。类似Application对象,所有会话共享使用。这里就有一个问题要思考,如果我缓存Student类,那怎么能区隔开不同用户的不通过对象实例,显然是不可行的。那什么样的数据适合保存在cache中共享,什么样的数据每个用户是不同的,无法共享使用。
在动软代码生成器中,生成的项目采用三层架构。三层中在bll层创建dal层对象时,采用cache缓存创建对象实例。我翻看dal层类,发现dal层中所有类,没有自己的成员变量,只有共有的成员方法。如果不采用缓存,不同用户每次生成的dal的类对象,没有任何区别,对象调用方法都是传递局部变量,方法调用完对对象没有任何改变。每个人调用都是相同的。
看到这里我恍然大悟,这也就说明了为什么动软把DAL层的类进行的缓存封装,而其他层的类没有缓存。
在使用缓存的时候大家要注意这一点,什么情况下使用缓存,什么数据使用缓存。
像Model实体类,是不能进行缓存共享的,不能保证每个实例都是相同的。在三层中的BLL层也是可以进行缓存处理的,根据实际情况可以自行封装一下。
显然应用级的共享使得所有用户的实例只开辟一片内存空间,像文中提到的DAL层缓存共享,不是每个会话开辟一片内存,而是至始至终只有一片。这样就大大降低了系统的开销,提高了系统的性能。
cache类的使用应该说是比较简单的,类似session的键值对。cache可以保持任何类型的数据。
举例:Cache['Student']=new Student();
所以大家在工作开发的时候一定要多思考,不然你开发做了好几年了,回头想想觉得自己的进步太慢了,反观朋友同学升职的升职,高薪的高薪。反倒自己总是在埋怨运气怎么那么差!!这也就验证了古人的话:“学而不思则罔”。
本文转载自:编程中国社区
- .NET cache对象高速缓存机制
- 高速缓存Cache
- 高速缓存cache
- Cache高速缓存guava-libraries Cache
- 高速缓存Cache的作用
- Cache高速缓存的基本概念
- Cache高速缓存实例
- 磁盘高速缓存disk cache
- 高速缓存污染 cache pollution
- mysql Key Cache(键高速缓存)
- 高速缓存区(buffer cache)
- .NET内置对象之Cache对象
- asp.net高速缓存设置
- Asp.net高速缓存
- Asp.net中cache对象简介
- Linux 内存高速缓存(cache)类型分析
- linux内核研究-9-页高速缓存(cache)
- Oracle Buffer-cache (数据高速缓存)作用概述
- 特殊的数——九度oj(1402)
- 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序
- 基于自定义JS框架的UI库之可拖动窗体控件
- __declspec(dllimport) DLL使用注意事项
- 去耦电容与旁路电容详解
- .NET cache对象高速缓存机制
- wxWidgets 一些小问题。
- 使用GCD 转自 Posted by 唐巧
- jbpm用zipInputstream部署,结果jbpm4_lob为空而jbpm4_deployment却有值
- java Remote Method invocation(RMI)探讨
- 资源在线
- 华为E261和E1750 Usb Dongle无线上网卡具体参数
- StringUtils常用方法说明
- RTP与RTCP协议介绍