将业务逻辑迁移到服务:Thrift 的替代方案

migrating business logic to services: alternatives to Thrift

本文关键字:Thrift 方案 服务 业务 迁移      更新时间:2023-10-16

我正在构建一个应用程序,它在C++/Qt中有一个基于应用程序的前端,在Python(使用Django)框架中有一个基于Web的前端。我正在尝试将体系结构迁移到基于服务的体系结构,因为这两个前端都嵌入了业务逻辑,这使得它难以维护。

我正在考虑选择 Thrift 来编写 RPC 服务,这些服务可以被系统中的其他模块和 Python 代码使用。但是,看起来,Thrift 不能很好地与 Windows 配合使用,所以我可以选择将 Thrift 输出转换为一些 C++ 结构,这些结构需要再次序列化/反序列化,以便 Qt/C++ 可以使用这些服务。Python 代码可以轻松使用这些 Thrift 服务。

在这个过程中,我需要转换/序列化结构,首先根据 Thrift IDL,然后是一些自定义代码。任何改变架构的建议,以便

  • 保持简单
  • 适用于多种语言
  • 快速实施?
你可以

考虑:

  • 已经提到的 CORBA 解决方案:内置封送处理,紧凑的二进制协议
  • REST http 和基于 json 服务器:简单,在网络上有点健谈,您需要将数据序列化为 json
  • AMQP消息传递+ json或其他一些序列化程序:您需要将数据序列化为json或其他类似Google协议缓冲区的东西,此外,如果您需要更多服务器,则进行扩展会更简单。

我已经使用 omniORB 实现了类似的东西。它有 python 和 C++ 的绑定。这在python中非常容易,并且表现非常好。