protobuf-net 中日期时间的 .proto 消息是啥

Posted

技术标签:

【中文标题】protobuf-net 中日期时间的 .proto 消息是啥【英文标题】:What is the .proto message for datetime in protobuf-netprotobuf-net 中日期时间的 .proto 消息是什么 【发布时间】:2012-06-14 07:49:03 【问题描述】:

我正在尝试编写一些代码,这些代码将从 protobuf-net (V2) 运行时类型模型生成准确的 .proto 文件,因此我可以编写一个能够反序列化 protobuf-net 生成的消息的 python 客户端。

不过,我有点不知道日期时间的消息应该是什么样子,有人能解释一下吗?

谢谢

【问题讨论】:

【参考方案1】:

核心 protobuf 规范没有用于处理日期/时间的内置机制。

如果您在平台之间工作,那么坦率地说,我建议以更简单的方式公开它,例如long(unix time,或类似的)。 protobuf-net 使用了一些更细粒度的布局,以利用许多日期时间值是纯日期等事实。项目站点上有 一个 BCL.proto,但我不能似乎现在找到它......这很奇怪(我会调查)。但是:如果选项可用:只需以更简单的方式公开数据。

【讨论】:

不幸的是,我无法控制将要发送和接收的 .NET 类型。如果有人通过网络向我的 python 客户端发送一个 .NET DateTime 对象,我需要确切知道 protobuf-net 是如何序列化它的(确切的消息定义),以便我可以反序列化它。 我找到了 bcl.proto here 的副本。这适用于 v2 吗? @Franchesca 好吧,v1 和 v2 的格式相同。不过,我确实强调,DateTime 支持不是核心规范的一部分,主要用于 .NET 到 .NET 的使用;使用unix时间会容易得多... 太好了,感谢您的帮助! (我知道你是对的,但恐怕我的 python 客户端将不得不分享它的年长 .NET 兄弟的类型,即使它们有点奇怪并且其他 python 孩子嘲笑他。:P)跨度>

以上是关于protobuf-net 中日期时间的 .proto 消息是啥的主要内容,如果未能解决你的问题,请参考以下文章

protobuf-net:日期时间的编码

如何使用 protobuf-net 处理 .proto 文件

手工使用Protobuf-net工具来序列化对象

如何通过 ProtoBuf-net 使用 DateTimeKind 选项序列化 DateTime 字段

为啥我的代码中的 protobuf-net 反序列化器比流式读取 csv 慢得多

如何在 Protobuf-net 中动态添加 Proto 成员