Мы используем модель pub-sub в нашем приложении WCF, которая в значительной степени соответствует образцу Microsoft: Шаблоны проектирования: публикация-подписка на основе списков .
Хотя служба предоставляет понятие subscribe ()
и unsubscribe ()
, как лучше всего выполнить очистку в ситуации, когда клиент умирает или выходит из строя канал? ? В настоящее время, когда клиент подписывается, я присоединяюсь к обработчикам к текущим событиям InstanceContext
текущего Closed
и Faailed
:
_communicationObject = OperationContext.Current.InstanceContext;
_communicationObject.Closed += OnClientLost;
_communicationObject.Faulted += OnClientLost;
Обработчик OnClientLost
просто отменяет подписку клиента, однако:
Этот вопрос ставит аналогичный вопрос, но в конечном итоге не дает ответов на те случаи, которые не связаны с вызовом клиента подписки и / или отказа от подписки.
Спасибо