Задать вопрос
@dropsonic

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

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

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

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

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