我希望重新设计一个由多个客户端应用程序使用的服务。这些应用程序以30到60秒的间隔对服务上的一个特定方法发出重复请求。此方法获取数据,然后将其缓存大约30到45秒。因为该方法是由请求驱动的,所以它会在每个请求上检查与上次缓存的时间差是否> 30秒,如果是,则在返回结果之前刷新它。
虽然我最终想转移到pub/sub模式,但现在我必须继续使用轮询。我想做的是创建一个重复的后台进程,它在指定的时间间隔内刷新缓存,而不依赖于对服务的请求。然后,当对该方法的请求来临时,它总是会从缓存中返回。
我不确定如何完成这一点?我不希望将后台线程的启动与初始请求绑定,但我不确定如何启动它。我是否必须创建某种共享应用程序域的windows服务,或者有更好的方法?
为什么不使用缓存过期机制?在这种情况下,如果缓存的数据变得陈旧,您可以确保返回的数据是正确的,并且您不需要向DB执行额外的(可能不必要的)请求。