如何在.net 3.5 / 4.0中的专用缓存服务中实现缓存?

时间:2010-10-14 08:39:08

标签: .net caching

我需要开发一个专用的缓存服务(WCF服务或.Net远程服务或其他实现)来缓存数据库(SQL Server 2005)中的数据(.net3.5延迟测量应用程序的监控数据)。然后可以被2-3个Windows服务(.net 3.5 WCf服务)使用,这样他们就不需要重复调​​用DB了。所以基本上它是这些服务和数据库之间的附加服务层级,以减少调用DB的性能损失数据库中的数据很大且非常动态(事件在白天连续插入数据库)我们想要缓存。每个消费窗口服务都依赖于另一个(一个服务是从Db中的一个表中检索数据并将数据分解并将另一个表放入DB中,然后由另一个服务使用)。我们有以下要求:

  1. 可以推送或拉动模型 用于推送或检索数据 往返DB和服务。
  2. 缓存必须减少整体 对数据库的影响和加载数据 三角洲,而不是重新加载 数据完全
  3. 如果DB中的源数据已更改,则必须更新缓存数据。 必须是Sql缓存过期策略 定义
  4. 应该有从数据库和数据中检索数据的异步方法调用 缓存更新以最小化等待时间
  5. 缓存必须支持对单个数据库的并行请求
  6. CPU和内存利用率应保持在最佳水平 不会对他人产生负面影响 服务。
  7. 我们没有集群环境或分布式环境,并不是一个非常高度可扩展的解决方案。

    我想知道基于多种可用技术实现此目的的最佳方法是什么,以避免使其过于复杂:

    1. .Net Framework Caching
    2. Coherence缓存
    3. 速度
    4. 基于休息的WCF服务
    5. 任何建议和指导都非常宝贵。

      的问候, KK

2 个答案:

答案 0 :(得分:2)

这听起来非常优雅,但优雅不一定是好事。让我担心的不是使用缓存,而是试图解决数据库外部固有的数据库问题 - 并非每个公司都是Microsoft / Oracle / ......并且拥有制作出色数据库的人力资源。我相信你有数据库性能问题,并提出缓存作为解决方案。但它不是纯缓存,它需要处理数据一致性和数据更改以及简单读取,并且您正在尝试处理经常更改的数据,因此不适合缓存。国际海事组织,这是一场灾难呼吁。必须在另一个数据库前面实现所有数据库功能,这是不对的。

简化数据库并进行非规范化。如果您仍然需要缓存,请在ASP.NET外部使用ASP.NET缓存,只需在项目中引用它;它具有丰富的API,可满足您的任何需求。

答案 1 :(得分:0)

如果应用程序服务器在Windows Server 2008上运行,那么您可以使用AppFrabric进行缓存。