Я разрабатываю клиент-серверное приложение в .Net 3.5 с использованием WCF. По сути, долго работающая клиентская служба (на нескольких машинах) устанавливает дуплексное соединение с сервером через netTcpBinding. Затем сервер использует контракт обратного вызова клиента для выполнения определенных операций по требованию, на которые клиент отвечает асинхронно (я думаю, довольно стандартная вещь). Я создаю подкласс класса DuplexClientBase для обработки большей части взаимодействия.
К сожалению, когда что-то идет не так на обоих концах (например, сбой сети, неожиданное исключение и т. Д.), Канал становится неисправным / прерывается, и все последующие операции терпят неудачу. Я обошел это ограничение в недуплексных каналах, создав класс RecoveringClientBase, который автоматически выбирает, когда клиент дает сбой, и повторяет операцию.
Итак, мой вопрос: существует ли установленный способ определения неисправности дуплексного канала? Где это проверить, на сервере или на клиенте? В противном случае, какие варианты у меня есть, чтобы убедиться, что соединение будет восстановлено?
Обновление. Мне нужен совет, касающийся дуплексных каналов, когда сервер может попытаться использовать канал обратного вызова, в котором произошел сбой. Таким образом, мне нужно что-то, что будет немедленно переподключаться / повторно подписываться, когда что-то случится с каналом. В настоящий момент я слушаю событие закрытия канала и воссоздаю его, если состояние не закрыто. Вроде работает, но кажется хакерским ...