Как установить соединение только для обратных вызовов сервера и соединение только для клиентских вызовов с использованием WCF? - PullRequest
0 голосов
/ 29 сентября 2011

Не думаю, что мне ясно. Я имел в виду, как установить обратный вызов («сервер-клиент») в другом соединении, отличном от соединения «клиент-сервер» с использованием WCF?

Я всегда видел примеры обратных вызовов, использующих только один DuplexChannelFactory. Это подразумевает использование только одного TCP-соединения для выполнения вызовов от клиента к серверу и получения обратных вызовов от сервера к клиенту.

Этот вопрос возник у меня после прочтения этой темы: Поиск WCF дуплекса "TwoWay" Подписаться + Пример обратного вызова

Я главный ответ, Ян Рингроз сказал:

Некоторые правила, которые я нашел, чтобы помочь избежать тупиков. (Посмотрите на мои вопросы WCF, чтобы увидеть боль, которую я испытал!)

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

И / или

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

И мне было интересно, как реализовать это с помощью WCF.

1 Ответ

0 голосов
/ 30 сентября 2011

Этот CodeProject для Надежная связь между приложениями с использованием Double-Simplex WCF точно отвечает на ваш вопрос:

Я решил запустить два отдельных соединения WCF (двойной симплекс).Каждое приложение запускает узел WCF для входящих сообщений, а каждое приложение запускает клиент WCF для исходящих сообщений.Это довольно надежное решение, которое не будет нарушено при остановке и запуске приложений.Клиент WCF просто переустанавливает соединение при необходимости.

Способ его решения соответствует требованиям, которые вы извлекли из ответа Яна Рингроуза.

...