实现在内存中的ASP.Net应用程序的web场方案
-
的WCF层的主数据的高速缓存
- 数据在第一次访问服务层时缓存,比如GetCountryList()方法的缓存'过期设置为午夜。比方说,缓存键是“CountryList_Cache”
- 随后的所有请求都通过缓存”
- 担任如果国家列表中使用主屏幕更新,那么额外的调用,以无效‘CountryList_Cache’和新鲜的数据加载到它
- 下一个电话现在收到更新的国家列表 上述步骤在单个服务器方案中很容易,因为步骤3只需要一个服务器的缓存过期呼叫。当我们有2个或3个负载均衡的Web服务器时,复杂度会增加,因为在这种情况下,缓存仅通过一台服务器更新(通过主屏幕),但必须在所有3台服务器上失效。
我们提出的解决方案:
我们打算有一个外部服务/ EXE /网页这将是了解所有负载均衡服务器(通过配置文件)。为了使特定的缓存失效,我们将调用这个外部组件,而这个外部组件又会使所有Web服务器上的相应缓存键无效,然后使用最新数据加载缓存。
问题:
虽然上述方法将为我们工作,我们不认为这是一个企业级的LOB应用程序干净的方法。是否有更好/更干净的方式来实现跨多个服务器的缓存过期?
注:
- 我们不希望使用分布式缓存,由于明显的性能损失,相比于进程内/内存缓存
- 缓存一直使用System.Runtime实现。缓存
- 我们已经与SQL依赖工作,在单个Web服务器