gpt4 book ai didi

c# - 在何处实现缓存 - 类库或 Windows 服务

转载 作者:行者123 更新时间:2023-11-30 13:01:44 26 4
gpt4 key购买 nike

我有一个 Windows 服务,它使用计时器定期调用类库(在工作线程上)。该类库具有所有必需的应用程序功能,Windows 服务不过是一个简单的托管环境。作为其执行的一部分,库需要调用数据库并获取一堆记录。这些记录不会经常更改(想想几周),我想将它们缓存在内存中。我应该在类库或 Windows 服务中实现缓存结构吗?

基本上我有点不确定的是,一旦 Windows 服务加载,然后定期调用此类库,库运行的应用程序域是否在库的所有执行中保持相同(通过工作程序每隔几分钟线程)。因为如果不是,那么在库中实现缓存的目的似乎毫无意义。

谁能帮我理解一下?

最佳答案

这是一个有效的设计问题,但我认为您从错误的角度来处理它:与其考虑应用程序域和其他可能使您更难实现该功能的事情,不如从该点考虑它所属的位置逻辑设计的观点。

以下是一些可能会影响您的想法的注意事项:

  • 您的类库向用户展示了特定的界面。对于所有调用您的类库的用户来说,坐在内存缓存层后面是否有意义?如果这个问题的答案是"is",那么缓存功能属于类库。
  • 由于类库是一个单独的实体,您可能想对库的客户隐藏一些实现细节,例如窗口的服务。如果服务要将数据缓存一段时间,则该服务将知道数据不经常更改。如果这是不可取的,请将缓存功能放入类库中。
  • 如果数据本身的更改频率高于您正在编写的特定 Windows 服务的更改频率,则缓存属于 Windows 服务。
  • 如果您计划在将来实现控制缓存状态的附加功能,例如强制缓存失效的方法,那么该功能属于 Windows 服务(尽管您也可以将其放在类中库,并让用户明确控制其状态)。

关于c# - 在何处实现缓存 - 类库或 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17936788/

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