gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:31:40 25 4
gpt4 key购买 nike

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

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

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

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

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

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

问候,KK

最佳答案

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

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

关于.net - 如何在.net 3.5/4.0 的专用缓存服务中实现缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3931444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com