我有一个分布式客户端 - 服务器应用程序(多个服务器)。用户可以将数据从一个服务器发送到另一个服这只允许(客户定义的)结构(aka DataType
)在所有服务器上都是相同的。
因此,我使用 protobuf-net 序列化DataType
并比较二进制数据的MD5哈希值。
但是这里有一个问题:二进制数据不同(因此MD5哈希值),但所有属性(用ProtoMemberAttribute
修饰)都具有完全相同的值!
我有几个定义了[ProtoMember(5, AsReference = true)]
的字段 - 我怀疑内部识别标记的生成不是确定性的。
有谁知道这一代人的详细情况如何?
依靠二元protobuf平等一般是个坏主意吗?
我们正在使用VS2010。净4.0。一个protobuf-net 2.0.0.668。
答案 0 :(得分:1)
我
依靠二元protobuf平等一般是个坏主意吗?
是的,确实如此。格式本身有多种内容,可以以不同的方式呈现相同的数据:
5
的正常和预期的表示是0x05
,但是0x8500
,0x858000
,0x85808000
(等等) )还 5