如何使用协议缓冲区将数据从C ++传输到C#

时间:2018-07-19 08:01:38

标签: c++ .net protocols protocol-buffers

我想在C ++中序列化一个对象,将其发送到c#并在那里反序列化。对于一个简单的类,最快的方法是什么?

class Person
{
    int id;
    string name;
}

1 个答案:

答案 0 :(得分:1)

C ++原型工具确实希望您使用.proto模式,因此:您需要在.proto中描述您的意图;幸运的是,这很简单:

syntax = "proto3";
message Person {
    int32 id = 1;
    string name = 2;
}

然后,至少对于C ++部分,您需要通过Google的protoc工具运行该代码,以输出C ++存根,并对其进行处理。对于C#部分,您(至少)有2个选择:您可以使用protoc做同样的事情来生成C#,也可以使用protobuf-net来乐意 使用从.proto生成的类型(通过protogen-protobuf-net等效于protoc),的类型。例如,在带有protobuf-net的C#中,您的上述类型将仅适用于:

[ProtoContract]
class Person
{
    [ProtoMember(1)]
    int id;
    [ProtoMember(2)]
    string name;
}

在任何情况下(协议或原始),您可能会在玩代码生成步骤方面发现this online tool useful

做到了:使用特定于库的序列化机制,就可以了。