Я разрабатываю программу для нашей организации. Моя программа (настольная программа C# для Windows 7) состоит из 2 подпрограмм: «серверная» программа и «клиентская» программа.Отправка сериализованных объектов через интернет
Программа «сервер» будет установлена в головном офисе и будет получать информацию от филиалов о том, кто и в каком предмете обучается каждый сотрудник. Он имеет задний конец базы данных PostgreSQL.
Программа «клиент» будет установлена в филиалах организации (в настоящее время 9 филиалов), у нее будет файловая база данных (еще не определена) и отвечает за сбор информации о том, кто прошел обучение в этой конкретной отрасли и в какой предмет.
Итак, каждый день (отдавайте или отправляйте) каждый филиал отправляет статистику обучения в серверную программу главного офиса (? Сериализованные объекты), главный офис получит объекты и сохранит их в базе данных и ответит с некоторой информацией , такие вещи, как «ok подтверждено» или «да, вы можете это сделать» или «нет, отказались». В конце месяца компьютер головного офиса обработает данные и распечатает некоторую статистику. Поэтому связь в реальном времени между филиалами и сервером абсолютно НЕ необходима.
Вопрос: учитывая, что эти компьютеры находятся через Интернет и не могут напрямую общаться друг с другом (у нас есть динамическая IP-адресация в нашей стране), как я могу получить эти сериализованные объекты от клиентов на сервер и наоборот ?
Мое мышление заключается в том, что я могу использовать электронную почту (отправлять файлы как вложения) или, возможно, в любую программу обмена облачными файлами (Dropbox или OneDrive ... и т. Д.). Но я не эксперт-программист, и я хотел бы знать, как это делается.
p.s .: облачная база данных не является вариантом. по соображениям производительности + мне не нужна наша информация в чужих руках. Способ общения в порядке, потому что материал будет подписан и зашифрован в пути.
Почему бы им не общаться напрямую? Вы только заботитесь о связи с запросом и ответом, что довольно легко. Просто настройте зашифрованную конечную точку WCF, в идеале, с очень ограничительным брандмауэром (IP-фильтрация?), И все готово. – Luaan
* предоставление этих компьютеров через Интернет и, очевидно, не может напрямую связываться друг с другом * Компьютеры в Интернете общаются напрямую все время, если вам не нужно рассказывать нам, почему, потому что тогда вам придется интернет-прокси или буферный сервер какого-то типа между ними. –
У нас динамический IP-адрес в нашей стране. и, конечно, NAT в нашем маршрутизаторе. –