典型的grpc组织与protobuf文件

问题描述 投票:1回答:1

我正在使用gRPC在服务和protobuf序列化之间进行通信。我之前没有真正使用过RPC,我想知道原型文件的最佳结构是什么?目前,我在一个产品中包含了以下示例布局中的所有原型文件:

protos/
  identity/
    models/
      Member.proto
    MemberService.proto
  vault/
    models/
      Authentication.proto
      Session.proto
      HttpHeader.proto
    AuthenticationService.proto

我认为我应该将模型与实际服务定义分开,这样我就可以导入单个模型而无需整个服务。

然后,每个服务具有以下布局

synatx "proto3";

import "models/Session.proto"

message GetRequest {
  uint64 member_id;
}

message GetResponse {
  Session session;
}

rpc AuthenticationService {
  get (GetRequest) returns (GetResponse);
}

有没有更规范的方法来做到这一点?我应该将模型“消息”定义包含在与我的服务相同的文件中吗? import "../protos-gen/AuthenticationService.grpc.h使用单个Authentication.proto模型似乎很奇怪。

protocol-buffers rpc grpc
1个回答
1
投票

通常,人们将他们的服务定义放在他们的消息原则旁边。只有当protos变得非常大时,人们才能将它们分解,但即使这种情况也很少见。

构建protos的规范方法是拥有一个高级别的根目录,并通过其绝对路径引用同一目录中的所有protos甚至是兄弟。将服务与消息类型分开的主要原因是生成的代码是否过大。这种情况并不常见。

© www.soinside.com 2019 - 2024. All rights reserved.