Какой лучший способ сделать приложение P2P на Silverlight - PullRequest
2 голосов
/ 08 декабря 2009

Я создаю приложение silverlight и хотел бы добавить возможности p2p, позволяющие пользователям отправлять друг другу данные.

  • Это доступно из коробки?
  • Стоит ли ждать Silverlight 4.0?
  • Нужен ли мне p2p сервер?

Ответы [ 2 ]

5 голосов
/ 08 декабря 2009

Ключевая проблема на самом деле - открытие сокета на стороне клиента для приема подключений от другого компьютера, и Silverlight не поддерживает это даже в режиме вне браузера и даже в Silverlight 4. Если вы хотите что-то сделать таким образом, как уже упоминали другие люди, вам нужен общий сервер, к которому могут подключиться оба клиента и который будет передавать сообщения между клиентами и обратно. И, конечно, тот факт, что сокеты Silverlight ограничены портами 4502-4532, также означает, что вы несколько ограничены политиками брандмауэра.

Что мы сделали с нашими приложениями (используя Silverlight 4), так это попытались соединиться с новой поддержкой Net.TCP (которая значительно лучше масштабируется), а затем, если это не удалось, выполнить откат к HttpDuplexBinding (который работает поверх HTTP и, следовательно, более вероятно, сделать это через брандмауэр). Затем мы написали службу WCF, которая получает сообщения от одного клиента и отправляет их другим подписавшимся клиентам. Это не P2P, но он позволяет получить аналогичный результат (не считая всех реальных преимуществ P2P-соединений).

Если вы переходите на WPF, вы, конечно, разочаровываетесь в переносимости Silverlight, но получаете полную поддержку сокетов сервера, а также возможность кодировать различные стратегии обхода NAT , например, STUN. и ОБОРОТ .

3 голосов
/ 08 декабря 2009

Я не думаю, что вы могли бы сделать это в Silverlight с безсерверной средой.

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

РЕДАКТИРОВАТЬ - Я не знаю, если это вариант, но похоже, что кто-то придумал способ сделать P2P в Silverlight. Однако для этого необходимо запустить приложение в Windows Live Messenger:

http://www.codeplex.com/SilverlightP2P

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