繁体   English   中英

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

[英]How to handle BL cache for multiple web applications?

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

我目前正在考虑实现具有单例模式的简单缓存机制,该机制将允许不同的网站(又称为不同的应用程序域)共享其“缓存知识”。

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

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

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

  1. 对于少量原始数据:nCacheD(codeplex)-.net的memcached redux
  2. 对于重量级对象:MS模式和实践缓存块(msdn)

不过,总的来说,我会看我的需求,并确保确实需要一个包含所有内容的缓存,并且编写代码来维持其状态(并调整其资源消耗)不会比直接进入数据库更昂贵。 如果您要缓存的大多数内容是静态页面,或静态和动态内容的组合,那么我将考虑利用IIS / ASP.NET的页面级缓存。

根据您的可扩展性计划,我有两种不同的建议。 无论选择哪种后端缓存,我都建议您首先实现一个适配器模式层,该层将您从缓存中抽象出来,这样一来,它将限制您对缓存的依赖性,并使您能够稍后将其交换出去。

如果要通过添加Web场(一个以上的应用程序服务器)进行横向扩展,请考虑一下速度。 Microsoft将在4.0中打包它,但是它目前是CPT3,并且非常易于使用。

文献资料

下载

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

在我看来,您应该看看使用分布式缓存构建更好的数据驱动应用程序 本文介绍了一种来自Microsoft的新的分布式缓存(代号为Velocity)。

还提供了我使用SharedCache的方法 ,它看起来与我正在寻找的体系结构完全相同: Single Instance Caching

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM