第一个扩充是什么意义上的?有多大成分是运行时的?我的理解是,在一般的应用场合,A <--> S 之间的通讯,即使在通讯结构转换这个层面有必要做到纯运行时,但是在业务逻辑层面,多多少少都是要在代码层面增补的(编译时)。
第二个,如果不涉及cpu cache hit rate之类的,硬件其实无所谓,大小端统一的问题,网络库层应该内部搞定,和应用层没关系。
听下来还是序列化的老问题,就是动态结构(vector, map之类)怎么自动正反序列化。protobuf msg可以有descriptor,可以实现动态转换,json如果没有这个机制,恐怕你的需求是不行的。如果对运行、传输和编码效率没有太高要求的话,我觉得可以用boost::ipc::managed_external_buffer,就是运行的时候都是boost::ipc 的container了。
我觉得最大的可能就是你们框架并不在你的控制范围内,然后你只有继续搬砖了。
Managed External Buffer: Constructing all Boost.Interprocess objects in a user provided buffer
Sometimes, the user wants to create simple objects, STL compatible containers, STL compatible strings and more, all in a single buffer. This buffer could be a big static buffer, a memory-mapped auxiliary device or any other user buffer.
This would allow an easy serialization and we’ll just need to copy the buffer to duplicate all the objects created in the original buffer, including complex objects like maps, lists.... :
【 在 z16166 的大作中提到: 】
: agent和server之间通信,消息类型有个20+,而且会扩充。
: agent和server可能是异构的,cpu硬件不一样
:
--
FROM 125.119.102.*