Помощь с обменом данными между шаблоном и внешним приложением

vmc

Client
Регистрация
15.03.2015
Сообщения
72
Благодарностей
13
Баллы
8
Всем привет!

Пытаюсь прикрутить библиотеку для обмена данными между двум приложениями.
Требуется помощь в обучении этой схеме. Для меня важно понять, как работает схема, чтобы позже я смог в своих приложениях самостоятельно реализовать, взяв каркас и заменив другими данными.
Сколько времени займёт реализация и какая цена такого решения?

Задача
С помощью библиотеки https://github.com/Cysharp/MagicOnion реализовать обмен между шаблоном и приложением .exe, написанном на C#.

Обмен в двух направлениях
1. Приложение C# - сервер, шаблон - клиент.
2. Приложение C# - клиент, шаблон - сервер.

Обмен в двух форматах
1. Запрос данных клиентом у сервера: клиент отправил запрос на сервер, сервер прислал ответ, через любое время клиент снова отправил запрос на сервер, и получил ответ.
2. В потоковом формате, наподобие вебсокета, когда сервер открывает соединение, а клиент постоянно "слушает" этот канал и принимает все сообщения, без необходимости в бесконечном цикле отправлять запрос серверу.

Тестовые данные для обмена
Рандомные значения: Имя (string), Код (integer), Сумма (double).
Для потокового формата эти же данные генерируются на сервере в цикле от 1 до 1000.
Принятые от сервера данные клиент выводит в лог.

Дополнительная информация
Не обязательно всё это в одном приложении и в одном шаблоне. Можно разделить на отдельные проекты. Например:
1. Приложение C# - сервер, шаблон - клиент.
2. Приложение C# - клиент, шаблон - сервер.
3. Реализация через запросы
4. Реализация через поток

На github есть документация.
Здесь Zymlex приведёл пример на F#:
 

vmc

Client
Регистрация
15.03.2015
Сообщения
72
Благодарностей
13
Баллы
8

PROsharper

Новичок
Регистрация
20.01.2020
Сообщения
3
Благодарностей
1
Баллы
3
Доброго времени суток.

Взаимодействие можно реализовать через мини API на Linux сервере (можно найти за очень дешево хостинг без домена).

1. База данных (советую для данных задач MariaDB), в которой будут храниться данные логов (задача, выполнена задача, не выполнена задача, время выполнения и т.д.), команд и т.д.
2. PHP скрипт, к которому необходимо стучаться с ключом, который и будет агрегатором запроса-ответа.
3. Как в десктоп решении, так и в зенке просто с заданным интервалом стучаться к PHP скрипту, и если есть текущие задачи/данные выдавать их пользователю.

Почему я использую данное решение:
1. Логирование действий (траблшутинг)
2. Можно в эту цепочку добавлять бесконечное кол-во клиентов.

P.S. - настраивать потоковое соединение конечно хорошо, но вот если произойдет такая жесть как в Беларуси, когда интернет работает раз в час, то потоковое соединение будет валиться постоянно, выше описанное решение будет более ошибкоустойчиво, но немного медленнее (хотя тоже зависит от того, какой купить сервер, и как часто его опрашивать).

По времени - если интересно решение, напишите в тг @v_smm , завтра сможем обсудить детальнее задачу и смогу реализовать и разжевать решение подробно.
По стоимости - предлагайте, будем думать.
 

vmc

Client
Регистрация
15.03.2015
Сообщения
72
Благодарностей
13
Баллы
8

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)