Самый простой для двусторонней связи через Интернет с использованием C #

2

Что я использую для двусторонней связи через Интернет без необходимости открывать порты на стороне клиента?

Пользователи не согласятся открывать порты и выполнять переадресацию портов на стороне клиента, хотя все возможно на стороне сервера.

Но мне нужно выполнить двухстороннюю связь.

Как мне добиться этого?

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

Конечно, это будет через Интернет.

Пожалуйста, помогите.. Благодаря

Изменить: Обратите внимание, что мне нужно подключить несколько клиентов и поддерживать сеанс для каждого клиента.

  • 0
    Ну, я имею в виду, вы можете просто использовать веб-сайт. Люди могут иметь учетные записи, а затем, вы знаете, сообщения друг другу :)
  • 0
    Нет, у меня уже есть Windows-клиент, который связывается с веб-сайтом ... но теперь мне нужен веб-сайт, чтобы инициировать некоторую работу над клиентом .... это проект распределенной архитектуры для совместного использования процессов на разных машинах
Теги:
networking
communication

3 ответа

3
Лучший ответ

WCF поддерживает дуплексные привязки HTTP.

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

  • 0
    но я думаю, что порт должен быть открыт на стороне клиента, и требуется переадресация порта ... правильно?
  • 0
    Если клиентский компьютер может получить доступ к веб-сайту, он также может получить ответ от веб-службы. Вопрос заключается просто в том, сколько времени потребуется, прежде чем ответ придет к клиенту :) Вот чем пользуется WCF: клиент терпеливо ожидает HTTP-ответа от службы и сохраняет соединение открытым до бесконечности. Поскольку соединение открыто, служба может передавать ответы клиенту в любое время, когда ему это нравится. (Azure) Internet Service Bus также работает таким образом.
Показать ещё 10 комментариев
2

Это зависит от того, что вы хотите сделать. Дуплексный WCF может работать, но через NAT и Proxies он становится несколько "iffy", потому что он зависит от того, что клиент открывает конечную точку WCF и поддерживает соединение.

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

  • 0
    Ваш гид работает через NAT? NAT - моя проблема ... Я не могу ожидать, что обычные пользователи ПК настроят переадресацию портов.
  • 0
    помогите пожалуйста ... любой способ выйти из NAT? Teamviewer.com и logmein.com сделали это ... почему мы не можем, имея столько технологий внутри .Net? Там нет из коробки пути?
Показать ещё 2 комментария
1

Подключить через TCP (raw сокеты или более высокую реализацию) к центральному серверу.
На вашем сервере должно быть приложение, которое прослушивает конкретный, известный TCP-порт.
Каждый клиент подключается к вашему серверу, используя конкретный порт и "входит в систему".
Запишите протокол приложения выше TCP (проверка подлинности, управление сеансом и т.д.), И там у вас есть , поскольку TCP-соединение, однажды установленное, работает для обоих направлений.

  • 0
    HTTP (с использованием TCP) работает таким же образом. Нет оснований для такого низкоуровневого подхода.
  • 0
    Я думаю, что HTTP должен иметь свое время ожидания, и я не уверен, что этот предел в порядке OP.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню