一、前言
开发环境
1、操作系统: Windows 10 X64
2、IntelliJ IDEA Community Edition 2020.2.2 x64
3.VS+nodejs
4.thrift 0.10.1
二、实验探索过程
1.thrift的安装与使用
Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码生成引擎联合了一个软件栈,来创建不同程度的、无缝的跨平台高效服务
2.python->c#简单项目尝试
由于对thrift不熟悉,所以选择了一个简单发送消息的功能进行首次尝试,成功。
注意要安装thrift插件。
参考链接:https://www.cnblogs.com/runningsmallguo/p/9226079.html
3.python->nodejs简单项目尝试
首先安装配置nodejs
但是在尝试中,发现找不到thrift,经过查找资料,发现要确认thrift的安装路径是否包括在module paths中,可以通过设置系统变量或者引用时填写绝对路径来解决。
其次,有超时问题,未定义的connect_timeout,根据报错提示,修改D:\software\nodejs\node_global\node_modules\thrift\lib\nodejs\lib\thrift connect.js里的connection的超时设置。
除此以外,如果遇到中文字符显示不正常,可以将项目文件转存为utf8格式,即可正常显示
至此,解决一系列问题后,python->nodejs的简单项目尝试也成功完成
三、正式实验
由于对nodejs语言不太熟悉,考虑到矩阵的特殊性,选择采用list来存储,并给出行列数。
1.编写exper.thrift文件
2.生成对应文件
3.服务端编写
将生成的gen-py文件放入python项目中
新建server.py文件 具体实现三个矩阵运算函数
4.客户端编写
四、问题回答
跨语言开发的优点:可以利用每一种语言的优点,取长补短;只用在一种语言环境下实现功能,在其他语言环境下可以直接调用函数,得到结果,非常便捷。
跨语言开发的缺点:不同的语言对一些问题的约束和限制可能不同,可能出现问题,排查困难。在实验的过程中,我的体会是,如果接口要更改,或者是数据类型发生更改,都要重新生成文件,增加了工作量。而且不同语言对于timeout的设置不同,解决的过程较困难。
操作系统层面的多语言协同开发:STDIO和管道技术使数据接口标准化,做到与具体语言无关,搭建成一个公共的信息交互平台,各语言的应用程序以一种星型网络的拓扑结构与操作系统相连。
在网络层面上的合作:都以服务的模式进行数据交流
利用面向构件的多语言协同开发装置,方法与系统