在Nodejs中如何调用C#的代码
最近需要在Nodejs中用到C#的代码,从网上了解到可以采用Edgejs来实现Nodejs与C#的代码交互,
直接复制网上的代码运行总是出各种错,填了不少坑,现在把自己的案例代码大致整理一下,方便以后自己查询。
一、安装Edge.js
运行命令行(CMD),进入当前项目的目录,执行命令“npm install edge”进行安装。(这里也可以选择全局安装,具体操作就不说了)
二、调用Edge.js
在用Edge.js和C#代码交互的时候,有三种方式:
1. 第一种方式是将c#的代码封装成dll,然后在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<object>,其中,input即为方法的参数,上文的s => input
public async Task<object> StudyMath(object input)
{
// 方法体
return ;
}
}
}
代码示例如下:
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
});
代码示例如下:
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<object>,其中,input即为方法的参数,上文的s => input
public async Task<object> 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
在Nodejs中如何调用C#的代码的更多相关文章
- PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网>看引擎>开源产品 0人收藏此文章, 发表于8小时前(2013-09-06 00:39) ...
- 新西达电调初始化代码,使用nodejs ffi技术调用wiringpi,代码使用typescript编写
这是我设计的F450四轴飞行器飞控代码的一部分 运行在orangepi-zero上,操作系统是armbian,思路是使用node-ffi调用wiringpi的so库与GPIO通信,然后控制端逻辑代码使 ...
- java中方法调用
JAVA中方法的调用[基础] 一.调用本类中的方法 方法一.被调用方法声明为static ,可以在其他方法中直接调用.示例代码如下: public class HelloWord { /** * @p ...
- FreeSWITCH IVR中lua调用并执行nodejs代码
一.功能需求: 通过FreeSWITCH的IVR按键调用相应的脚本文件:nodejs提供很多的模组,可以方便的与其它系统或者进行任何形式的通讯,我的应用是通过nodejs发送http post请求: ...
- C代码中如何调用C++ C++中如何调用C
注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反. 集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译 ...
- 在Java中直接调用js代码(转载)
http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...
- 在Java中直接调用js代码
JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...
- c代码中调用c++,c++代码中调用c代码
注意这里的c调用c++或者c++调用c的意思是.c文件中调用.cpp文件中的代码,或者相反 集成开发环境如vc++6.0或者vs都是通过文件后缀来区别当前要编译的是C代码还是C++代码,然后采用相应的 ...
- 如何在python中调用C语言代码
1.使用C扩展CPython还为开发者实现了一个有趣的特性,使用Python可以轻松调用C代码 开发者有三种方法可以在自己的Python代码中来调用C编写的函数-ctypes,SWIG,Python/ ...
随机推荐
- Puzzle 面向服务/切面(AOP/IOC)开发框架 For .Net
Puzzle 面向服务/切面AOP开发框架 For .Net AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效 ...
- javascript 基础
javascript概述: javascript历史: * 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEas ...
- [信安Presentation]一种基于GPU并行计算的MD5密码解密方法
-------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...
- windows下python的web环境搭建使用(观看Backbone的教程有感)
pip安装a 下载 get-pip.py (https://pip.pypa.io/en/latest/installing/#python-os-support b python get-pip.p ...
- Ajax基础
1 概要 异步JavaScript和XML(Asynchronous Javascript And XML,Ajax)就是使用js来收发来自web服务器的数据,且无需重载整个页面的技术. 注 :xml ...
- 四、基于hadoop的nginx访问日志分析---top 10 request
代码: # cat top_10_request.py #!/usr/bin/env python # coding=utf-8 from mrjob.job import MRJob from mr ...
- js键盘事件和焦点事件
键盘事件onkeydown //当键盘按下的时候触发onkeyup //但键盘抬起的时候触发event.keyCode //数字类型 键盘按键的键值功能键 ctrlkey shiftkey altke ...
- java在线支付
http://blog.csdn.net/lidew521/article/category/1437251
- zabbix安装
在服务器10.128.17.136上安装 1.安装mysql \# yum -y install mysql mysql-server mysql-devel MySQL 配置文件/etc/my.cn ...
- 耗电—Android
Android应用耗电分析与优化 http://sanwen8.cn/p/297Ut7b.html http://www.cnblogs.com/kobe8/p/3819305.html 有效控制An ...