gpt4 book ai didi

c# - Protocol Buffer ,让 C# 与 C++ 对话 : type issues and schema issues

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:34 28 4
gpt4 key购买 nike

我即将开始一个连接两个程序的项目,一个用c#,一个用c++。我已经有一个可以工作的 c# 程序,它能够与自身的其他版本对话。在开始使用c++版本之前,我想到了一些问题:

1) 我正在使用 protobuf-net v1。我认为序列化程序中的 .proto 文件正是 C++ 版本模板所需要的?谷歌搜索提到了有关 Pascal 大小写的内容,但我不知道这是否重要。

2) 如果其中一种 .NET 类型在 C++ 中没有直接对应项,我该怎么办?如果我有小数或字典怎么办?我是否必须以某种方式修改 .proto 文件并将数据压缩成不同的形状? (我会检查文件,看看我能不能弄明白)

3) 人们还能想到其他陷阱吗?二进制格式之类的?

编辑我已经看过其中一个原型(prototype)文件了。似乎 .NET 特定的东西被标记为例如 bcl.DateTime 或 bcl.Decimal。子类型包含在原型(prototype)定义中。不过,我不确定如何处理 bcl 类型。如果我的 C++ 程序看到一个小数点,它会做什么?

最佳答案

  1. 是的,proto 文件应该是兼容的。大小写是关于约定的,它不应该影响实际功能 - 只是生成的代码等。

  2. 重要的不是 .NET 中是否存在可直接比较的类型,重要的是 Protocol Buffer 是否支持该类型。 Protocol buffers 大多是非常原始的——如果你想构建更大的东西,你需要创建你自己的消息。

  3. protocol buffers 的要点是使其在网络上全部二进制兼容,因此确实不应该有陷阱...阅读文档以了解版本控制策略等. 我唯一能想到的是,至少在 Java 版本中,将枚举字段设置为可选是个好主意,并为枚举类型本身赋予零值“未知”,如果您尝试反序列化一个反序列化代码尚不支持的新值。

关于c# - Protocol Buffer ,让 C# 与 C++ 对话 : type issues and schema issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9054726/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com