2009-02-10 39 views
0

我一直在学习围绕WCF的方式,我有一个关于InstanceContextMode的问题。WCF内存性能实例上下文模式

纠正我,如果我错了,但WCF将实例化您的对象,然后默认情况下每调用一次调用它的服务方法。

然后,您可以将其设置为PerSession或Single。

在我看来,在session和call之间有一些可以重用你的对象的东西会更有意义。也就是说,如果我的服务是可重入的,那么我可以在构造函数中打开与数据库等的连接,然后将该对象留在内存中以同时应答调用。

但是在当前的WCF实现中,似乎它总是会重新创建对象,而不管它是什么。

回答

0

即使在使用PerCall instancemode时,如果这些数据结构是静态的,您仍可以重新使用大量的数据结构。请记住,静态对象将具有appdomain的生命周期,因此可以说如果初始化一个静态对象(这需要昂贵的操作),那么每个调用实例也会对其他WCF可见,并且在AppDomain被销毁之前将保持活动状态( AppDomain的生命周期取决于您的服务器设置)。

请小心处理同步问题,并且不要在此静态类中包含任何您不希望在所有每个调用实例之间共享的信息。我的$ 0.02