博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Nodejs中如何调用C#的代码
阅读量:5124 次
发布时间:2019-06-13

本文共 2284 字,大约阅读时间需要 7 分钟。

最近需要在Nodejs中用到C#的代码,从网上了解到可以采用Edgejs来实现Nodejs与C#的代码交互,

直接复制网上的代码运行总是出各种错,填了不少坑,现在把自己的案例代码大致整理一下,方便以后自己查询。

 

一、安装Edge.js

运行命令行(CMD),进入当前项目的目录,执行命令“npm install edge”进行安装。(这里也可以选择全局安装,具体操作就不说了)

 

二、调用Edge.js

在用Edge.js和C#代码交互的时候,有三种方式:

1. 第一种方式是将c#的代码封装成dll,然后在nodejs里面调用

代码示例如下:

Nodejs:
// 引入Edge模块var edge = require('./node_modules/edge');// 定义方法var StudyMath = edge.func({
assemblyFile: '../../_lib/Rocky.dll', // assemblyFile为dll路径 atypeName: 'RockyNamespace.Study', // RockyNamespace为命名空间,Study为类名 methodName: 'StudyMath' // StudyMath为方法名});// s为传递方法传递的参数,result为方法返回的结果StudyMath (s, function (error, result) {if (error) throw error;if (0 == result) ; // Successelse ; // Failure});

 

C#:

namespace RockyNamespace{  public class Study  {    // C#中,方法必须用async异步修饰,且返回值必须为Task,其中,input即为方法的参数,上文的s => input    public async Task StudyMath(object input)    {      // 方法体      return 0;    }  }}

 

 

2. 第二种方式是将c#的代码用async处理后直接在nodejs中书写:

代码示例如下:

Nodejs:
var edge = require('./node_modules/edge');var StudyMath = edge.func(function () {
/* //using System.Reflection; using System.Collections.Generic; async (input) => { // 方法体 return 0; }*/}); // s为传递方法传递的参数,result为方法返回的结果StudyMath (s, function (error, result) { if (error) throw error; if (0 == result) ; // Success else ; // Failure});

 

3. 第三种方式是第一种和第二种的结合

代码示例如下:

Nodejs:

var edge = require('./node_modules/edge');var StudyMath = edge.func(function () {
/* using System.Collections.Generic; using System.Threading.Tasks; namespace RockyNamespace { public class Startup { // C#中,方法必须用async异步修饰,且返回值必须为Task,其中,input即为方法的参数,上文的s => input public async Task Invoke(object input) { // 方法体 return 0; } } }*/}); // s为传递方法传递的参数,result为方法返回的结果StudyMath (s, function (error, result) { if (error) throw error; if (0 == result) ; // Success else ; // Failure});
 
需注意的是,采用第三种方式的时候,必须将类名命名成Startup,方法名命名为Invoke,
因为在edge内部中,会默认将typeName定义为Startup,将methodName定义为Invoke
类似如下的定义:
var func= edge.func({  typeName: 'Startup',  methodName: 'Invoke'});

 

Edgejs官网:

http://tjanczuk.github.io/edge/#/

 

这里推荐一篇写的比较详细的文章:

http://blog.csdn.net/kimmking/article/details/42708049

转载于:https://www.cnblogs.com/zhengjiafa/p/6196985.html

你可能感兴趣的文章
ubuntu下修改mysql编码,使能支持中文
查看>>
JS 判断滚动底部并加载更多效果。。。。。。。。。
查看>>
nohup 详解
查看>>
PHP内存管理机制与垃圾回收机制
查看>>
JCE安装使用报错
查看>>
gulp使用
查看>>
EF+postgresql中的一些问题
查看>>
通过字符串引入模块下的属性
查看>>
Dynamic View and Drop Down Menu
查看>>
十六进制字符串转整形
查看>>
perl语言之列表与数组
查看>>
bzoj1094[ZJOI2007]粒子运动 计算几何
查看>>
SCRUM 12.03
查看>>
js里的面向对象分析-(创建实例化对象)
查看>>
重定向IO
查看>>
LoadRunner函数
查看>>
6.mysql 锁机制
查看>>
洛谷 - P2181 - 对角线 - 打表 - 组合数学
查看>>
node转发请求 .csv格式文件下载 中文乱码问题 + 文件上传笔记
查看>>
Python CODE——Nonblocking I/O client AND Delaying Server
查看>>