- 主题:请教两个小问题(及吐槽)
两边用同一个.h不行吗?即使两边平台不同,大小头不同,边界对齐不同,类型长度不同。
我们都可以通过序列化反序列化使它们保持一致。
这就是我们中间件设计最初的问题,在不同平台间传送任意的struct。同时实现了不同语言间传送结构。如c与JAVA。一边序列化发出,另一边接收后反序列化到object。或反之。
c/s协议属于网络协议第五层,RPC,远过程调用。序列化反序列化属于网络协议第六层,XDR,外部数据表达。
中间件提供第五层第六层服务。
用一个数据描述,生成c的struct和JAVA的class,同时生成c和JAVA模板。
就可以实现互操作啦。
【 在 wuzhiqiu1 的大作中提到: 】
: 问题1:
: 在依赖QT的C/S项目中(同一个pro下),c端和s端的不同类中定义了相同的结构体定义,用于C/S传输和解析socket数据。我review时,认为此法不妥,应该唯一定义,以此理由要求同事修改是否妥当?
:
: ...................
--
修改:ylh1969 FROM 221.221.48.*
FROM 221.221.48.*
问题1:
在依赖QT的C/S项目中(同一个pro下),c端和s端的不同类中定义了相同的结构体定义,用于C/S传输和解析socket数据。我review时,认为此法不妥,应该唯一定义。
如果是以前的话我对这一条无异议。
坚决支持唯一定义。
但现在挨的毒打多了,我会问:如果实现没有唯一定义,那得到了什么?
如果C和S端的更新总是能同步,唯一定义没有问题。
如果S端因为某些原因更新频率极低,C段更新更容易。导致实际生产环境中,总是有新版本的C使用旧版本的S时。
那么不唯一定义的唯一目的就是支持版本,C端的版本更新时,S端要能解析。
--
FROM 64.207.220.*
第一个问题。
我们现在也有这样的需求。也是唯一定义。不过是客户端和服务端抽出一个共用的文件。并且要求客户端与服务端这个文件不一致的时候,协议也能运作。所以:
1. 服务端与客户端之间还要传个版本号。在旧版本客户端没下线的情况下,服务端要保证客户端能处理。
2. 总是由服务端同事来定义协议。客户端只有建议权。因为可能还会有其它客户端。
3. 注意采用通用协议。不能搞私有数据结构。比如我们使用 msgpack.
4. 拒绝支持大端模式。只支持小端。
【 在 wuzhiqiu1 的大作中提到: 】
: 问题1:
: 在依赖QT的C/S项目中(同一个pro下),c端和s端的不同类中定义了相同的结构体定义,用于C/S传输和解析socket数据。我review时,认为此法不妥,应该唯一定义,以此理由要求同事修改是否妥当?
: 问题2:
: ...................
--
修改:hgoldfish FROM 222.79.178.*
FROM 222.79.178.*
第二个问题的话,
建议仍然用 jira 推进工作。
但是任务应该细分到更细的粒度。
我自己平时单人工作的时候都要写待办事项。何况多人一起协作工作的时候呢。
多人协作时不可能有唯一的答案。只能在工作中慢慢调整。没法保证完全公平公正。
【 在 wuzhiqiu1 的大作中提到: 】
: 问题1:
: 在依赖QT的C/S项目中(同一个pro下),c端和s端的不同类中定义了相同的结构体定义,用于C/S传输和解析socket数据。我review时,认为此法不妥,应该唯一定义,以此理由要求同事修改是否妥当?
: 问题2:
: ...................
--
FROM 222.79.178.*
请教下,唯一定义怎么搞?难道不是统一用.h吗?
【 在 allegro 的大作中提到: 】
: 问题1:
: 在依赖QT的C/S项目中(同一个pro下),c端和s端的不同类中定义了相同的结构体定义,用于C/S传输和解析socket数据。我review时,认为此法不妥,应该唯一定义。
: 如果是以前的话我对这一条无异议。
: ...................
--
FROM 221.221.48.*