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

时间:2011-06-02 14:14:56

标签: iis object static castle-windsor castle

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

可能的解决方案? 因此,想法是Castle Windsor或IOC生活方式可用于将其保存在内存中,以便仅回收应用程序池将迫使进行昂贵的重新加载。我记得在Windsor将代码保存在内存之前遇到问题所以即使在更改它并重新编译之后,IIS仍然运行旧代码 - 在这种情况下这是一个问题,但在我的新场景中,这正是我想要的

任何人都知道如何做到这一点?我尝试过使用Singleton生活方式的虚拟项目,但在更改mvc项目后,它仍然重新加载类库。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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