【发布时间】:2011-08-10 05:22:16
【问题描述】:
我有一个启用了会话的双工 WCF 服务,我正在尝试避免客户端出现故障状态异常。
我发现了几个围绕这个主题的讨论,但我发现的所有内容都建议重新创建客户端代理或通道。 Non 专注于启用会话的双工服务。
我对这种方法的问题是服务器中的每个客户端都有一个会话,并且每个客户端只有一个服务代理实例(单例服务代理)。因为它是双工的,所以在客户端有几个对象正在监听该服务实例上的事件(从服务器发送到客户端的消息)。 如果服务处于故障状态,则不能再使用。如果我丢弃该实例并创建一个新实例,我会发现很难将所有事件处理程序再次连接到这个新实例。
我是否应该包装服务,并且每次一个对象连接到一个事件时,将处理程序存储在一个列表中(以便在重新创建服务时我可以重新连接它)?好像丢了代码,容易泄露内存……
有没有办法只重新启动客户端代理/通道,而不丢弃所有代理实例? (我用的是VS生成的代理)
有什么想法吗?
谢谢, 单克隆抗体
【问题讨论】:
标签: wcf wcf-client wcf-sessions