Запуск моего приложения в контейнере Docker - PullRequest
0 голосов
/ 26 февраля 2020

Я работаю над одним из проектов моей организации, где у нас есть встроенное устройство с именем Gateway, через которое мы можем считывать счетчики электроэнергии по протоколам DLMS и Modbus. Шлюз способен считывать данные по этим протоколам, интерпретировать полученные данные и отправлять их в бэк-офис в однородной структуре данных JSON по защищенному протоколу транспортного уровня веб-сокетов с использованием SIM или Ethe rnet. В прикладной операционной системе шлюза есть пользовательский linux, код приложения написан на. NET C# и работает на Linux с использованием Mono Framework. Это приложение имеет 6 двоичных файлов, 4 базы данных SQLite, некоторые библиотеки DLL и некоторые общие библиотеки C. Это работает нормально на моем встроенном шлюзе устройства. Теперь некоторые клиенты не хотят использовать шлюз для встроенных устройств, но хотят решение, работающее на windows P C, которое может считывать счетчики по TCP и может отправлять данные в backoffice через Ethe rnet и сохранять их в соответствующей базе данных. Теперь, чтобы удовлетворить это требование, у нас есть 2 подхода: -

  1. Разработка совершенно нового приложения. NET на Windows ОС, которые выполняют ту же цель.
  2. Докеризация всего шлюза приложение в контейнере docker и запуск его на ОС Windows с использованием Docker Desktop.

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

Пожалуйста, укажите, правильно ли наше мышление или нет. Мы должны go со вторым подходом или с первым подходом, где мы должны разработать для этого совершенно новую кодовую базу.

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Ну, трудно что-либо предложить, потому что приложение не тривиально.

Однако я могу сказать, что стоимость разработки нового приложения для windows и в перспективе поддержки двух версий довольно high.

С другой стороны, попытка запустить докеризированную версию существующего приложения должна быть довольно низкой (ну, по крайней мере, намного ниже, чем первый путь), в конце концов вы должны создать Dockerfile со всеми необходимыми настройки и построить изображение. С этого момента вы можете просто запустить процесс из этого изображения.

Так что ИМХО, вы должны сначала попробовать этот вариант и прийти к выводам, является ли это жизнеспособным решением в вашем случае довольно скоро. В худшем случае вы получите первое решение в конце, но накладные расходы будут довольно низкими.

Одна вещь, которую вы должны знать, что обычно Docker работает лучше всего, если у вас докернизирован один процесс, и ты бежишь 6, как ты сказал. Вам может понадобиться что-то вроде supervisor.d, чтобы запустить их все: https://docs.docker.com/config/containers/multi-service_container/

0 голосов
/ 29 февраля 2020

чтобы ответить на вопрос, я хотел бы знать, почему они хотят это сделать. Было бы нормально, чтобы шлюз представлял собой установленное на месте устройство, которое подключается к счетчикам с использованием одного уровня физического протокола, а затем либо обеспечивает передачу данных счетчика в систему scada или головную систему с использованием транзитного соединения, обычно на основе ip. (Более сложные шлюзы могут обеспечить уровень виртуализации счетчиков, и я думаю, что это может иметь место здесь). Если счетчики уже могут работать по протоколу tcp, то обычно не требуется шлюз. Таким образом, кажется, что ваш клиент, возможно, захочет использовать код шлюза как систему scada для бедных или головную систему. Если вы сможете объяснить архитектуру сквозного решения, это может дать понимание необходимости пытаться виртуализировать устройство шлюза, и это вполне может быть ключом к определению наилучшего подхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...