1

我有这个使用(Fluent)NHibernate 进行数据访问的管理站点。正如在别处所述,由于配置对象的创建,SessionFactory 的初始化很慢。建议的解决方案是将 Configuration 对象序列化到磁盘,然后重用它,直到实体程序集或流利的初始化程序集发生更改。

从理论上讲,这些听起来非常优雅和吸引人。在实践中,即使使用 1 实体模型,反序列化配置也需要大约 500 毫秒,而创建 SessionFactory 又需要 500 毫秒。(这与没有序列化的启动时间相当,但我怀疑一旦我将更多实体放在那里,收益就会很明显。)

在 IIS 回收我的应用程序池后,它不会再次启动它,直到有新请求进来。因此,使用 IIS 的默认回收管理(每 29 小时),以及管理员每天登录我的管理站点一次的可能场景,几乎每次该管理员登录时都会发生 1 秒的延迟,给人的印象是网站启动缓慢。

所以,我想知道是否有任何方法可以告诉 IIS/WAS 实际启动替换应用程序池作为回收的一部分,而不是等到下一个请求进来?我意识到这违背了 WAS 试图在任何给定时间保持尽可能少的并发应用程序池运行的想法,但它会解决我的问题(因为我假设我的 ServiceHostFactory+ServiceHost 将在应用程序池启动后立即创建)。

4

1 回答 1

0

IIS 7自动启动功能对您有帮助吗?此外,您可以实现System.Web.Hosting.IProcessHostPreloadClient接口以确保应用程序在池启动时启动(请参阅此博客文章以获取示例)。

于 2011-11-01T19:48:47.730 回答