wcf двусторонее соединение

Рейтинг: 2Ответов: 1Опубликовано: 16.04.2015

разрабатываю приложение для мониторинга. хотелось бы реализовать отправку сообщений от сервера клиентам без запроса. клиенты работают в основном за NAT`ом. Подойдет ли для этого дуплексный контракт? служба работает по net.tcp

Ответы

▲ 2Принят

Ответ на первый вопрос - да, вы все поняли правильно.

Ответ на вопрос из комментария: когда сервер посылает сообщение клиенту - он это делает по тому каналу, по которому вы ему сказали его послать. Чтобы запомнить канал к клиенту - вызовите OperationContext.Current.GetCallbackChannel - и сохраните куда-нибудь результат. При посылке сообщения через CallbackChannel оно пойдет по тому соединению, которое устанавливал клиент.

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