首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Web.Caching与企业库缓存块

System.Web.Caching与企业库缓存块
EN

Stack Overflow用户
提问于 2008-08-22 06:07:29
回答 4查看 13.4K关注 0票数 29

对于将在web应用程序和富客户端应用程序中使用的.NET组件,似乎有两个明显的缓存选项: System.Web.Caching或Ent。利布。缓存块。

  • 你用什么?
  • 为什么?

System.Web.Caching

这在网络应用程序之外使用安全吗?我看到了复杂的信息,但我认为答案可能是-某种-不-不-真的。

  • 一篇警告1.0和1.1非web应用程序使用的知识库文章
  • 2.0页有一个注释,表示它是可以的:http://msdn.microsoft.com/en-us/library/system.web.caching.cache(VS.80).aspx
  • 史考特汉瑟尔曼被这一观念吓得毛骨悚然。
  • 3.5页包括一项警告,禁止此类使用。
  • Rob Howard 鼓励在网络应用程序之外使用

我不希望使用它的亮点之一SqlCacheDependency,但是在.NET 3.5中添加CacheItemUpdateCallback似乎是一件非常好的事情。

企业库缓存应用程序块

  • 其他块已经在使用中,因此依赖项已经存在。
  • 缓存持久性是不必要的;重新启动时重新生成缓存是可以的

某些缓存项应始终可用,但应定期刷新。对于这些项,在删除项之后获得回调并不是很方便。看起来,客户端只能睡觉和轮询,直到重新填充缓存项。

Memcached for Win32 + .NET客户端

当您不需要分布式缓存时,有哪些优点和缺点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-11 22:21:21

以下是我在缓存主题中考虑的内容:

MemCached Win32 .net缓存企业库缓存应用程序块

MemCached Win32 :直到最近,我一直使用MemCached Win32。这类似于一个web场(许多服务器为高可用性提供相同的内容),但它是一个缓存场。这意味着,如果您没有更大的资源,那么您可以在本地安装它。然后,当你沿着这条路前进的时候,你可以水平地缩放(更多的服务器)或垂直的(更多的硬件)。这是一个从最初的MemCached移植到Windows上的产品。该产品已广泛应用于非常高的交通站点。http://lineofthought.com/tools/memcached

速度:--这是Microsofts对MemCached等产品的回答。MemCached已经推出了相当一段时间,速度是在CTP模式。我必须说,根据我到目前为止所读到的,这款产品一旦推出,我肯定会回心转意。但我不能让自己在一个零记录的CTP产品上运行大型生产项目。我已经开始玩它了,但一旦它获得动力,MemCached甚至无法与那些锁在窗口世界中的人相比!http://blogs.msdn.com/velocity/

.NET缓存:没有理由对标准的.NET缓存进行折扣。它是内置和准备免费使用,没有(主要)设置的要求。它通过提供将项存储在本地内存、单个状态服务器或集中式数据库中的机制提供了灵活性。当您需要一个以上的状态服务器(内存中的缓存),并且不想使用一个缓慢的数据库来保存您的缓存时,速度就会进入其中。

企业应用程序块:--我远离所有企业应用程序块。他们是沉重的框架,给出的比我一般要求的更多!只要您记得包装所有与您无关的代码,并遵循简单的编码规则,那么请坚持使用其他方法。(当然,这只是我的观点-- MySpace尽可能多地利用企业应用程序块之外的功能!)

--您不必预先选择!--我通常在代码中创建一个缓存包装器,用于方法(如Get、Set、etc、Remove、ListKeys等)进行通信。这就指向了缓存抽象的底层,它可以指向MemCached、MemCached或.NET缓存。我使用StructureMap (或选择另一个IoC容器)注入给定环境中要使用的缓存形式。在本地开发框中,我可以在会话中使用.NET缓存。在生产中,我通常使用MemCached Win 32。但是不管它是如何设置的,您都可以轻松地交换东西,尝试一下每个系统,看看什么最适合您。您只需要确保您的应用程序知道的东西如何缓存尽可能少!一旦这个抽象层到位,您就可以对所有进出缓存的数据运行压缩算法(gzip),这将允许您在缓存中存储10倍的数据量。- transparently.

如果您感兴趣,我将在我的书中介绍.NET缓存、MemCached Win32、StructureMap和适当的摘要!

ASP.NET 3.5社交网络(1?ie=UTF8 8&s=book&qid=1225408005&sr=8-1 ) Andrew www.andrewsiemer.com blog.andrewsiemer.com www.socialnetworkingin.net

Update更改了使用memcached列出站点的链接。谢谢大卫注意到它坏了!

票数 18
EN

Stack Overflow用户

发布于 2008-08-22 09:37:44

请记住,EntLib文档特别引导您使用ASP.NET应用程序的ASP.NET缓存。这可能是在这里使用它的最强烈的建议。此外,EntLib缓存没有依赖项,这对我来说是不使用它的一个重要原因。

我认为在将System.Web作为应用程序的一部分发布方面没有技术上的限制,尽管他们在.NET 3.5页上发布这个通知有点奇怪。汉瑟尔曼实际上说,他一开始就被这种想法吓到了,但后来被说服了。另外,如果你读到这些评论,他说这个块有太多的移动部分,而且ASP.NET缓存更轻盈。

我认为这正是速度将要解决的问题,但现在这只是一个预览:-(

我想说的是,使用Web.Caching,看看你的进展如何。如果您在它的顶部添加了某种抽象层,那么如果您发现问题,您总是可以选择稍后将它替换为EntLib块。

票数 3
EN

Stack Overflow用户

发布于 2008-08-22 06:21:15

看看梅卡奇。它是一个非常酷,快速和轻量级的分布式缓存系统。有几种最流行的语言的API,包括C#。它可能不能很好地服务于客户端(当然,除非客户机从某种服务器获取缓存数据),但如果将memcached的使用抽象到特定的接口,则可以使用另一个缓存系统实现该接口。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档