一起谈.NET技术,.NET缓存机制探讨与比对

  相信大多数开发人员都比较了解缓存了,很多开发人员都在软件开发中使用了预定义或自定义的缓存,并从中获得了预期的应用程序的性能提升.这篇和后续文章将详细的介绍与探讨.net体系下的缓存实现的机制,并讨论它的优点与缺点.

.NET缓存机制:使用缓存的实际价值

  在kevinhoffman,lonnykruger的书中写到:开发人员经常需要将数据(临时数据)临时存放到一个存储媒体以便快速访问.这种临时数据的存储器叫做缓存.如果开发人员合理使用缓存,则可以大幅度提高应用程序的性能.

上面是一段完美的关于缓存的定义,就目前而言,迅速而便捷的将数据提供给核心处理代码已成为一个重要的设计要求。,迅速是为了增强用户体验,便捷可以降低系统压力。而缓存则可以完成任务,虽然不是那么完美。

.NET缓存机制的共同点

  形形色色的缓存机制几乎都有以下一些主要共同点:

  1.提供数据临时存储,缓存数据是否存在具有不确定性。

  2.可以设定缓存优先级。

  3.可以制定缓存依赖,依赖过期则缓存数据不可用。

  4.缓存的核心是MAP

.NET缓存机制比对之探讨

  临时缓存VS持久缓存:

  其实从理论上说微软.net的缓存解决方案是最完美的缓存的实现,但是正因为其教科书式的实现使得不少程序员们抱怨个不停。一个可能存在的悖论是:千辛万苦获得的数据被塞进缓存,因为系统内存紧张而被放弃,虽然它是为了缓解压力而来。这并不是微软的问题,而是程序员们贪得无厌的胃口和不当的使用方式所致。

  在很多的开源缓存机制中都采用的持久缓存的方法来实现,其实这些与其说是缓存,我觉得更像是一个增强的session,将缓存的优先级,缓存依赖机制安装在其上。开发起来既简单又轻松(.net cache 牵涉了大量底层非托管代码)。

  内容缓存VS数据缓存:

  内容缓存不是唯一的选择,数据缓存也不是没有优点。虽然性能上稍有不足,但是把数据存放在数据库中却省去了清理缓存淘宝购物导航的麻烦,。另一个显而易见的优点是易于负载分配,尤其是我们拥有一个怪兽数据库服务器时。从实现技术上来说,麻烦的多线程问题也可以方便的转嫁。在选择实现内容缓存还是数据缓存,有很多不得不考虑的因素,花落谁家就看所开发的程序所特殊要求了.

  值得重视的依赖:

  .net framework给我们提供了常用的几个缓存依赖:时间,文件,数据库。但是由于微软一贯的作分,我们无法创建新类型的依赖(SqlCacheDependency功能何其何其之弱…)。企业库自定义依赖是个好主意,我们只需要继承ICacheItemExpiration接口即可!

时间: 2024-09-14 18:05:06

一起谈.NET技术,.NET缓存机制探讨与比对的相关文章

.NET缓存机制探讨与比对

相信大多数开发人员都比较了解缓存了,很多开发人员都在软件开发中使用了预定义或自定义的缓存,并从中获得了预期的应用程序的性能提升.这篇和后续文章将详细的介绍与探讨.net体系下的缓存实现的机制,并讨论它的优点与缺点. .NET缓存机制:使用缓存的实际价值 在kevinhoffman,lonnykruger的书中写到:开发人员经常需要将数据(临时数据)临时存放到一个存储媒体以便快速访问.这种临时数据的存储器叫做缓存.如果开发人员合理使用缓存,则可以大幅度提高应用程序的性能. 上面是一段完美的关于缓存

浅谈浏览器http的缓存机制

针对浏览器的http缓存的分析也算是老生常谈了,每隔一段时间就会冒出一篇不错的文章,其原理也是各大公司面试时几乎必考的问题. 之所以还写一篇这样的文章,是因为近期都在搞新技术,想"回归"下基础,也希望尽量总结的更详尽些. 那么你是否还需要阅读本篇文章呢?可以试着回答下面这个问题: 我们在访问百度首页的时候,会发现不管怎么刷新页面,静态资源基本都是返回 200(from cache): 随便点开一个静态资源是酱的: 哎哟有Response报头数据呢,看来服务器也正常返回了etag什么鬼的

WCF技术剖析之八:ClientBase<T>中对ChannelFactory<T>的缓存机制

和传统的分布式远程调用一样,WCF的服务调用借助于服务代理(Service Proxy).而ChannelFactory<T>则是服务代理的创建者.WCF采用基于终结点(Endpoint)服务消费方式:WCF服务通过一个或者多个终结点暴露给潜在的服务消费者,服务的消费中通过与之匹配的终结点与之交互.在客户端,我们具有两种典型的服务代理创建方式,其一是通过诸如SvcUtil.exe这样的工具导入服务的元数据生成相应的服务代理(一个继承自ClientBase<T>的类型)代码和相关配置

一起谈.NET技术,.Net下的分布式缓存(3)--如果我们没有缓存会怎么样

上回说到了Memcached的性能问题,的确,缓存不是万能的,但没有缓存是万万不能的?还真有这么干的. PlentyofFish就是这样做的, 它也是互联网上巨头中为数不多的采用WISC(Windows + IIS + Sql server + C#)架构的网站, MS不能老拿MySpace说事, 现在当然不会放过这个机会大肆宣传, 但是讽刺的是人家根本不用那些"看起来很美"的服务器控件,与其说是使用了.Net技术不如说是借用了这个平台而已. 他们的页面输出绝大多数都是使用构造字符串要

一起谈.NET技术,ASP.NET缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman

ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓存 ASP.NET 缓存全解析5:文件缓存依赖 ASP.NET 缓存全解析6:数据库缓存依赖 ASP.NET 缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman Memcached - 分布式缓存系统  1.Memcached是什么? Memcached是高性能的,分布式的

一起谈.NET技术,Discuz!NT 缓存设计简析 [原创]

       作为一个社区类型软件,大并发支持和高效稳定运行永远是"硬道理",而有效安全的使用缓存恰恰能起到事倍功半的效果.而.NET本身所提供的缓存机制又显得过于"单薄",比如说订制不太灵活方便, 缓存对象之间层次感不强, 使用时缺乏统一的管理等等.           Discuz!NT缓存产生背景:        在去年五月份我加入Discuz!NT项目组时,发现这个项目当时还未使用缓存机制.主要原因是项目还处于起步阶段,很多东西还只是有想法,但未付诸实施,或

一起谈.NET技术,页面片段缓存(二)

在上一篇文章中,我介绍了我们用土法炼钢的方法,使用Velocity提供的自定义标签实现片段缓存.这样的方式虽然也解决了我们的问题,但还是引出了一些bug.而且还有点hack的味道(虽然我喜欢hack).实际上对于片段缓存,业界有成熟的解决方案,还有一个所谓的W3C标准:ESI(Edge Side Include) . ESI本身没有什么,只是一个XML的标签集合.ESI和SSI(Server Side Include)很相似,做过ASP开发的都熟悉这么一个标签: <!--#include src

一起谈.NET技术,ASP.NET缓存初探 使用得当是关键

缓存是在内存存储数据的一项技术,也是ASP.NET中提供的重要特性之一,对于程序员来讲,了解ASP.NET缓存的工作原理对于其设计程序是非常有用的. ASP.NET需要被缓存的对象多种多样,包括从数据库中提取出来的数据,以及aspx页面生成的静态页,甚至是编译好的程序集.合理利用缓存能让ASP.NET的性能大幅提升,下面将对ASP.NET中的缓存机制进行简单概述. 缓存的分类 在ASP.NET中,大部分缓存机制是保存在cache对象中,也就是服务器内存的一部分.当用户请求数据时,如果数据已经被缓

WCF技术剖析之八:ClientBase&amp;lt;T&amp;gt;中对ChannelFactory&amp;lt;T&amp;gt;的缓存机制

和传统的分布式远程调用一样,WCF的服务调用借助于服务代理(Service Proxy).而ChannelFactory<T>则是服务代理的创建者.WCF采用基于终结点(Endpoint)服务消费方式:WCF服务通过一个或者多个终结点暴露给潜在的服务消费者,服务的消费中通过与之匹配的终结点与之交互.在客户端,我们具有两种典型的服务代理创建方式,其一是通过诸如SvcUtil.exe这样的工具导入服务的元数据生成相应的服务代理(一个继承自ClientBase<T>的类型)代码和相关配置