node.js通过edge访问.net动态链接库
从了解node.js到现在经历了几个月时间,一直忙于实际的项目,没有动手写点关于node.js的代码。最近将开发工作安排就绪,个人的时间相对从容了,所以这几天开始测试一下node.js。
多年来,一直在微软的平台下开发,大量代码都是采用C#编写,从系统平台,到一个个的开发工具,基本上都是基于C#的,因此,如果采用node.js开发新的业务系统,我不得不最大限度地重用以前的基于c#的功能模块,在网上搜索了一下,知道有个叫edge.js的组件,可以方便的调用.net模块,一段时间的试验之后,调用通过了,先将代码贴出来:
操作系统:windows 8.1
通过C#创建一个DLL,名字为some.dll,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Some
{
public class Startup
{
public async Task<Object> Invoke(object input)
{
return Helper.SayHi("Invoke1:" + (string)input);
} public async Task<Object> Invoke2(object input)
{
return Helper.SayHi("Invoke2:" + (string)input);
} static class Helper
{
public static string SayHi(string param)
{
return ".NET Welcomes " + param;
}
}
}
}
node代码(abc.js)代码如下:
var i=1;
console.info(i);
console.log("Hello edge");
console.log("Hello Node JS"); var edge = require('edge');
console.info("call c#")
var helloWorld = edge.func('async (input) => { return ".NET Welcomes " + input.ToString(); }');
helloWorld("Node.js", function (err, result)
{
if (err) throw err;
console.log(result);
}); var invoke1=edge.func({
assemblyFile:"Some.Dll",
typeName:"Some.Startup",
methodName: "Invoke"
}) invoke1("Call .net method from DLL",function(err,result)
{
if (err) throw err;
console.log(result);
}); var invoke2=edge.func({
assemblyFile:"Some.Dll",
typeName:"Some.Startup",
methodName: "Invoke2"
}) invoke2("Call .net method from DLL",function(err,result)
{
if (err) throw err;
console.log(result);
});
注意,将some.dll和abc.js放在同一个目录下,然后,在命令窗口下运行node app.js即可显示如下结果:

关于npm安装edge.js,网上资源很多
node.js通过edge访问.net动态链接库的更多相关文章
- node.js怎么配置访问本地的html文件?
node.js怎么配置访问本地的html文件? https://segmentfault.com/q/1010000000251204
- Playing audio from Node.js using Edge.js
http://tomasz.janczuk.org/2014/06/playing-audio-from-nodejs-using-edgejs.html
- Edge.js:让.NET和Node.js代码比翼齐飞
通过Edge.js项目,你可以在一个进程中同时运行Node.js和.NET代码.在本文中,我将会论述这个项目背后的动机,并描述Edge.js提供的基本机制.随后将探讨一些Edge.js应用场景,它在这 ...
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问
上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别” ...
- 1.从Node.js链接到MongoDB
MongoDB采用了MongoDB Node.js驱动程序作为标准. 1.安装MongoDB驱动 npm install mongoDB npm install mongoose require('m ...
- Node.js的线程和进程
http://www.admin10000.com/document/4196.html 前言 很多Node.js初学者都会有这样的疑惑,Node.js到底是单线程的还是多线程的?通过本章的学习,能够 ...
- Node.js笔记3
###Node.js核心模块 1. 全局对象 Node.js中能够访问到的都是global的属性 **process它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口.** ...
- 使用 Node.js 搭建一个 API 网关
原文地址:Building an API Gateway using Node.js 外部客户端访问微服务架构中的服务时,服务端会对认证和传输有一些常见的要求.API 网关提供共享层来处理服务协议之间 ...
- Node.js调用C#代码
在Node.js的项目中假如我们想去调用已经用C#写的dll库该怎么办呢?在这种情况下Edge.js是一个不错的选择,Edge.js是一款在GitHub上开源的技术,它允许Node.js和.NET c ...
随机推荐
- 使用VS2013和git进行代码管理
git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...
- wkhtmltopdf 参数介绍
wkhtmltopdf [OPTIONS]... <input file> [More input files] <output file> 常规选项 --allow &l ...
- Flutter - 创建底部导航栏
之前写过的一篇文章介绍了 Flutter - 创建横跨所有页面的侧滑菜单, 这次就一起来学习一下底部导航栏. 底部导航栏在ios平台上非常常见,app store就是这样的风格.还有就是大家最常用的微 ...
- setBit testBit权限管理
1.jdk7文档解释 public boolean testBit(int n) Returns true if and only if the designated bit is set. (Com ...
- jenkins+maven+svn+npm自动发布部署实践
一.系统版本centos7.6 二.根据jenkins官方安装方法yum安装jenkins 1.进入jenkins官网下载页面https://jenkins.io/download/,选择Red Ha ...
- 机器学习英雄访谈录之 Kaggle Kernels 专家:Aakash Nain
目录 机器学习英雄访谈录之 Kaggle Kernels 专家:Aakash Nain 正文 对我的启发 机器学习英雄访谈录之 Kaggle Kernels 专家:Aakash Nain Sanyam ...
- 团队项目M1展示成绩和Week 10分数
根据M1项目评审的分数,分档打分得到的M1项目成绩.
- Notes of Daily Scrum Meeting(12.19)
今天工作进展的速度别昨天稍有提高,希望大家再接再厉!加油! 团队任务总结如下: 团队成员 今日团队工作 陈少杰 重新尝试使用get等方法进行网络连接的调试 王迪 调试搜索功能中测出的问题 金鑫 测试已 ...
- Android的环境搭建
尽管以前并没有接触过软件开发.但是,现在网络资源实在是太丰富了.所以网搜了一下,认为Android的环境搭建可分为以下五个步骤来完成.第一步:安装JDK:第二步:配置Windows上JDK的变量环境: ...
- RYU 的选择以及安装
RYU 的选择以及安装 由于近期的项目需求,不得已得了解一下控制器内部发现拓扑原理,由于某某应用中的控制器介绍中使用的RYU,所以打算把RYU装一下试试.出乎意料的是,RYU竟是我之前装过最最轻便的控 ...