WCF связь с несколькими клиентами без IIS - PullRequest
7 голосов
/ 11 февраля 2010

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

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

Ответы [ 4 ]

3 голосов
/ 11 февраля 2010

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

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

2 голосов
/ 12 февраля 2010

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

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

2 голосов
/ 11 февраля 2010

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

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

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

0 голосов
/ 11 февраля 2010

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

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

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

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