.NET Remoting — перенаправление сообщений/избыточность хоста

Я пытаюсь выполнить некоторую форму перенаправления сообщений в .NET Remoting. альтернативный текст

Как вы можете видеть на изображении, я хотел бы, чтобы клиент отправил сообщение провайдеру (это единственный URI, о котором должен знать клиент), который затем перенаправит его на host1. Вот сложная часть; провайдер будет отслеживать, какой хост активен (путем предоставления хостам метода удаленного взаимодействия регистрации/отмены регистрации), другими словами, провайдер должен иметь возможность динамически изменять URI, на который он должен перенаправлять сообщение.

Я пытался решить проблему, создав хост в провайдере, которому клиент отправляет сообщения, а затем клиент (в провайдере), который реализует собственный прокси (наследуя от RealProxy), который будет перенаправлять сообщения на текущую предпочитаемую хозяин. Тем не менее, я постоянно возвращаюсь к проблеме динамического изменения URI, и у меня возникает ощущение, что я просто упускаю какую-то простую, но жизненно важную часть, которая решит эту проблему, не превращая ее в большого мохнатого монстра.

Любые советы/подсказки будут высоко оценены!


person Andreas Ågren    schedule 04.06.2010    source источник
comment
Какую версию .NET Framework вы используете? If >= 3.0 вы можете рассмотреть возможность использования WCF вместо устаревшего .NET Remoting.   -  person Sandor Drieënhuizen    schedule 04.06.2010
comment
Извините, я забыл добавить это. Я использую .Net 2.0.   -  person Andreas Ågren    schedule 04.06.2010
comment
ХОРОШО. Вы также должны добавить соответствующий тег для этого.   -  person Sandor Drieënhuizen    schedule 04.06.2010


Ответы (1)


Для дальнейшего использования я использую другой, упрощенный подход к этому. Провайдер будет удален, и вместо этого клиент попытается получить прямой доступ к host1. В случае SocketException, которое он получит, когда хост не отвечает, поместите его в карантин на X минут и попробуйте со следующим хостом. Если все хосты не работают, повторите исключение.

person Andreas Ågren    schedule 04.06.2010