我正在使用IIS托管我的WCF应用程序。为了提供一些方法,我需要一个对大量初始化的辅助对象的引用。一个好的方案是初始化它并放入缓存,然后所有请求只使用缓存中的对象。我该怎么做缓存?
最简单的方法是使用mywebmethod的静态字段。 IIS创建了几个ServiceHost来为请求提供服务。并且在每个servicehost中静态字段都会不同。
我尝试使用System.Web.HttpRuntime.Cache
。同样,我有一些独立的缓存。
为了澄清,我需要缓存请求的结果,而不是处理请求所需的一些中间数据。
那么什么是解决方案?
答案 0 :(得分:1)
在单独的AppDomain中运行不同的服务可为您提供崩溃保护和其他一些与安全相关的好处。如果您确定需要共享静态,请考虑使用自托管服务。
我只能想到使用IIS实现此目的的一种方法:实现ServiceHostFactory,它将返回自定义ServiceHost,它将启动和停止多个ServiceHosts。但是,作为一个生产代码,它太过于苛刻了)
更新我今天偶然发现了这个问题,这个答案看起来像是一团糟。如果不同的服务主机位于同一个IIS站点内,它们共享一个AppDomain,因此所有服务的静态字段应该相同。