Я разработал приложение, которое в основном обслуживает данные из большой базы данных. Клиенты - это мобильные приложения, которые извлекают данные с клиентского ПК, где работает это серверное приложение.Как обслуживать данные без открытия порта для прослушивания?
Основная проблема заключается в том, что серверное приложение должно быть установлено на клиентских ПК. Есть сотни клиентов, поэтому они должны иметь возможность настроить серверное приложение.
Моей первой попыткой было разработать нормальное серверное приложение. Когда это приложение запускается, оно открывает порт и прослушивает его. Мобильному приложению требуется только подключение к IP-адресу пользователя для получения данных. Он работал нормально, но эта попытка не является хорошим решением. Прежде всего, поскольку каждый пользователь должен настроить маршрутизаторы, прокси и т. Д., И во многих случаях они не являются компьютерными грамотными. На втором месте другой разработчик сказал мне, что в 2015 году никто не должен устанавливать приложения, открывающие порты на клиентских ПК, потому что это действительно опасно. (Я не знал об этом).
То, что я хотел бы это:
1) Избегайте настройки прокси, маршрутизаторы и т.д. Установка клиента должна быть очень легкой.
2) Мобильное приложение должно запрашивать данные на клиентском ПК. Когда и что необходимо, неизвестно до тех пор, пока мобильный сервер не отправит запрос.
Кто-то предложил систему опроса, но я не понимаю, как это работает. Клиентское приложение должно будет потребовать, чтобы главный сервер каждые несколько секунд был «в режиме реального времени», и это не кажется жизнеспособным.
Другой человек предложил периодически передавать данные на главный сервер, а затем мобильный мог запросить эти данные на главный сервер. Я не могу выталкивать данные от клиента на наш главный сервер. Я понятия не имею, что потребуется мобильному приложению.
Какую модель можно использовать для моего сценария?
Спасибо
У вас должно быть приложение на сервере, который контролирует порт, чтобы установить соединение с клиентом. Например, веб-серверы (http), всегда слушают порт (по умолчанию 80), а веб-браузер делает запрос через http-порт 80 на этом IP-адресе. У вас нет другого выбора, кроме как прослушивать сервер где-нибудь, чтобы принять запрос клиента. Какой протокол вы используете для связи? Если это стандартный, возможно, порт уже может быть открыт. (Это похоже на то, что вы должны были понять задолго до написания вашего приложения.) –
Что вам нужно, это открыть и закрыть определенные порты, используя UPnP с вашим приложением. К сожалению, у меня нет исходного кода, чтобы предоставить его вам в качестве примера. – SilverWarior
Skype и Dropbox по умолчанию пытаются открыть порты на клиентском компьютере, чтобы принимать входящие соединения от других клиентов. Эти динозавры до сих пор не знают, что мы в 2015 году :) – mjn