如何处理多个Web应用程序的BL缓存?

时间:2010-03-25 19:17:18

标签: c# asp.net caching business-logic

我最近收到的项目包含多个没有MVC结构的Web应用程序。对于初学者,我创建了一个包含主要业务逻辑的库(DLL)。问题在于缓存 - 如果我使用当前的Web上下文缓存对象,那么最终可能会出现重复缓存(因为每个应用程序的Web上下文都不同)。

我目前正在考虑使用单例模式实现一个简单的缓存机制,允许不同的网站(也就是不同的应用程序域)分享他们的“缓存智慧”。

我想知道解决这个问题的最佳方法是什么。

编辑:我只使用一台服务器(有多个应用程序)。

4 个答案:

答案 0 :(得分:1)

根据您要缓存的数据的类型和大小,我建议:

  1. 对于少量原始数据:nCacheD(codeplex) - memcached redux for .net
  2. 对于重量级对象:MS模式和实践缓存块(msdn)
  3. 总的来说,我会看看我的要求,并确保真正需要一个包罗万象的缓存,编写代码来维护其状态(并调整其资源消耗)并不比直接进入数据库。 如果你想要缓存的大多数东西是静态页面,或静态和&组合。动态内容,我会考虑利用IIS / ASP.NET的页面级缓存。

答案 1 :(得分:1)

根据您的可扩展计划,我有两个不同的建议。无论您选择哪种后端缓存,我都会建议您首先实现从缓存中抽象出来的adapter pattern层,因此它会限制您对缓存的依赖性,并使您能够在以后交换它。

如果要通过添加Web场(多个应用程序服务器)进行扩展,请查看速度。微软将在4.0中打包它,但它目前是CPT3,并且非常易于使用。

Documentation

Download

如果您不打算迁移到多服务器系统,请使用HttpContext.Current.Cache

答案 2 :(得分:0)

听起来像你应该看看Build Better Data-Driven Apps With Distributed Caching。本文描述了一个来自Microsoft(代号为Velocity)的新的分布式缓存。

答案 3 :(得分:0)

我也被允许使用SharedCache,它看起来与我正在寻找的架构完全相同:Single Instance Caching

相关问题