场景 1
在测试嵌入式设备时,嵌入式设备提供的 SDK API 是使用 C 开发的,但是测试用例是使用 Python 开发的,那么我们怎样测试这个设备呢?对于这种情况,我们可能会根据提供的 SDK API 使用 C 来写一个测试程序,然后使用 Python 把这个程序启动起来。
场景 2
某个团队使用 Java 开发了一个非常好用的工具,但是编程语言使用了 Python,那么我们怎样使用这个工具呢?我们可能希望这个团队的程序是一个标准的命令行界面,这样就可以通过 Python 执行一个系统的 terminal 进程,从而来执行这个 Java 程序。
两个场景的共同点
在不同的编程语言之间进行通信,这其实很好理解,但在实际的操作过程中,这种通信协议会被定义得很含糊。比如在场景1中,这个测试脚本可能就是测试工程师随便命名后,就在 Python 里面通过串行口直接调用了,而其他人并不知道这个测试用例名字的含义。
解决方案
我们遇到上述的两种情况,需要定义跨编程语言模块之间的通信接口。比如在场景1中,我们可以用 C 写一个适配层,让 Python 可以通过命令行来调用嵌入设备上的 API,而在场景2中,我们可以在 Java 工具上封装一个SOAP 或 RPC,甚至是 RESTful API 的通信模块,再让 Python 去调用。