代码之家  ›  专栏  ›  技术社区  ›  Eran Betzalel

如何处理多个web应用程序的bl缓存?

  •  4
  • Eran Betzalel  · 技术社区  · 15 年前

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

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

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

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

    4 回复  |  直到 14 年前
        1
  •  1
  •   Dobriak    15 年前

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

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

    不过,一般来说,我会考虑我的需求,并确保真正需要一个全方位的缓存,编写代码来维护其状态(并调整其资源消耗)不会比直接进入数据库更昂贵。 如果您希望缓存的大多数内容是静态页面,或者是静态和动态内容的组合,我将研究如何利用i i s/asp.net的页面级缓存。

        2
  •  1
  •   Nix    14 年前

    我有两个不同的建议,取决于你的计划是可扩展的。不管您选择的是后端缓存,我建议您首先实现 adapter pattern 将您从缓存中抽象出来的层,因此它将限制您对缓存的依赖性,并使您能够稍后将其交换出去。

    如果您想通过添加一个web服务器场(多个应用程序服务器)来扩展,那么看看velocity。微软将在4.0中打包,但它目前是一个CPT3,非常容易使用。

    Documentation

    Download

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

        3
  •  0
  •   Morten Mertner    15 年前

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

        4
  •  0
  •   Eran Betzalel    15 年前

    我也被邀请使用 SharedCache ,与我正在寻找的架构一模一样: Single Instance Caching .

    推荐文章