C#为WPF实现缓存

时间:2018-12-17 09:40:08

标签: c# wpf caching

我想为WPF应用程序实现缓存。 我的应用程序暂停了对不起,我读错了计数。有2328681个项目,我要做的是将所有这些项目缓存到计算机上保存的文件或其他内容中,这将释放下一次运行时从数据库检索数据的工作量。 我将具有一个检查最新DBUpdateTime的功能,该功能将比较缓存中的DBUpdateTime与SQL中的DBUpdateTime是否不同,然后检索最新的更新。

有人知道我该怎么做吗?您建议我使用哪种库来实现缓存?

我将显示活动项目,但我也想显示非活动项目,我应该将所有项目保存在缓存中,然后按运行时对其进行过滤吗?

2 个答案:

答案 0 :(得分:1)

使用少量数据,序列化比本地数据库更好。 在这种情况下,您似乎需要超过200万条记录,因此,如果将它们存储在平面文件或内存中,则需要将它们全部拉入内存才能使用它们。 听起来好像要处理的数据太多。

意味着本地数据库很可能是您的最佳人选。哪一种最合适取决于您将如何访问数据以及存储什么。 如果这些都是简单的记录,则SQLlite将是候选对象。

如果您需要立即知道对记录进行的任何更改,则可以使用推送机制。 您可以使用signalr告诉客户数据已更改。

如果您不需要立即知道,则可以让客户进行投票并偶尔询问一下有什么变化。

我过去所做的是为每个逻辑实体添加一个LastChanges表。更改记录时,将添加一条包含ID,时间戳和用户的记录。然后,您可以阅读此表以查找自特定时间以来发生的更改。在繁重的使用和数据库开销意味着更复杂的方法的情况下,我已经将最近更改的记录的副本缓存在业务服务器上。

答案 1 :(得分:1)

在收款机中创建动态数据库是错误。我认为不在一个窗口中,您不会调用300,000条记录。 最好在显示它们的位置上放置200条记录。并制作一个普通的过滤器(如果有),优化您的查询。 我认为“ REASONABLE ”将显示300条记录,而不是300,000条记录,或者显示300、500、1000、10000条记录。 例如,我有一个“连接”和“合同”窗口,还有一个“链接”窗口。我大约有200万个条目,我按过滤器显示了最后200个。