从了解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. Error:Could not find common.jar (android.arch.core:common:1.0.0)

    Error:Could not find common.jar (android.arch.core:common:1.0.0). Searched in the following location ...

  2. Js_判断浏览器

    var isIE=!!window.ActiveXObject;var isIE6=isIE&&!window.XMLHttpRequest;var isIE8=isIE&&a ...

  3. Jq_Js_Js、Jq获取浏览器和屏幕各种高度宽度

    $(document).ready(function()         {alert($(window).height()); //浏览器当前窗口可视区域高度alert($(document).he ...

  4. 基于神念TGAM的脑波小车(1)

    作者声明:此博客是作者的毕设心得,拿来分享. 拿到模块,在网上查了一圈,发现基本没什么有用的资料,有也是一些废话,经过我几个月的攻克,现在已初步搞定,分享给大家. 废话不多说,直接步入正题. 这是通过 ...

  5. 第十七次ScrumMeeting博客

    第十七次ScrumMeeting博客 本次会议于12月7日(四)22时整在3公寓725房间召开,持续20分钟. 与会人员:刘畅.辛德泰.张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的内容和 ...

  6. Linux 第三周 学习笔记和实验

    姬梦馨 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 常用调试参数 r(run) 开始运行程 ...

  7. ElasticSearch 2 (17) - 深入搜索系列之部分匹配

    ElasticSearch 2 (17) - 深入搜索系列之部分匹配 摘要 到目前为止,我们介绍的所有查询都是基于完整术语的,为了匹配,最小的单元为单个术语,我们只能查找反向索引中存在的术语. 但是, ...

  8. Python模块-pandas

    目录 数据读取 数据探索 数据清洗 数据清洗 类型转换 缺失值 重复值 值替换 修改表结构 新增列 删除列 删除行 修改列名 数据分组(数值变量) 数据分列(分类变量) 设置索引 排序 数据筛选/切片 ...

  9. 学习构建一个简单的wcf服务

    入门,构建第一个WCF程序 1.服务端 建立一个控制台应用程序作为Server,新建一个接口IData作为服务契约.这个契约接口一会儿也要放到Client端,这样双方才能遵循相同的标准.别忘了添加对 ...

  10. Struts2 分割字符串标签s:generator

    有些时候会从后台返回一个字符串,可以通过Strut2的标签s:generator进行分割. generator标签,该标签可以将指定字符串按指定分隔符分割成多个字串.生成的多个字串可以用iterato ...