Node 调用 C#文件

来源:互联网 发布:计算机算法设计难么 编辑:程序博客网 时间:2024/05/22 08:17

最近在做软件报备的功能,后台使用node进行开发。

问题

在开发的过程中需要获取到软件的版本信息以及名称,但是node获取文件信息的方法fs.stats方法 并不能够满足需求。 我们需要获取到下图的内容

这里写图片描述

产品的版本以及产品的名称。 但是C#是有相应的api能够获取到的。

解决

找了对应的开发写了个dll,专门来获取文件的信息。代码如下:

这里写图片描述

代码内容很简单就是返回一个对象,里面有文件的名称以及版本号。这里用了.net 的新特性 task,async, 至于为什么要封装成Func

Edge是什么

Edge是一种在进程内实现NodeJS与.NET互操作的桥接技术,可以在NodeJS里使用.NET代码和库,也可以在.NET程序里使用NodeJS的代码。

这里写图片描述
Edge运行需要.netframework4.5,它使用.NET的Task、async、await机制跟NodeJS的event模型匹配。本质上是连接V8引擎和.NET /monoCLR运行时,同时支持Windows、MacOS、Linux。同时它还支持运行于.NET CLR上的各种脚本语言。借由这种进程内的桥接技术,两边的各种类库和其他技术就可以互通有无了,例如NodeJS使用.NET的图像处理库GDI+、直接用ADO.NET操作SQLServer数据库,甚至直接调用Winform的代码实现桌面UI程序等等。

这里写图片描述

概念介绍了一堆 其实我们还是看下如何使用吧。

var objDLL = edge.func({    assemblyFile: './libs/FileInfo.dll',//C#文件路径    typeName: 'FileInfo.FileInfoTask',//命名空间+类名    methodName: 'GetFileInfo'//方法名});var fileInfo = objDLL(path.resolve('./public/attachments/' + req.query.fileName), true);

以上就能够解决我们的问题了。