代码之家  ›  专栏  ›  技术社区  ›  Bhuvan

如何在单例WCF服务中处理对象

  •  0
  • Bhuvan  · 技术社区  · 14 年前

    如何在单例WCF服务中处理对象?我正在使用Entity Framework(3.5)并将一组自定义POCO对象返回给客户端。服务需要是活动的,因为它提供跨客户机通信,因此使用双工绑定。我想处置所有创建的POCO对象,一旦它们被序列化到客户端。

    我认为不能在return语句之前调用dispose,因为到那时对象还没有序列化。

    请提出解决方案。

    提前谢谢。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Chen Kinnrot    14 年前

    首先,不要使用单例服务,为什么,那么你的问题就是答案。 在我看来,您的服务应该是每个调用实例管理的,回调通道应该在另一个类上管理,或者作为服务类中的静态成员管理。

    第二,尝试查看是否保留对返回给客户机的poco的引用,因为GC会清除未引用的内容。因此,如果您找到引用,只需将这些成员赋值为null,GC将完成其余的工作(您不必担心方法变量)。

        2
  •  1
  •   CodingGorilla    14 年前

    我认为您在这里走错了方向;如果您的对象是POCO,那么它们是否实现了IDisposable(不确定您为什么要为POCO类实现IDisposable)。我猜你还有别的东西在吞噬你的记忆。可能你的单例服务只是活得太久,收集了太多垃圾;你可能想看一个不同的服务模型。可能每个会话有一个实例或者类似的东西。

    但是,您可以做的一件事是,不要直接序列化POCO对象,而是创建具有 只有