Protobuf字符串到可读字符串?
Posted
技术标签:
【中文标题】Protobuf字符串到可读字符串?【英文标题】:Protobuf string to readable string? 【发布时间】:2020-05-15 08:28:51 【问题描述】:我在客户端服务器 WCF 解决方案中使用 protobuf,我需要尽可能高效地将消息(参数)的内容记录到文件中(避免大量的序列化和反序列化)。
在 IClientMessageInspector 中,我收到原始消息,但在大多数消息中都有一个不可读的 Protobuf 字符串。即使我对它进行base64decode,它也可能仍然不可读。那么有没有一种简单有效的方法可以将这个 profostring 转换成可读的东西,我可以记录到文件中?
问候
【问题讨论】:
【参考方案1】:您无法为 任意 protobuf 有效负载创建有意义且准确的文本表示,因为二进制编码本身是模棱两可和重载的 - 完全相同的二进制可能意味着许多不同取决于所使用的模式的事情(模式隐含在类型模型中,在 protobuf-net 的情况下,来自问题中的标签)。
如果您知道架构/类型,最好的办法是将 protobuf 有效负载反序列化为类型,然后通过您首选的 json / xml 运行该类型/yaml/csv/任何序列化程序,并记录那个。
如果您只需要记录字节以用于审计目的:base-64 应该就足够了,但同样:如果没有上下文,它将毫无意义。
【讨论】:
以上是关于Protobuf字符串到可读字符串?的主要内容,如果未能解决你的问题,请参考以下文章