Я пытаюсь решить, что является наиболее подходящим способом обработки полнодуплексной связи между двумя процессами .Net, выполняющимися на одном и том же сервере или в локальной сети. У нас есть два процесса, которые должны иметь возможность ссылаться на методы друг на друга.Двусторонняя связь с WCF. Должен ли я использовать обратные вызовы или просто использовать два канала?
В настоящее время мы используем WCF с каналами NamedPipe или Tcp и имеем Регистр ProcessA с ProcessB. Наш контракт WCF определяет интерфейс обратного вызова, поэтому ProcessB может затем вызывать методы на ProcessA.
Мой вопрос: какой из следующих вариантов имеет больше смысла, проще и надежнее?
- Имеет ли ProcessB интерфейс обратного вызова (поддерживается WCF) для вызова методов в ProcessA.
- Во время регистрации ProcessA передает ProcessB необходимую информацию для ProcessB для регистрации в ProcessA с использованием нового канала?
Я не совсем понимаю время жизни прокси-сервера обратного вызова и проблемы с потоками. Я видел различные сообщения о блокировании методов обратного вызова.
Может ли канал обратного вызова существует после того, как исходный канал был закрыт, или его можно рассматривать как функции обратного вызова специально для исходного канала? – DanJ
@DanJ: Что вы подразумеваете под «исходным каналом»? Если вы имеете в виду клиентский канал, который инициирует сеанс, то: no - когда вы закрываете клиентский канал, вы также закрываете канал обратного вызова. Если вам нужно, чтобы канал обратного вызова оставался открытым, вам нужно иметь две полностью отдельные службы. Возможно, я неправильно понял ваш вопрос, но у меня сложилось впечатление, что это не так. –