Protobuf 字符串到可读字符串?

Protobuf string to readable string?

我在客户端服务器 WCF 解决方案中使用 protobuf,我需要尽可能高效地将消息(参数)的内容记录到文件中(避免大量序列化和反序列化)。

在 IClientMessageInspector 中,我收到了原始消息,但在大多数消息中,有一个不可读的 Protobuf 字符串。即使我对其进行 base64 解码,它也可能仍然无法读取。那么有没有一种简单有效的方法可以将这个 profosring 转换成我可以记录到文件的可读内容?

问候

您无法创建有意义且准确 任意 protobuf 有效负载的文本表示,因为二进制编码本身不明确且过载 -完全相同的二进制文件可能意味着许多不同的事情,具体取决于所使用的模式(模式是从类型模型中隐含的,在 protobuf-net 的情况下,来自问题中的标签)。

如果您知道 schema/type,您最好的办法是将 protobuf 负载反序列化 为类型 ,并且然后 运行 通过您首选的 json / xml / yaml / csv / 任何序列化程序输入,并记录 that.

如果您只需要记录字节以供审计:base-64 就足够了,但同样:如果没有上下文,它将毫无意义。