【问题标题】:How to implement caching in dedicated caching service in .net 3.5/ 4.0?如何在.net 3.5/ 4.0 的专用缓存服务中实现缓存?
【发布时间】:2010-10-14 08:39:07
【问题描述】:

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

  1. 可以有 Push 或 Pull 模型 用于推送或检索数据 往返于数据库和服务。
  2. 缓存必须减少整体 对数据库和加载数据的影响 delta,而不是重新加载 数据完整
  3. 如果 DB 中的源数据发生变化,则必须更新缓存数据。 sql缓存过期策略必须是 已定义。
  4. 应该有异步方法调用从数据库中检索数据和 缓存更新以最大程度地减少等待时间
  5. 缓存必须支持对单个 DB 的并行请求
  6. CPU 和内存利用率应保持在最佳水平 不会对他人产生负面影响 服务。

我们没有集群或分布式环境,也不是一个高度可扩展的解决方案。

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

  1. .Net 框架缓存
  2. 一致性缓存
  3. 速度
  4. WCF 的基于 Rest 的服务

任何建议和指导都非常宝贵。

问候, KK

【问题讨论】:

  • 悲哀地看到这个问题基本上去了墓地。

标签: .net caching


【解决方案1】:

这听起来很优雅,但优雅不一定是好事。让我担心的不是缓存的使用,而是试图解决数据库之外的一个固有的数据库问题——不是每个公司都是微软/甲骨文/......并且有足够的人力来制作一个出色的数据库。我相信您对数据库性能有疑问,并且已提出缓存作为解决方案。但它不是一个纯粹的缓存,它需要处理数据一致性和数据更改以及简单的读取,并且您正在尝试处理经常更改的数据,因此不适合缓存。 IMO,这是对灾难的呼吁。必须在另一个数据库前面实现所有数据库功能,这是不对的。

简化数据库和非规范化。如果您仍需要缓存,只需在项目中引用它即可在 ASP.NET 之外使用 ASP.NET 缓存;它有一个丰富的 API 可以满足你几乎所有的需求。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 原始问题中已经提到过 - AppFabric 缓存的旧名称是 Velocity。
    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2015-07-18
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多