张家界市网站建设设计,前端seo优化,南京专业做网站的公司哪家好,安装wordpress登录时的域名是什么最近需要在Nodejs中用到C#的代码,从网上了解到可以采用Edgejs来实现Nodejs与C#的代码交互, 直接复制网上的代码运行总是出各种错,填了不少坑,现在把自己的案例代码大致整理一下,方便以后自己查询。 一、安装Edge.js 运…
最近需要在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
?
?
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需注意的是,采用第三种方式的时候,必须将类名命名成Startup,方法名命名为Invoke, 因为在edge内部中,会默认将typeName定义为Startup,将methodName定义为Invoke 类似如下的定义:,其中,input即为方法的参数,上文的s => inputpublic async Task Invoke(object input){// 方法体return 0;}}} */});
// s为传递方法传递的参数,result为方法返回的结果 StudyMath (s, function (error, result) { if (error) throw error; if (0 == result); // Success else; // Failure });
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