Как справиться с неожиданным отключением

У меня есть вопрос о передовом опыте удаленного взаимодействия .NET. Код вонючий, и мне нужно сделать рефакторинг.

Дело в том, что у меня есть несколько классов, производных от MarshalByRefObject, и их данные используются в клиентском программном обеспечении. Как только сервер отключается, я получаю RemotingException.

Плохо в этом то, что мои ссылки на все MarshalByRefObjects находятся повсюду (включая, но не ограничиваясь графическим интерфейсом), и при отключении исключение появляется в любом месте моего кода.
Очевидно, я хотел бы обработать эти исключения в одном месте. Существуют ли какие-либо передовые методы для этого?

По сути, я хотел бы создать некий автономный-режим для клиента.


person yas4891    schedule 05.10.2010    source источник
comment
Лучшей практикой будет замена удаленного взаимодействия на WCF (если это не касается исключительно удаленного взаимодействия между AppDomain).   -  person Richard    schedule 05.10.2010
comment
Разве вы не можете использовать глобальный обработчик ошибок (Application_Error в ASP.NET, событие Application.ThreadException в winforms и т. д.)?   -  person VinayC    schedule 05.10.2010
comment
использование глобальных обработчиков ошибок здесь не подходит, потому что я хочу восстановиться после такого события, и когда вызывается глобальный обработчик ошибок, вы всего в нескольких секундах от завершения работы - если я понимаю концепцию.   -  person yas4891    schedule 05.10.2010
comment
@Richard: Но нет замены WCF для marshal-by-ref.   -  person ulatekh    schedule 23.06.2015
comment
@ulatekh Конечно, нет. Переход от модели подключенных объектов (удаленного взаимодействия) к RPC (WCF) означает значительные изменения. В первую очередь вы получите прокси-сервер на стороне клиента — согласно принятому ответу.   -  person Richard    schedule 23.06.2015


Ответы (1)


Удалось решить эту проблему с помощью Proxy Design Pattern.

person yas4891    schedule 03.05.2011