
像 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 调用是契合,甚至版本是否正确。 |