Iis 可以使用Castle Windsor在内存中保留静态引用吗?

Iis 可以使用Castle Windsor在内存中保留静态引用吗?,iis,object,static,castle-windsor,castle,Iis,Object,Static,Castle Windsor,Castle,背景。。。 我必须构建一个新的(asp.net mvc)应用程序,它使用一个现有的类库,这个类库很复杂,在现阶段无法重写。主要的问题是这个类库有一个巨大的初始化冲击-它需要10分钟才能将所有数据加载到内存中。这对于在IIS启动后快速执行的生产环境很好。然而,对于开发来说,这是一场噩梦,因为每次构建解决方案并在浏览器中启动它时,都需要花费很长时间 可能的解决方案? 因此,我们的想法是可以使用Castle Windsor或IOC lifestyle将其保存在内存中,这样,只有回收应用程序池才能强制进

背景。。。 我必须构建一个新的(asp.net mvc)应用程序,它使用一个现有的类库,这个类库很复杂,在现阶段无法重写。主要的问题是这个类库有一个巨大的初始化冲击-它需要10分钟才能将所有数据加载到内存中。这对于在IIS启动后快速执行的生产环境很好。然而,对于开发来说,这是一场噩梦,因为每次构建解决方案并在浏览器中启动它时,都需要花费很长时间

可能的解决方案?
因此,我们的想法是可以使用Castle Windsor或IOC lifestyle将其保存在内存中,这样,只有回收应用程序池才能强制进行昂贵的重新加载。我记得以前Windsor在内存中保存代码时遇到了一个问题,因此即使在更改代码并重新编译之后,IIS仍在运行旧代码-在这个场景中这是一个问题,但在我的新场景中,这正是我想要的


有人知道怎么做吗?我尝试过使用Singleton lifestyle的虚拟项目,但在更改mvc项目后,它仍然会重新加载类库。

也许您可以序列化加载的库的内容,并将其以二进制形式保存在磁盘上。这可能会加速负载。这是一个疯狂的想法,但同样,拥有一个需要10分钟加载的类库也是疯狂的。

也许你可以序列化加载库的内容,并将其以二进制形式保存在磁盘上。这可能会加速负载。这是一个疯狂的想法,但话说回来,拥有一个需要10分钟才能加载的类库也是疯狂的。

如果数据确实序列化,那么您可以存储在缓存中,在重新编译时保持其状态。例如,memcached作为一个单独的进程运行。您可以更改bin或重新启动dev服务器进程,缓存将保持其状态。有一个访问memcacheD的提供程序。

如果数据确实序列化,则可以存储在缓存中,在重新编译时保持其状态。例如,memcached作为一个单独的进程运行。您可以更改bin或重新启动dev服务器进程,缓存将保持其状态。有一个访问memcacheD的提供商。

我认为温莎解决不了这个问题。重新编译(修改bin)将导致AppDomain重新加载。“我记得以前Windsor在内存中保存代码时遇到问题,因此即使在更改代码并重新编译后,IIS仍让旧代码运行“->Windsor无法执行此操作,你的问题出在其他地方。使用你的10分钟加载类库最终将花费你比重写多得多的成本,即使在这个阶段看起来不是这样。我认为温莎不会解决这个问题。重新编译(修改bin)将导致AppDomain重新加载。“我记得以前Windsor在内存中保存代码时遇到问题,因此即使在更改代码并重新编译后,IIS仍让旧代码运行“->Windsor无法执行此操作,你的问题出在别的地方。使用你的10分钟加载类库最终会比重写花费更多,即使在这个阶段看起来不是这样。