Перенос бизнес-логики на сервисы: альтернативы Thrift
Я создаю приложение, которое имеет интерфейс на основе приложения в C++/Qt и интерфейс на основе Web в Python (с использованием Django). Я пытаюсь перевести архитектуру на сервисную, поскольку в обоих этих интерфейсах встроена бизнес-логика, что затрудняет ее поддержку.
Я думаю о выборе Thrift для написания сервисов RPC, которые могут использоваться другими модулями системы и кодом Python. Однако, как кажется, Thrift не очень хорошо работает с Windows, поэтому у меня остается возможность преобразовывать выходные данные Thrift в некоторые структуры C++, которые затем необходимо снова сериализовать / десериализовать, чтобы службы могли потребляется Qt/C++. Код Python может легко использовать эти сервисы Thrift.
В этом процессе мне нужно преобразовать / сериализовать структуру, сначала в соответствии с Thrift IDL, а затем с некоторым собственным кодом. Любые предложения по изменению архитектуры, чтобы
- будь проще
- работает с несколькими языками
- быстро реализовать?
2 ответа
Вы могли бы рассмотреть:
- уже упоминавшееся решение CORBA: встроенный маршалинг, компактный двоичный протокол
- REST http и сервер на основе json: просто, немного болтливо в сети, вам нужно сериализовать данные в json
- Обмен сообщениями AMQP + json или какой-либо другой сериализатор: вам нужно сериализовать ваши данные в json или что-то еще, например буферы протокола Google, плюс то, что масштабирование, если вам нужно больше серверов, будет проще.
Я реализовал нечто подобное, используя omniORB. У него есть привязки для Python и для C++. Это действительно легко в Python и работает очень хорошо.