gpt4 book ai didi

java - 在哪里存储 thrift 或 grpc 接口(interface)?

转载 作者:行者123 更新时间:2023-12-02 12:17:52 25 4
gpt4 key购买 nike

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

而且我觉得用 jar 文件打包接口(interface)没有什么用处,因为只有 jvm 语言可以解析该接口(interface),而且这不是用户友好的方式。这不仅关乎节俭,也关乎gpc。我没有找到任何与这个问题相关的文档,也找不到任何最佳实践

最佳答案

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

供应商文件

在此选项中,您可以创建一个附加项目(如 git 存储库)来存储所有接口(interface)定义。每个需要了解接口(interface)的项目都会包含一个引用(git 子模块或 git 子树),其中包含接口(interface)项目。当您构建项目时,需要同步接口(interface),然后用于生成必要的代码。

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

复制文件

在此选项中,您可以在项目之间手动复制文件,并手动保持它们同步。每次进行更改时,您都会希望将该更改应用到依赖于该界面的所有其他项目。不过,在使用 Protobuf 时,请务必注意,您不必这样做。 Protos 被设计为高度向后兼容。

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

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

第二个缺点是必须手动复制更改。您必须确保永远不要重复使用字段编号或名称。如果您有很多依赖于该接口(interface)的项目,那么您的工作量就更大了。

选择哪个?

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

关于java - 在哪里存储 thrift 或 grpc 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022952/

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