Есть ли способ сделать ИСТИННЫЕ двунаправленные коммуникации по одному TCP-соединению в WCF? - PullRequest
1 голос
/ 02 декабря 2009

У меня есть сервер WCF, предоставляющий интерфейс с интерфейсом обратного вызова, который он использует для отправки событий клиентам.

Я предпочитаю не отмечать все методы интерфейса обратного вызова как «OneWay», поскольку это усложняет отслеживание ошибок и ведение журнала.

Клиент написан на WinForms, поэтому обратные вызовы не будут обрабатываться до тех пор, пока не будет возвращен вызов на сервер. (Это поведение, которое я хочу)

Я делаю все обратные вызовы с помощью асинхронного Eg. BeginMyMethod (...), поэтому сервер не заблокирован в ожидании клиента.

Однако, если обратный вызов отправляется тому же клиенту, который отправил запрос на сервер, то канал TCP блокируется самостоятельно, так как кажется, что он не может отправить ответ обратно клиенту до клиент отправил ответный вызов обратно на сервер по тому же каналу.

Есть ли способ сделать истинную двунаправленную связь по одному TCP-соединению в WCF?

1 Ответ

0 голосов
/ 04 декабря 2009

Вы можете сделать это, если и сервер, и клиент подтверждают, что и сервер, и клиент (если это понятно)

Это будет работать так:

  • Когда клиент запускается, он вызывает сервер и регистрируется
  • Сервер затем знает, где находится клиент, и может связаться с клиентом через службы, предоставляемые клиентом.

Другим, более простым решением было бы не повторное использование каналов, что позволило бы избежать тупика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...