WCF net.tcp сервер отключается - как правильно обрабатывать на стороне клиента?

Я застрял с немного раздражающей проблемой прямо сейчас. У меня есть приложение Silverlight 4 (по умолчанию запускается OOB). Он использует WCF с net.tcp в качестве средства связи с сервером. Клиент использует центральный экземпляр прокси-клиента wcf. Пока все работает на стороне сервера, все в порядке.

Если я убиваю сервер в середине всего, я тону в лавине исключений на стороне клиента (потеря соединения, сбой канала и т. Д. И т. Д.).

Теперь я ищу способ справиться с этим чисто и централизованно (если это возможно).

Приложение SL имеет один объект центрального клиента, расположенный в App.cs (общедоступный статический MyClient Client { get;set;}), который инициализируется при запуске приложения.

Любая идея, как правильно обрабатывать любые проблемы с подключением на клиентском объекте?

2 ответа

Вы упоминаете, что используете центральный экземпляр клиентского прокси WCF.

Если это так, то при возникновении ошибки сервера прокси перейдет в состояние Failed. Чтобы все было централизовано, вы можете привести клиентский прокси к ICommuicationObject и прикрепить обработчик событий к Faulted событие, которое заменяет сбойный прокси, новым прокси при возникновении события.

Применяются обычные предупреждения о безопасности потоков для централизованного доступа к ресурсам!

Я думаю, что нашел работоспособное - хотя и не централизованное - решение. Вместо того, чтобы загромождать код блоками try / catch, кажется, что все, что ему нужно, это нулевая проверка свойства event.Error. Если что-то случилось с соединением, это свойство всегда не равно нулю. Исключения возникают только при попытке доступа к event.Result.

Возможно, это не самое красивое решение, но пока оно работает.

Возможно, есть более элегантный способ, хотя...

Другие вопросы по тегам