节约接口可以跨多种语言编译。它只是文本文件,为什么没有像swagger这样的在线工具?我不想在使用该界面的项目之间复制粘贴界面
另外,我发现用jar文件打包接口并不有用,因为只有jvm语言可以解析该接口,而且它也不是用户友好的方式。这不仅关系到节俭,也关系到grpc。我没有找到任何与这个问题有关的医生,也找不到任何最佳实践。
发布于 2017-09-06 18:07:35
假设您有一个带有接口的.proto文件,那么每个子项目都需要了解该文件。解决此问题的方法主要有两种:供应商提供文件或复制文件。
供应商文件
在此选项中,您将创建一个添加项目(如git ),该项目存储所有接口定义。每个需要了解接口的项目都将包括一个引用(git子模块或git子树),其中包括接口项目。当您构建项目时,需要对接口进行同步,然后使用它生成必要的代码。
这种方法的缺点是,git子树和子模块(或您使用的任何版本控制)更难使用,并且需要人们进行额外的工作来构建代码。如果对子项目中的接口进行更改,则很难将这些更改应用到接口项目的上游。
复制文件
在此选项中,您在项目之间手动复制文件,并手动保持它们的同步。每次进行更改时,您都希望将该更改应用于依赖于接口的每个其他项目。但是,在使用Protobuf时,需要注意的是,您不必这样做。原型被设计成高度向后兼容。
例如,将原始定义从一种形式更改为另一种形式的代码实际上可以同时使用这两种形式。旧代码将查看旧的表单,新代码可以决定查看旧的还是新的表单。一旦升级了所有用户,就可以删除旧的表单。
这种方法的缺点是,它将复杂性推入代码的解码部分。最后,您需要向后兼容,与数量未知的老客户端。因为并不是每个项目都与接口定义同步,所以界面的所有用户都需要更加灵活。这个问题并不是Proto特有的,而是自然发生的,它发生在每个人身上。
第二个缺点是必须手动复制更改。您必须确保永远不要重复使用字段号或名称。如果您有许多依赖于接口的项目,那么它将为您带来更多的工作。
选择哪一个?
这两种方法在客观上都不是比另一种更好。每一个都将复杂性推入构建的不同部分。据我所见,大多数人更喜欢复制文件,因为它比学习高级git命令更容易。
https://stackoverflow.com/questions/46022952
复制相似问题