和别人交流时了解到了一种做法:他们使用 grpc 来约束服务之间互相调用的接口,protocol 文件单独写在一个 git 仓库里,其它的项目都引用这个项目作为子模块,编译后生成对应语言的调用接口和数据结构。这样接口定义就能同时约束客户端和服务器,因为是强类型约束,一旦接口数据结构变动就会通过 protocol 文件让客户端和服务器都感知到。
这个“能够跨语言让客户端和服务器之间的数据交互被强约束”思路我个人是很认同的,平时开发时也经常遭遇服务端改了数据却忘记通知客户端的问题。
但是我进一步观察后认为为了用 protocol 文件,而上 grpc 是不值得,grpc 的联调非常麻烦远不如 rest api,我明明只是想用数据强约束,但是 grpc 并非是我必须的。本质上我们互相传来传去的也不过是一段 json 而已。
那么有更好的办法能实现这种服务端和客户端之间互相能够感知到改变的数据接口强约束吗? json 就没有解决方案吗?另外 GraphQL 就不要谈了,这东西的成本比 grpc 还高,中小型公司你还能看到 GRPC,GraphQL 我只在大公司就认搞过。目前还是希望能够继续得到 REST API 使用和调试的遍历性
这个“能够跨语言让客户端和服务器之间的数据交互被强约束”思路我个人是很认同的,平时开发时也经常遭遇服务端改了数据却忘记通知客户端的问题。
但是我进一步观察后认为为了用 protocol 文件,而上 grpc 是不值得,grpc 的联调非常麻烦远不如 rest api,我明明只是想用数据强约束,但是 grpc 并非是我必须的。本质上我们互相传来传去的也不过是一段 json 而已。
那么有更好的办法能实现这种服务端和客户端之间互相能够感知到改变的数据接口强约束吗? json 就没有解决方案吗?另外 GraphQL 就不要谈了,这东西的成本比 grpc 还高,中小型公司你还能看到 GRPC,GraphQL 我只在大公司就认搞过。目前还是希望能够继续得到 REST API 使用和调试的遍历性