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