像 python 这种语言,可以开 repl ( language shell )来调用对端的 rpc 接口(这里不包括 http 接口)看返回的值是否正确。但是像 go 这种编译型语言该怎么做呢?部署的时候 go 的程序只是一个二进制文件,跑在容器中,也没有 go 的环境和源码(把 go 环境放到容器中浪费,生产环境一定不会这么做)
编译型语言应该都有这样的问题吧,想请教一下各位大佬都是怎么做的。
1
exch4nge 2018-03-30 07:33:06 +08:00
??? 不管哪个语言不得写调用 rpc 接口的代码吗? 区别是
( repl 里)写代码 --> 看结果 --> 不对就调整代码 --> 看结果 ... go 语言 写代码 --> 编译 --> 执行 --> 看结果 --> 不对就调整代码 --> 编译 --> 执行 --> 看结果 ... |
2
goofool 2018-03-30 08:29:36 +08:00 via Android
成熟的框架都有不同语言的实现,用 go 写,python 测就行了呗
|
3
BBCCBB 2018-03-30 09:15:37 +08:00
契约测试? 没实践过....
|
4
Immortal 2018-03-30 09:45:08 +08:00
写个对应协议的客户端来测试不就好了,服务端有封包解包的代码了,客户端直接拿来就能用。
顺路问下“把 go 环境放到容器中浪费,生产环境一定不会这么做”这个是怎么考虑的。。你这样把一堆微服务全给打死了 |
5
wangwangleilei OP @Immortal 线上发布的是可执行程序,要 go 的环境做什么
|
6
Immortal 2018-03-30 11:04:44 +08:00
@wangwangleilei 额 是我看错了 我以为你的意思是“ go 程序不需要放在容器中”,抱歉
|
7
zhangysh1995 2018-03-30 12:40:03 +08:00
emmm Java 不是编译行的吗? RMI 好好的。。
|
8
noli 2018-03-30 14:45:41 +08:00
跟是不是编译型语言没有关系,跟有没有 API 元信息有关系。
譬如 C#,CIL 里面自带任何函数、任何类的元信息,并且可以串行化,就可以验证 RPC 调用是契合,甚至版本是否正确。 |