NODEJS 与异构系统数据交互主要是两种方式:
1、直接调用DLL 实现数据交互
可通过FFI 方式实现。
优点是:安装好ffi后可快速兼容原有业务
缺点:配置ffi编译环境复杂,对DLL 的编写方式有一定要求,
不规范的DLL 可能导致NODE执行异常
64位的NODE 跟 32位 DLL 的兼容性问题。
DLL 如果有结构体等复杂参数 不好对应 FFI 中使用。
2\通过child_process 方式调用EXE进程来实现数据交互。
var
cp
=
require
(
'
child_process
'
)
;
//同步的方式
//同步的方式
let
out
=
cp
.
execFileSync
(
"
testdll.exe
"
,
["arg1"
,"arg2"]
,
{}
)
;
//异步的方式
//异步的方式
cp.execFile("testdll.exe", [
"arg1"
,"arg2"], {}, (error, stdout, stderr) => {
console.log(stdout);
})
console.log(stdout);
})
这种方式NODE 会接管stdout 和 stderr ,exe中把结果通过 printf 输出。
缺点:需要先生成EXE,EXE 中调用 DLL 并且返回结果。
优点:不需要配置 FFI,不受DLL 的影响