【发布时间】:2022-10-24 02:52:35
【问题描述】:
刚开始使用协议缓冲区并有点困惑。
我编写了自己的原始 TCP 套接字服务器,并在顶部添加了协议缓冲区而不是 JSON。
我想确保遵循协议缓冲区消息的合同并处理它们不存在的情况,这可能吗?
例如,如果客户端有一个协议缓冲区类
[ProtoContract]
public class WelcomeMessage
{
[ProtoMember(2)]
public string Message {get;set;}
}
但是服务器有一个
[ProtoContract]
public class WelcomeClient
{
[ProtoMember(1)]
public int MagicNumber {get;set;}
[ProtoMember(2)]
public string WelcomeMessage {get;set;}
}
MagicNumber 的默认值设置为 0,但这会导致意外情况。我该如何处理这类案件?
我只是为了从字节数组反序列化:
public class ProtocolBufferUtilities
{
public static T Deserialize<T>(byte[] data)
{
using var stream = new MemoryStream(data);
var result = Serializer.Deserialize<T>(stream);
return result;
}
}
【问题讨论】:
标签: c# protocol-buffers protobuf-net