将业务逻辑迁移到服务:Thrift 的替代方案
migrating business logic to services: alternatives to Thrift
我正在构建一个应用程序,它在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中非常容易,并且表现非常好。
相关文章:
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- 计算每个节点的树高,帮助我解释这个代码解决方案
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- visual c++,如何获取解决方案目录中的代码
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- C++Matching Brackets 2解决方案不起作用
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- C++11 中不同类型的对象的 std::array 的替代方案
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 我的固定时间步长与增量时间和插值的解决方案是错误的吗?
- 无法在问题解决方案中执行输出逻辑
- 如何强制 Thrift 仅接受来自本地主机的连接
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 将业务逻辑迁移到服务:Thrift 的替代方案