我们的 WCF 应用程序使用发布-订阅模型,基本上遵循了 Microsoft 的示例:Design Patterns: List-Based Publish-Subscribe。
虽然该服务提供了
谢谢
虽然该服务提供了
subscribe()
和 unsubscribe()
的概念,但在客户端死亡或通道故障的情况下,处理清理的最佳实践是什么?当前,在客户端订阅时,我会将处理程序附加到当前 InstanceContext
的 Closed
和 Faulted
事件(服务使用 PerSession 实例上下文模式和 netTcpBinding)。_communicationObject = OperationContext.Current.InstanceContext;
_communicationObject.Closed += OnClientLost;
_communicationObject.Faulted += OnClientLost;
OnClientLost
处理程序仅取消订阅客户端,但是:
- 上述方法是否是一种良好的做法,仅仅足够强大以捕获客户端在双工通信中掉线的所有情况?或者服务应该在尝试与客户端通信时处理异常并在那时进行清理?
- 除了取消订阅客户回调处理程序之外,特别是在故障的情况下,是否应该执行进一步的清理操作?
谢谢