【问题标题】:WCF Memory Performance InstanceContextModeWCF 内存性能实例上下文模式
【发布时间】:2012-07-16 04:45:38
【问题描述】:

我一直在学习有关 WCF 的方法,但我有一个关于 InstanceContextMode 的问题。

如果我错了,请纠正我,但 WCF 会实例化您的对象,然后默认在每次调用时调用它的服务方法。

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

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

但在当前的 WCF 实现中,似乎无论如何都会重新创建对象。

【问题讨论】:

    标签: c# .net performance


    【解决方案1】:

    这里的示例

    http://msdn.microsoft.com/en-us/library/aa967565.aspx

    展示如何使用可扩展性对实例的创建和销毁方式进行更细粒度的控制(例如池化)。

    【讨论】:

      【解决方案2】:

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

      小心处理同步问题,并且不要在这个静态类中包含您不想在所有每次调用实例之间共享的任何信息。

      我的 0.02 美元

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        • 2021-07-19
        • 1970-01-01
        相关资源
        最近更新 更多