#wcf
#wcf
Вопрос:
Я довольно новичок в WCF, так что это может быть глупый вопрос, но мне интересно, есть ли способ настроить службу WCF так, чтобы она «перехватывала» вызовы, предназначенные для другой машины. По сути, я хотел бы, чтобы вызов (через браузер) выполнялся на компьютере следующим образом: «http://MachineB/MyService «на самом деле должен обрабатываться на machineA (при условии, что моя служба запущена на machineA).
Идея заключалась бы в том, что если пользователь не установил службу, вызов «проваливается» в MachineB, где они смогут его установить. Однако, как только он установлен, machineA перехватывает все эти последующие вызовы и обрабатывает их.
Я полностью понимаю, почему это было бы невыполнимо (скажем, без взлома файла machines hosts), но я надеюсь, может быть, есть какая-то неизвестная мне магия WCF, которая могла бы включить подобный сценарий?
Ответ №1:
Это похоже на вариант использования WCF RoutingService , описанный в этой статье.Это часть WCF, поэтому, если вы не хотите добавлять пользовательские параметры поведения, вам просто нужно создать и развернуть конфигурационные файлы. Мы добавили настраиваемое поведение ведения журнала для взаимодействия с существующей инфраструктурой ведения журнала для устранения потенциальных проблем связи, но если вы полагаетесь на трассировку WCF, вам даже это не нужно.
Ответ №2:
Решение маршрутизации Sixto более элегантное, но если вы используете фреймворк версии до 4.0, инспектор сообщений на стороне клиента или на стороне отправки или даже обработчик ошибок на стороне отправки могут быть «растянутыми» решениями (они выполнят jbo, но не идеальным способом). Смотрите эту чрезвычайно длинную статью и эту статью, в которой рассказывается как об инспекторах сообщений, так и об обработчиках ошибок; это достаточно хорошая отправная точка, чтобы выяснить, будут ли эти параметры работать для вас.