我在 C# 中为 WinForms 应用程序使用 .NET 缓存。应用程序直接连接到远程数据库服务器(没有任何服务层),并且缓存在安装应用程序的客户端计算机上维护。
现在我让它在网络上的多台机器上工作,实例将连接到中央数据库。问题是当一个实例在数据库中添加记录时,其他机器仍然包含旧数据的缓存。
我需要知道使该缓存成为网络上所有应用程序实例的中心的可能解决方案,因此当一个实例修改数据时,将为其余网络节点刷新缓存。
我们如何为网络上的所有应用程序实例实现中央缓存?
我在 C# 中为 WinForms 应用程序使用 .NET 缓存。应用程序直接连接到远程数据库服务器(没有任何服务层),并且缓存在安装应用程序的客户端计算机上维护。
现在我让它在网络上的多台机器上工作,实例将连接到中央数据库。问题是当一个实例在数据库中添加记录时,其他机器仍然包含旧数据的缓存。
我需要知道使该缓存成为网络上所有应用程序实例的中心的可能解决方案,因此当一个实例修改数据时,将为其余网络节点刷新缓存。
我们如何为网络上的所有应用程序实例实现中央缓存?
我们有同样的问题,我们将缓存实现到数据库中。
(如果您没有任何服务层,您可以使用 DB Layer Procedure 或 Trigger 等。)
首先我们制作了 Cashe Table。例如 CACHE_DATA。
并且在机器(多个)执行 DML(更新、插入、删除数据)之后,服务层(或 DB)根据最新信息更新缓存数据。以便其他机器也可以参考该表。
如果 DML 执行过于频繁,您可以在 CHACHE_DATA 中添加“Last Cashing Time”文件。
If(Last Cashing Time < Casing_Interval ) { Do Not Chasing } else { Cahsing }