我的Protobuf消息设计原则
网络通信涉及到消息的定义,不管是使用二进制模式、xml、json等格式。消息都可以大体的分为 命令消息、请求消息、应答消息和指示消息4大消息类型。一般情况下每个消息还还有包含一个序列号和一个能够唯一区分类型类型的消息编号,编号可以使用字符串、整数或者枚举等。 1. 使用 protobuf 的enum定于消息的编号,也就是消息的类型。 我会为每个系统都定义一个MSG枚举。包含系统用到的所有消息的枚举编号 enum MSG { Login_Request = 0x00001001; Login_Response = 0x00001002; XXX_Request = 0x00001003; XXX_Request = 0x00001004; XXX_Command = 0x00002001; XXX_Indication = 0x00003001; } 2. 会为每个具有消息体的消息定义一个对应的protobuf message。例如Login_Request会有一个对应LoginRequest消息。 message LoginRequest { required bytes username = 1; required string password = 2; } 3. 会为每个消息大类定义一个消息,例如命令消息全部包含在message Command中