背景:
在开发 C/S 程序的时候,使用 ProtoBuf 作为服务端和客户端的通信协议,比如要开发一款软件,包括服务端和客户端,其中服务端仅有 1 个,但是客户端有多种,且客户端为不同的团队开发维护,在组织 proto 的时候,假如按照不同团队使用的 proto 按照文件夹分类,如下所示:
.
├── Administrator
│ └── admin.proto
├── CommonUser
│ └── user.proto
├── OtherUser
│ └── other.proto
└── Msg.proto
其中Msg.proto
为一个大的结构体,在里面区分不同的客户端,如下所示:
message Msg {
int32 ClientType = 1;
optional Administrator admin = 2;
optional CommonUser user = 3;
optional OtherUser other = 4;
}
疑问:
这样组织 proto 文件,服务端需要维护一份完整的 proto ,没有什么问题。
但是每个客户端都能看到完整的 proto 文件,如 CommonUser 也需要看到 Administrator 文件夹下的 proto ,否则用 protoc 生成 cpp 文件的时候会因为缺少 proto 文件无法生成。
请教各位老哥,像上述使用场景,服务端需要面对多个客户端(或者多种角色),不同客户端之间有共用的 proto ,也有各自的 proto ,这种应该怎么组织才合理?
隔离 proto 原因:
因为不同的客户端,他们的接口不一样,涉及到的接口权限不一样,所以不想让不同的客户端团队看到其他人的 proto ,才想着隔离 proto 。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.