Посредник WCF для разрешения вызовов между двумя конечными точками за маршрутизаторами без настройки маршрутизатора - PullRequest
0 голосов
/ 11 января 2011

Я занимаюсь разработкой службы синхронизации с использованием WCF и Sync Framework, и она работает, когда конечные точки могут обмениваться данными напрямую.

Следующий шаг, который мне нужно реализовать, - это синхронизировать 2 конечные точки там, где они оба находятся.за роутерами и роутером ip постоянно меняется.Я имею в виду общедоступного посредника, который должен переадресовывать вызовы между двумя конечными точками.Моя самая большая проблема заключается в том, что я не могу полагаться на то, что пользователи будут настраивать переадресацию портов на маршрутизаторах, поэтому я не могу напрямую открыть соединение с другой конечной точки или посредника.

Моя идея основана на CoPilot FogCreek и других удаленныхвспомогательные решения (LogMeIn, TeamViewer и т. д.), которые работают без какой-либо конфигурации маршрутизатора.

Как бы вы это реализовали?

1 Ответ

0 голосов
/ 11 января 2011

Вам нужно что-то вроде реле в Azure.Я бы попробовал реализовать это следующим образом:

Ваш посредник предоставит две операции:

  • Push - клиент вызовет эту операцию при публикации новых данных для синхронизации.Данные будут храниться в службе до тех пор, пока их не загрузит другой клиент.
  • Pull - клиент будет вызывать эту операцию регулярно, чтобы загрузить любые опубликованные данные, хранящиеся на посреднике.

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

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

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