Вопрос по архитектуре WCF - PullRequest
       1

Вопрос по архитектуре WCF

0 голосов
/ 01 февраля 2011

У меня есть следующий сценарий:

Хост-сервер WCF <- подключение к сети -> КЛИЕНТ НОУТБУКА WCF <- подключение к -> КЛИЕНТ WCF 2

У меня также естьХОЗЯЙСТВЕННЫЙ КЛИЕНТ WCF, имеющий пользовательский интерфейс, на сервере, где находится ХОЗЯЙСТВЕННЫЙ СЕРВЕР WCF.Этот клиент вызывает сервисы на ХОСТ-СЕРВЕРЕ.

Я подключил ХОЗЯЙСТВЕННОГО КЛИЕНТА WCF, чтобы вывести список подключенных КЛИЕНТОВ НОУТБУКОВ WCF;Я использовал дуплексное соединение, чтобы при двойном щелчке по одному из подключенных клиентов ноутбука дуплексный канал использовался для обратной связи с выбранным КЛИЕНТОМ НОУТБУКОВ WCF.

Но вместо строкового сообщения мне нужноПоток большого файла данных обратно к КЛИЕНТУ НОУТБУКОВ WCF.Я не могу передавать по каналу обратного вызова, потому что дуплекс не разрешает потоковую передачу.

ПРИМЕЧАНИЕ. Для этого необходимо использовать NetTcpBinding согласно требованиям.

Все КЛИЕНТЫ НОУТБУКОВ WCF используют один и тот же IPи ПОРТ.

Итак, вопрос заключается в том, как выбрать подключенный ноутбук в пользовательском интерфейсе WCF HOST CLIENT и отправить потоковый объект обратно на выбранную лаптоп?Поскольку канал обратного вызова знает, где находится ноутбук, могу ли я каким-то образом использовать эту информацию, чтобы открыть новое соединение wcf (или новое соединение с сокетом) для этого конкретного ноутбука?Я использую guid, чтобы зарегистрировать каждый ноутбук на хост-клиенте WCF, и использую его, чтобы определить, какой КЛИЕНТ НОУТБУКА WCF отправит строковое сообщение обратно.

ЧТО Я ПОПРОБОВАЛ: Я пытался использовать сообщение обратного вызова вНОУТБУК-КЛИЕНТ WCF для вызова услуги, отличной от ХОСТ-СЕРВЕРА;это работает и возвращает строковое сообщение от ХОСТ-СЕРВЕРА конкретному КЛИЕНТУ НОУТБУКОВ, но я не могу отправить байтовые данные обратно, потому что получаю ошибку несоответствия контракта.

В действительности мне нужно отправить большой файлна ноутбук с сервера, а затем перенаправить этот файл на WCF CLIENT 2, который подключен только к ноутбуку, а не к сети.WCF CLIENT 2 - это небольшая коробка с XP.Если я не знаю, на какой ноутбук отправить файл, все ноутбуки получат его, и мне нужен только выбранный ноутбук, чтобы получить файл, а затем переслать его в подключенную коробку.Я использую сокетное соединение для пересылки между ноутбуком и коробкой.

Буду признателен за любую информацию или помощь.

1 Ответ

0 голосов
/ 01 февраля 2011

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

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