Удаление отключенных MarshalByRefObjects из списков на стороне сервера
В удаленном взаимодействии.Net, если создается список удаленных объектов, то если удаленная сторона исчезает и вы пытаетесь получить доступ к одному из элементов списка, вы получите исключение.
Все хорошо, вы можете попытаться поймать его, но не конец света.
Однако, если вы попытаетесь удалить отключенный MarshalByRefObject
из List<MarshalByRefObject>
Вы получаете еще одно исключение, потому что List.Remove()
использования Object.Equals()
и становится невозможно очистить список.
Должно ли это быть решено с помощью какой-то локальной оболочки для MarshalByRefObject
объект или есть более чистый подход там?
1 ответ
Решение, которое мы реализовали, заключалось в том, что MarshalByRefObject был обернут / скомпонован в локальный каталог, чтобы список можно было правильно очистить. Proxy Design Pattern - самый чистый способ!