简洁大气企业网站模板,西安个人做网站,网站开发公,wordpress网站地图自动更新今天要介绍的是edge.js这个github上刚兴起的开源项目#xff0c;它可以让node.js和.net之间在in-process下互操作。.net版本在4.5及以上#xff0c;因为.net4.5带来的Task#xff0c;asyn#xff0c;await关键字和node.js的Event模型正好匹配。如果你感兴趣的话#xff0c… 今天要介绍的是edge.js这个github上刚兴起的开源项目它可以让node.js和.net之间在in-process下互操作。.net版本在4.5及以上因为.net4.5带来的Taskasynawait关键字和node.js的Event模型正好匹配。如果你感兴趣的话可以参见githubhttps://github.com/tjanczuk/edge 和Edge.js overview. 下面这幅图展示了edge.js在node.js和.net之间互操作的桥梁。Funobject,Taskobject表示输入为object类型输出为Taskobject,后者对应node.js中的回调函数前者则为.net方法输入参数。更多详情请参见github readme。 下面我们写个菲波基数作为demo尝鲜完整项目寄宿在githubedge-demo。 1 var edge require(edge);2 3 var fib edge.func({4 source: function() {/*5 6 using System;7 using System.Linq;8 using System.Threading.Tasks;9
10 public class Startup
11 {
12 public async Taskobject Invoke(object input)
13 {
14 int v (int)input;
15 var fib Fixint, int(f x x 1 ? 1 : f(x - 1) f(x - 2));
16 return fib(v);
17 }
18
19 static FuncT, TResult FixT, TResult(FuncFuncT, TResult, FuncT, TResult f)
20 {
21 return x f(Fix(f))(x);
22 }
23
24 static FuncT1, T2, TResult FixT1, T2, TResult(FuncFuncT1, T2, TResult, FuncT1, T2, TResult f)
25 {
26 return (x, y) f(Fix(f))(x, y);
27 }
28 }
29
30 */},
31 references: [System.Core.dll]
32 });
33
34 fib(5, function (error, result) {
35 if (error) console.log(error);
36 console.log(result);
37 });
38
39 var fibFromFile edge.func(__dirname /fib.cs);
40 fibFromFile(5, function (error, result) {
41 if (error) console.log(error);
42 console.log(result);
43 });
44
45 var fibFromDll edge.func({
46 assemblyFile: edge.demo.dll,
47 typeName: edge.demo.Startup,
48 methodName: Invoke
49 });
50 fibFromDll(5, function (error, result) {
51 if (error) console.log(error);
52 console.log(result);
53 }); 效果: 这里分为3类调用直接源码嵌入node.js和文件外置以后编译后的dll多的不用说其实很简单如果你和一样同样喜欢js和.net的话。 在当下node.js刚兴起成型的框架还不够多或者有时我们必须以c或者c来完成node.js的本地扩展的时候edge.js给我们提供了另一个可选的途径就是 强大的.net大家族。 转载于:https://www.cnblogs.com/whitewolf/archive/2013/03/31/2991200.html