У меня есть старое (но все еще поддерживаемое внутри) приложение, написанное на C ++, которое обрабатывает некоторое оборудование, взаимодействует с базами данных, получает команды через последовательную линию или сокет … короче говоря, оно выполняет нетривиальный объем работы.
Это приложение работает под Linux (ARM / Buildroot).
Теперь необходимо обновить интерфейс управления, добавив RESTful API.
Я изучаю возможность сделать это через расширение Python.
Обратите внимание, что я программист на C ++ / Java и не очень хорошо разбираюсь в Python, но знаю основы.
Общая идея будет:
Я изучил официальную документацию (в основном относящуюся к простой C) и несколько альтернатив, в том числе:
Вопрос:
Я знаю, что вопрос довольно широкий, но я надеюсь сузить его, как только первые комментарии укажут мне правильное направление.
Можете ли вы сделать это наоборот — встроить свой код C ++ в программу Python? Таким образом, он будет более подготовлен к переносу существующей функциональности Python, как вы сказали.
Python делает многое проще (быстрее разрабатывать, легче поддерживать) — взаимодействие с базами данных, библиотеками (если у них есть обертки Python), управление процессами / потоками … Сохранение в C ++ только того, что должно быть в C ++, как работа с аппаратным обеспечением, C / C ++ — только библиотеки, загруженный ЦП код.
Посмотри на Cython для встраивания C ++ в Python. По сути, Cython — это компилятор из языка, похожего на Python, в файл .c / .cpp, который «просто» вызывает API-интерфейс Python C, поэтому его можно использовать из «обычного» кода Python, но он также может вызывать другой код C / C ++.
Альтернатива: Реализуйте API в приложении C ++ и создайте отдельное приложение Python, которое использует этот API. Под API я имею в виду не REST API, а что-то более низкое — RPC, ZeroMQ, простые сокеты …
Других решений пока нет …