2011-09-02 65 views
1

正计划在WCF层中实现Castle Windsor,这是一个ASP.Net项目。当我浏览Castle windsor的文档时,有人说我们只需要创建一次容器,然后在使用它之后进行处置。因此,在我需要在WCF中创建容器的场景中,我碰到了这一点。我最初想到把Application_start放在global.asax.vb中并将其放置在Application_End中,但是当应用程序池回收或iis重新启动时会调用application_end。Castle windsor - 在WCF服务中创建和处理容器

所以第二件事出现在我脑海里,是Session_start和Session_end。再次会话结束将仅适用于Inproc类型。它也可能会在一定的空闲时间后才被调用。

第三个选项是在每个方法调用创建实例,每个方法后关闭它。根据我所知,这是不可取的。

所以,请你认为这是最好的办法。

在此先感谢 西

回答

2

你通常每个应用程序生命周期配置IOC容器只有一次,并在Application_Start()这样做似乎是完全合理的。为每个新会话或每个请求重新配置它可能只是做了不必要的工作;另外,我怀疑这可能会损害性能。

我没有看到Application_Start()/Application_End()的做法有什么问题。如果你担心它会泄露资源或类似的东西,那么这些恐惧是不合理的。

+0

感谢您的回复。这似乎很对。将继续采用这种方法。 – Sai