如何在Java客户机上使用protobuf NET v2与.NET服务器通信时实现协议缓冲区(反)序列化?

如何在Java客户机上使用protobuf NET v2与.NET服务器通信时实现协议缓冲区(反)序列化?,.net,protobuf-net,.net,Protobuf Net,如果我理解正确,Java端需要相应的.proto文件。但是,我不清楚如何从服务器端使用的RuntimeTypeModel实例(protobuf net v2)生成一个 谢谢。目前,它还没有被重写;有一个v1版本的GetProto(),但是它不适用于v2,因为它需要经过大量重构才能从RuntimeTypeModel工作。这只是一个找时间把代码放在一起的例子 如果模型大小适中,我可能可以手动将其连接在一起 还请注意,protobuf net提供了一些无法很好地映射到.proto中的功能,因为它们在c

如果我理解正确,Java端需要相应的.proto文件。但是,我不清楚如何从服务器端使用的RuntimeTypeModel实例(protobuf net v2)生成一个


谢谢。

目前,它还没有被重写;有一个v1版本的
GetProto()
,但是它不适用于v2,因为它需要经过大量重构才能从
RuntimeTypeModel
工作。这只是一个找时间把代码放在一起的例子

如果模型大小适中,我可能可以手动将其连接在一起

还请注意,protobuf net提供了一些无法很好地映射到.proto中的功能,因为它们在core.proto中根本没有定义(这些功能通常清楚地记录为扩展),例如:

  • 参考跟踪
  • 继承权
  • 动态类型
此外,一些BCL核心类型没有直接的.proto对应项,包括:

  • 指南
  • 日期时间
  • 时间跨度

这些可以解释,但需要更多的洗牌。该模型的大小确实适中,但话说回来,您如何定义适中?@mark-好吧,我们大概讨论了多少类型和成员?(另外,请参阅编辑部分,了解一些可能无法清晰映射的内容)8种类型,共27个属性。很抱歉,我没有询问您对扩展功能的保留。如果说使用扩展会产生一个有效的.proto规范,它对应于与原始数据模型不同的数据模型,这难道不是真的吗?像其他对象一样实现引用跟踪。这些是有效的对象和有效的原型规范,只有数据对象需要额外的处理来展开共享引用、剥离动态类型标记等。。。我说的对吗?Guid、DateTime和Timespan可以作为普通字符串读取,很好,不是吗?