我一直在学习WCF,我对InstanceContextMode有疑问。
如果我错了,请纠正我,但WCF会实例化你的对象,然后默认情况下每次调用都会调用它的服务方法。
然后,您可以将其设置为PerSession或Single。
在我看来,在会话和调用之间有一些可以重用你的对象的东西会更有意义。即如果我的服务是可重入的,那么我可以在构造函数中打开与数据库等的连接,然后将对象留在内存中以同时应答调用。
但是在当前的WCF实现中,似乎无论如何都会重新创建对象。
答案 0 :(得分:2)
答案 1 :(得分:0)
即使在使用PerCall实例模式时,如果它们是静态的,您仍然可以重用大量数据结构。请记住,静态对象将具有appdomain的生命周期,因此假设您初始化了一个静态对象(需要昂贵的操作),它也会对每个调用实例的其他WCF可见,并且在appdomain被销毁之前将保持活动状态( appdomain的生命周期取决于您的服务器设置。)
小心处理同步问题,并且不要在此静态类中拥有任何您不希望在所有每个调用实例之间共享的信息。
我的$ 0.02