但是我不明白 gRPC-go 为什么要用 Go 重写一遍实现. 直接用 gRPC 不好吗? 这不是重复劳动吗?
no1xsyzy
2021-06-12 00:46:27 +08:00
@chaleaoch 重复造轮子是程序员常态 http://paulgraham.com/own.html ... It's easy for something new to feel like a project of your own. That's one of the reasons for the tendency programmers have to rewrite things that don't need rewriting, and to write their own versions of things that already exist. ...
第二个问题:protoc 项目支持(proto->C/C++/OC/C#/Py/Ruby/java),protobuf-gen-go 项目支持(proto->go),项目本身用啥语言跟支持输出啥代码没有必然联系,你要愿意的话在 protoc 上扩充一下实现输出 go 也是有可能的。
chinvo
2021-06-12 04:13:01 +08:00
protobuf .net 就不需要写 proto 文件, 可以直接定义 class 和 interface. 但是如果你要和其他语言通信, 你还是得用 proto 文件.
wellsc
2021-06-12 05:46:00 +08:00
花里胡哨的,json +http 他不香吗
suantong
2021-06-12 06:10:46 +08:00
来源于游戏
Leigg
2021-06-12 08:59:33 +08:00
因为是跨语言通讯数据格式,需要媒介连接,.proto 文件就是媒介
horsley
2021-06-12 09:46:25 +08:00
@chaleaoch 关键点在于你说的 直接用“grpc”,是说用 C++版本,而 Go 里面虽然是可以用 C++的库,但是会在编译上增加麻烦,并且影响构建二进制的平台兼容性。因此 Go 的习惯里面我们希望能用纯 Go 就纯 Go,系统库也是这么干的,例如说加解密相关的,很多程序都会依赖 openssl,而 Go 则不依赖 openssl 自行实现了