Lev*_*Lev 15 c# c++ python serialization cross-language
我们开发了一个分布式系统,该系统是用不同编程语言(C++,C#和Python)实现的组件构建的,并通过网络相互通信.系统中的所有组件都以相同的业务概念运行,并且在这些概念方面也相互通信.
结果,我们在以下两个挑战中奋力拼搏:
这个问题的一个天真的解决方案就是定义相同的数据结构(和序列化代码)三次(对于C++,C#和Python).
不幸的是,这种解决方案有严重的缺点:
我们考虑的另一个解决方案是基于ProtoBufs或Thrift等框架.这些框架具有内部语言,其中定义了业务概念,然后这些框架自动生成C++,C#和Python(以及序列化逻辑)中这些概念的表示.
虽然此解决方案没有上述问题,但它还有另一个缺点:这些框架生成的代码将表示底层业务概念的数据结构和序列化/反序列化这些数据结构所需的代码耦合在一起.
我们认为这污染了我们的代码库 - 我们系统中使用这些自动生成的类的任何代码现在都"熟悉"这种序列化/反序列化逻辑(严重的抽象泄漏).
我们可以通过我们的类/接口包装自动生成的代码来解决它,但这使我们回到了天真解决方案的缺点.
任何人都可以推荐解决所述问题的解决方案吗?