Перенос бизнес-логики на сервисы: альтернативы 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 и работает очень хорошо.

Другие вопросы по тегам