我正在研究使用Google Protobuffers进行Delta消息传递。这意味着我只想发送域对象中已更改的值。
但这引出了一个问题,即用于此目的的协议存在问题。我可以轻松地省略未更改的属性,这将呈现简洁的消息。
但是对于从“_something_”到“null”的值发生更改的属性怎么办?在协议缓冲区中无法区分这两种情况。
其他人在这里做了什么?我正在查看几种不同的解决方案:
1. 为所有对象添加一个meta属性,该属性是int数组。如果任何属性应更改为null,则在该数组中包括字段号。如果没有属性更改,则忽略元属性,并且不会在消息中占用带宽。 2. 添加一个位掩码的元属性,但与选项1中提到的数组类似。不过这可能更难让客户端理解。 3. 使用我尚未能找到的标准方法。
敬礼,Jay
但这引出了一个问题,即用于此目的的协议存在问题。我可以轻松地省略未更改的属性,这将呈现简洁的消息。
但是对于从“_something_”到“null”的值发生更改的属性怎么办?在协议缓冲区中无法区分这两种情况。
其他人在这里做了什么?我正在查看几种不同的解决方案:
1. 为所有对象添加一个meta属性,该属性是int数组。如果任何属性应更改为null,则在该数组中包括字段号。如果没有属性更改,则忽略元属性,并且不会在消息中占用带宽。 2. 添加一个位掩码的元属性,但与选项1中提到的数组类似。不过这可能更难让客户端理解。 3. 使用我尚未能找到的标准方法。
敬礼,Jay