Связь WCF с несколькими клиентами без IIS

мы работаем над одноранговым узлом для пиринга с программным обеспечением коммуникации, которое позволило бы многим продуктовым магазинам синхронизировать свои материально-технические ресурсы с тем, что мы называем "главным офисом". К так этому, мы думаем WCF+WPF, и никакой IIS и веб-сервисы. Мой опыт с WCF является в основном нулем, таким образом, мой вопрос состоит в том, работало ли решение для коммуникации TCP с помощью WCF. Данные это передается, вполне ограничены, приблизительно 2 МБ для сжатого файла простого текста (таким образом, мы отправляем двоичные данные!), и это сделано однажды в день только. Таким образом, пропускная способность/загрузка не должна быть проблемой здесь. Идея в этой точке состоит в том, чтобы иметь "сервер" WCF, работающий в HQ. Хранилища делают себя известными тому серверу и затем отправляют файлы назад и вперед (simliliar к приложению чата). В чем я не уверен: каждое хранилище должно иметь "сервер" WCF (или конечная точка)? Как был бы сервер (=HQ) отправлять файл одному из клиентов (=stores)? Каждое хранилище может отправить файл в любое другое хранилище и HQ, и каждое хранилище может также "запросить" файл от любого другого хранилища/HQ.

Два ограничения: Ни одна из включенных машин/компьютеров не может выполнить Windows Server по бюджетным причинам, и, как указано, прежде чем IIS будет остановкой.

7
задан John 11 February 2010 в 13:18
поделиться

4 ответа

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

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

2
ответ дан 7 December 2019 в 07:45
поделиться

Вам не нужно размещать WCF в IIS, но есть ли какая-то конкретная причина, по которой вы не хотите этого делать?

Вы можете разместить WCF в ServiceHost, но тогда вам нужно создать, поддерживать и развернуть множество функций сервера / службы, которые IIS предоставляет для бесплатно, например, перезапуск процесса приложения, хостинг на основе активации и т. д.

В любом случае это звучит почти так, как будто вам нужна одноранговая сеть. Вы можете сделать это с помощью WCF, используя привязку NetPeerTcpBinding .

2
ответ дан 7 December 2019 в 07:45
поделиться

Если у вас есть возможность перепроектировать ваше приложение, я советую вам это сделать. Вы можете бросить строки вокруг в WCF, но если вы можете создать контракт данных, вы можете держать все ваши коммуникации сильно типизированными.

Если у вас есть доступ к windows server 2008, то новый IIS может разместить ваш WCF, даже если он не использует tcp. В противном случае вам просто нужно написать приложение, которое открывает хост службы, которую вы обычно оборачиваете в службу windows. Но, как отметил @MArk Seemann, вы получаете много бесплатных возможностей, запуская свою службу в IIS.

У меня нет опыта работы с PeerTcpBinding, но я могу сказать, что NetTcpBinding работает быстро и хорошо, плюс он поставляется со всеми необходимыми функциями, такими как шифрование и аутентификация, если вам это нужно.

0
ответ дан 7 December 2019 в 07:45
поделиться

Если вы только пересылаете файлы туда и обратно, я могу спросить, имеет ли WCF хоть какой-то смысл. Рассматривали ли вы просто использование протокола передачи файлов, такого как scp или sftp?

Каждая машина должна будет принимать соединения и иметь настройку местоположения перетаскивания файлов, а затем ваше приложение должно будет отслеживать это местоположение на предмет новых файлов. Я люблю WCF в целом, но протокол передачи файлов будет иметь преимущество, если это все, что вы хотите сделать.

3
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: