我计划在WCF层实施Castle windsor,这是一个ASP.Net项目。当我查看Castle windsor的文档时,据说我们只需要创建一次容器并在使用后将其丢弃。所以在我的场景中我需要在WCF中创建容器。我最初想把它放在global.asax.vb中的Application_start上并将它放在Application_End中,但是当App pool循环或iis重启等时会调用application_end。
所以我想到的第二件事是Session_start和Session_end。会话结束再次仅适用于Inproc类型。此外,它可能仅在一定量的空闲时间后才被调用。
第三个选项是调用每个方法来创建实例并在每个方法之后关闭它。根据我所知,这是不可取的。
那么请你建议哪种方式最好。
提前致谢 西
答案 0 :(得分:2)
通常每个应用程序生命周期只配置一次IOC容器,在Application_Start()
中执行此操作似乎非常合理。为每个新会话或每个请求重新配置它可能只是做了不必要的工作;另外,我怀疑这可能会损害表现。
我认为Application_Start()
/ Application_End()
方法没有任何问题。如果你担心它可能会泄漏资源或类似的东西,那么这些恐惧是没有道理的。