跨语言调用和编程

一、前言

开发环境

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.生成对应文件


注意nodejs的写法

3.服务端编写

将生成的gen-py文件放入python项目中

新建server.py文件 具体实现三个矩阵运算函数


multiArray函数的编写


服务端连接部分代码

4.客户端编写

C#连接部分以及函数调用输出结果等
nodejs连接部分以及函数调用输出结果等

四、问题回答


跨语言开发的优点:可以利用每一种语言的优点,取长补短;只用在一种语言环境下实现功能,在其他语言环境下可以直接调用函数,得到结果,非常便捷。

跨语言开发的缺点:不同的语言对一些问题的约束和限制可能不同,可能出现问题,排查困难。在实验的过程中,我的体会是,如果接口要更改,或者是数据类型发生更改,都要重新生成文件,增加了工作量。而且不同语言对于timeout的设置不同,解决的过程较困难。

操作系统层面的多语言协同开发:STDIO和管道技术使数据接口标准化,做到与具体语言无关,搭建成一个公共的信息交互平台,各语言的应用程序以一种星型网络的拓扑结构与操作系统相连。

在网络层面上的合作:都以服务的模式进行数据交流

利用面向构件的多语言协同开发装置,方法与系统

你可能感兴趣的:(跨语言调用和编程)