2015-05-12 3 views
0

Я разрабатываю программу для нашей организации. Моя программа (настольная программа C# для Windows 7) состоит из 2 подпрограмм: «серверная» программа и «клиентская» программа.Отправка сериализованных объектов через интернет

Программа «сервер» будет установлена ​​в головном офисе и будет получать информацию от филиалов о том, кто и в каком предмете обучается каждый сотрудник. Он имеет задний конец базы данных PostgreSQL.

Программа «клиент» будет установлена ​​в филиалах организации (в настоящее время 9 филиалов), у нее будет файловая база данных (еще не определена) и отвечает за сбор информации о том, кто прошел обучение в этой конкретной отрасли и в какой предмет.

Итак, каждый день (отдавайте или отправляйте) каждый филиал отправляет статистику обучения в серверную программу главного офиса (? Сериализованные объекты), главный офис получит объекты и сохранит их в базе данных и ответит с некоторой информацией , такие вещи, как «ok подтверждено» или «да, вы можете это сделать» или «нет, отказались». В конце месяца компьютер головного офиса обработает данные и распечатает некоторую статистику. Поэтому связь в реальном времени между филиалами и сервером абсолютно НЕ необходима.

Вопрос: учитывая, что эти компьютеры находятся через Интернет и не могут напрямую общаться друг с другом (у нас есть динамическая IP-адресация в нашей стране), как я могу получить эти сериализованные объекты от клиентов на сервер и наоборот ?

Мое мышление заключается в том, что я могу использовать электронную почту (отправлять файлы как вложения) или, возможно, в любую программу обмена облачными файлами (Dropbox или OneDrive ... и т. Д.). Но я не эксперт-программист, и я хотел бы знать, как это делается.

p.s .: облачная база данных не является вариантом. по соображениям производительности + мне не нужна наша информация в чужих руках. Способ общения в порядке, потому что материал будет подписан и зашифрован в пути.

+1

Почему бы им не общаться напрямую? Вы только заботитесь о связи с запросом и ответом, что довольно легко. Просто настройте зашифрованную конечную точку WCF, в идеале, с очень ограничительным брандмауэром (IP-фильтрация?), И все готово. – Luaan

+2

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

+0

У нас динамический IP-адрес в нашей стране. и, конечно, NAT в нашем маршрутизаторе. –

ответ

0

Кажется, HTTP-сервер с REST API подойдет вам неплохо. Вам нужно будет перенаправить TCP-порт с вашего сервера на внешний Интернет (если это не так, обратитесь к вашему интернет-провайдеру по этому вопросу).

0

ОК решение этой проблемы оказалось легким. динамическая переадресация портов DNS +.