如何在 C# 中使用 protobuf 接口

Posted

技术标签:

【中文标题】如何在 C# 中使用 protobuf 接口【英文标题】:How to use protobuf interface in C# 【发布时间】:2013-09-10 09:18:04 【问题描述】:

我编写了一个 .proto 文件,其中包含一个服务:

service ServerService 
    rpc HelloServer (Word) returns (Void);

然后,我使用 protobuf-net 生成 .cs 文件:

public interface IServerService

  gt.Void HelloServer(gt.example.Word request);


但我不知道如何使用它。有文档吗?

【问题讨论】:

protobuf-net 不包括对rpc 存根的任何特定支持——主要是因为 protobuf 规范本身在这里没有定义任何东西。基本上,谷歌并没有开源与他们使用 protobuf 密切相关的 RPC 堆栈 那么,我不能在 C# 中使用 'service' 和 'rpc' 吗? 任何语言中没有定义的实现;未指定。如果自上次查看以来出现了共识实现(在协议级别),我很乐意重新审视它 - 但上次我检查有六个不同、分散且不兼容的实现,每个都在工作不同的方式。 【参考方案1】:

新标准gRPC 正在兴起并在 .net 核心中得到支持。

查看本教程:https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.1&tabs=visual-studio

本教程还链接到有关 .NET 中 gRPC 的其他信息。文档非常好。

【讨论】:

以上是关于如何在 C# 中使用 protobuf 接口的主要内容,如果未能解决你的问题,请参考以下文章

python中的Protobuf文件版本控制

C# Protobuf-net:如何从网络流中连续反序列化?

与 protobuf-net 和 C# 的接口

如何使用 Protobuf.net C# 序列化自定义对象基础属性

如何修复 c# protobuf-net 中的无效线型问题

如何使用 protobuf-net 处理 .proto 文件