从了解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动态链接库的更多相关文章

  1. node.js怎么配置访问本地的html文件?

    node.js怎么配置访问本地的html文件? https://segmentfault.com/q/1010000000251204

  2. Playing audio from Node.js using Edge.js

    http://tomasz.janczuk.org/2014/06/playing-audio-from-nodejs-using-edgejs.html

  3. Edge.js:让.NET和Node.js代码比翼齐飞

    通过Edge.js项目,你可以在一个进程中同时运行Node.js和.NET代码.在本文中,我将会论述这个项目背后的动机,并描述Edge.js提供的基本机制.随后将探讨一些Edge.js应用场景,它在这 ...

  4. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问

    上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别” ...

  5. 1.从Node.js链接到MongoDB

    MongoDB采用了MongoDB Node.js驱动程序作为标准. 1.安装MongoDB驱动 npm install mongoDB npm install mongoose require('m ...

  6. Node.js的线程和进程

    http://www.admin10000.com/document/4196.html 前言 很多Node.js初学者都会有这样的疑惑,Node.js到底是单线程的还是多线程的?通过本章的学习,能够 ...

  7. Node.js笔记3

    ###Node.js核心模块 1. 全局对象 Node.js中能够访问到的都是global的属性 **process它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口.** ...

  8. 使用 Node.js 搭建一个 API 网关

    原文地址:Building an API Gateway using Node.js 外部客户端访问微服务架构中的服务时,服务端会对认证和传输有一些常见的要求.API 网关提供共享层来处理服务协议之间 ...

  9. Node.js调用C#代码

    在Node.js的项目中假如我们想去调用已经用C#写的dll库该怎么办呢?在这种情况下Edge.js是一个不错的选择,Edge.js是一款在GitHub上开源的技术,它允许Node.js和.NET c ...

随机推荐

  1. Java设计模式-建造者(Builder)模式

    目录 由来 使用 1. 定义抽象 Builder 2. 定义具体 Builder类 3. 定义具体 Director类 4. 测试 定义 文字定义 结构图 优点 举例 @ 最近在看Mybatis的源码 ...

  2. 通过Mysql连接ASP.Net Core2.0(Code First模式)

    ASP.NET Core2.0连接Mysql,首先新建项目 选择Web应用程序 选择需要身份验证: 通过Nuget安装Mysql驱动,这里推荐>Pomelo.EntityFrameworkCor ...

  3. 用 IIS 搭建 mercurial server

    mercurial server 对于代码管理工具,更多的人可能对 Git 更熟悉一些(Git太火了).其实另外一款分布式代码管理工具也被广泛的使用,它就是 mercurial.当多人协作时最好能够通 ...

  4. [算法总结] 6 道题搞定 BAT 面试——堆栈和队列

    本文首发于我的个人博客:尾尾部落 0. 基础概念 栈:后进先出(LIFO) 队列:先进先出(FIFO) 1. 栈的 java 实现 import java.util.Arrays; public cl ...

  5. 镜像仓库管理:与Portus不得不说的那些事

    背景: 目前在做一个云计算相关的项目,其中有这样一个需求:每个平台用户都有自己的docker镜像仓库(docker registry),用户可以对自己的镜像仓库的push/pull权限进行管理,也就是 ...

  6. 用 C 语言描述几种排序算法

    排序算法是最基本且重要的一类算法,本文基于 VS2017,使用 C 语言来实现一些基本的排序算法. 一.选择排序 选择排序,先找到数组中最小的元素,然后将这个元素与数组的第一个元素位置互换(如果第一个 ...

  7. mui框架(二)

    1.底部导航切换界面 HTML部分: <nav class="mui-bar mui-bar-tab"> <a id="defaultTab" ...

  8. 【Alpha】第五次Scrum meeting

    今日重大事件一览: 姓名 今日完成任务 所耗时间 刘乾 今日没有完成那个Issue..TuT第一次这么努力工作的我没有完成任务...真的是任务太坑啦. 任务完成了 60% Issue链接:https: ...

  9. VS2013 单元测试

    1.打开VS2013 --> 新建一个项目.这里创建一个c#控制台项目.取名为ccj_test1 2.进入控制台项目ccj_test1的Program类,创建一个add静态方法,并将progra ...

  10. PAT 甲级 1057 Stack

    https://pintia.cn/problem-sets/994805342720868352/problems/994805417945710592 Stack is one of the mo ...