gpt4 book ai didi

protocol-buffers - 将 ProtoBuf-net 与 gRPC 一起使用

转载 作者:行者123 更新时间:2023-12-04 07:21:24 25 4
gpt4 key购买 nike

我正在尝试在工作中构建一个利用 gRPC 的 PoC。谷歌文档here带我们通过一个示例应用程序。我想知道 protobuf-net,特别是 protogen,是否有能力理解执行 gRPC 调用所需的服务定义和类?或者这是正在做的事情?如果我使用 google 的 protoc 来生成客户端和服务器代码(涉及服务定义和 RPC 调用)并为我的业务对象使用 protobuf-net,它会起作用吗?

最佳答案

protobuf-net.Grpc现在是一件事......虽然在预览中。当 .NET Core 3 出现时,我们应该能够使其可用。

它受到 WCF 方法的启发,因此您的服务接口(interface)通过以下方式定义:

namespace Whatever {
[ServiceContract]
public interface IMyAmazingService {
ValueTask<SearchResponse> SearchAsync(SearchRequest request);
// ... etc
}
}

服务器只实现接口(interface):

public class MyServer : IMyAmazingService {
// ...
}

(托管它们的方式取决于您使用的是 ASP.NET Core,还是 native /非托管 gRPC 库;两者都有效)

客户端只请求接口(interface):

var client = http.CreateGrpcService<IMyAmazingService>();
var result = await client.SearchAsync(query);

在上述情况下,这将被推断为 Whatever.MyAmazingService/ Search gRPC 术语中的服务,即

package Whatever;
// ...
service MyAmazingService {
rpc Search (SearchRequest) returns (SearchResponse) {}
}

但如果您愿意,可以更明确地配置服务/方法名称。以上是一元示例;对于一元运算,结果可以是 T 中的任何一个, Task<T> , ValueTask<T> - 或 void/ Task/ ValueTask (所有映射到 .google.protobuf.Empty ,没有合适输入参数的方法也是如此)。

如果您使用 IAsyncEnumerable<T>,则会自动推断流/双工操作(对于某些 T )用于输入参数(客户端流式传输)、返回类型(服务器流式传输)或两者(双工)。

关于protocol-buffers - 将 ProtoBuf-net 与 gRPC 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126824/

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