Java 在哪里存储thrift或grpc接口?

Java 在哪里存储thrift或grpc接口?,java,rpc,thrift,grpc,Java,Rpc,Thrift,Grpc,thrift接口可以跨多种语言编译。只是文本文件,为什么没有像swagger hub这样的在线工具?我不想在使用该接口的项目之间复制粘贴接口 另外,我发现用jar文件打包接口并没有什么用处,因为只有jvm语言才能解析该接口,而且这不是一种用户友好的方式。这不仅关乎节俭,也关乎grpc。我没有找到任何与此问题相关的文档,也找不到任何最佳实践假设您有一个带有接口的.proto文件,则每个子项目都需要了解该文件。解决此问题有两种主要方法:提供文件或复制文件 提供文件 在这个选项中,您可以创建一个附加项

thrift接口可以跨多种语言编译。只是文本文件,为什么没有像swagger hub这样的在线工具?我不想在使用该接口的项目之间复制粘贴接口


另外,我发现用jar文件打包接口并没有什么用处,因为只有jvm语言才能解析该接口,而且这不是一种用户友好的方式。这不仅关乎节俭,也关乎grpc。我没有找到任何与此问题相关的文档,也找不到任何最佳实践

假设您有一个带有接口的.proto文件,则每个子项目都需要了解该文件。解决此问题有两种主要方法:提供文件或复制文件

提供文件 在这个选项中,您可以创建一个附加项目(如git repo),它存储所有接口定义。每个需要了解接口的项目都将包括一个包含接口项目的引用(git子模块或git子树)。构建项目时,需要同步接口,然后使用接口生成必要的代码

这种方法的缺点是git子树和子模块(或您使用的任何版本控制)更难使用,并且需要构建代码的人员进行额外的工作。如果对子项目中的接口进行更改,则很难将这些更改应用回接口项目的上游

复制文件 在该选项中,可以在项目之间手动复制文件,并手动保持同步。每次进行更改时,您都希望将该更改应用于依赖于该接口的每个其他项目。但在使用Protobuf时,需要注意的是,您不必这样做。Protos设计为高度向后兼容

例如,将原型定义从一种形式更改为另一种形式的代码实际上可以同时使用这两种形式。旧代码将查看旧表单,而新代码可以决定查看旧表单还是新表单。升级所有用户后,可以删除旧表单

这种方法的缺点是,它将复杂性推到代码的解码部分。您最终需要向后兼容,与未知数量的旧客户端兼容。由于并非每个项目都与接口定义同步,因此接口的所有用户都需要更加灵活。这个问题不是Proto特有的,而是自然发生的;每个人都会这样

第二个缺点是必须手动复制更改。您必须确保永远不要重复使用字段号或名称。如果您有很多依赖于接口的项目,那么它会为您带来更多的工作

选择哪一个?
这两种方法在客观上都不比另一种好。每一个都将复杂性推送到构建的不同部分。据我所见,大多数人喜欢复制文件,因为它比学习高级git命令更容易。

Github?例如,ProtoBuf文件。。。您所说的gRPC接口是什么意思?协议定义文件?@uıɥɔɯ,是的,完全正确。目前,我将它们存储在与implementation@cricket_007,可能是个好主意,谢谢,你还有其他想法吗?“为什么没有像swagger hub这样的在线工具?”——因为到目前为止,还没有人觉得需要它。那么这意味着什么呢?