@dropsonic

Каким образом делается взаимодействие с hardware в микросервисной архитектуре и Docker-контейнерах?

В сложных системах очень часто возникают ситуации, когда необходимо интегрироваться с каким-то внешнием железом, как-то: банковские терминалы, сканеры, принтеры, телефония, POS и т.п.
Каким образом такое взаимодействие обеспечеивается в микросервисной архитектуре на базе .NET при хостинге в Docker-контейнерах?

К примеру, при комплектации заказа нужно печатать документы. .NET Core не поддерживает System.Printing и System.Drawing.Printing. Можно использовать .NET Framework, но Windows-контейнеры Docker не поддерживают spooler service!

Другой пример: для общения с банковским терминалом нужна возможность взаимодействия с COM / USB портами, но Windows-контейнеры опять же этого не имеют.

Как обычно поступают в таких случаях? Хостят всё, кроме hardware-specific кода в контейнерах, а сервисы, взаимодействующие с железом, деплоят на сам хост?
  • Вопрос задан
  • 203 просмотра
Решения вопроса 2
@basrach
COM, USB, принтеры и какие-то специфичные железяки для терминалов - та часть, где код должен быть по определению железо-зависимым. Контейнеры же про диаметрально противоположное, про абстракцию от железа и окружения. Т.е. писать софт для специфичной железяки и запускать его в контейнере, это как в истории про микроскоп и гвозди.
Вы сделали правильный вывод. Нужно выносить в контейнеры только логику независящую от какого-либо железа или оборудования. А сервисы, взаимодействующие с железом, разворачивать там где и железо.
Ответ написан
newross
@newross
.Net разработчик, стартапер
Можно извернуться и сделать форвардинг COM\USB портов по TCP. Но это все будет работать нестабильно и через жопу.
Все что относится к клиенту, должно работать на клиенте. Печать - ответственность только клиента, бэк в контейнере вообще ничего не должен об этом знать, только генерировать документы если надо.
Работа внешним оборудованием тоже отвественность клиента. Если оборудование надо зашарить, то на клиенте подымается сервис.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы