NodeJS & .NET
最近我注意到了一个非常有趣且强大的工具,叫做 Edge.js。Edge.js 是一个库,它允许你在 Node.js 中直接调用 .NET 或者 C# 的代码,反之亦然。这对于那些希望在现有 .NET 应用程序中引入 Node.js 功能或者反过来在 Node.js 环境中使用 .NET 技术的开发者来说,无疑是一个巨大的福音。
示例:在 Node.js 中调用 .NET/C# 代码
首先,你需要安装 Edge.js:
npm install edge
然后你可以创建一个简单的 C# 函数,用于计算两个数字的和,并在 Node.js 中调用它:
// dotnet.csx
public static object HelloWorld(dynamic input) {
int a = Convert.ToInt32(input.a);
int b = Convert.ToInt32(input.b);
return (a + b).ToString();
}
接下来,在你的 Node.js 项目中调用这个 C# 函数:
var edge = require('edge');
var cscode = 'path/to/dotnet.csx'; // 指定C#脚本文件的路径
var helloWorld = edge.func(cscode, function () {/*
async (input) => {
return ".NET says: " + HelloWorld(input);
}
*/});
helloWorld({ a: 10, b: 20 }, function (error, result) {
if (error) throw error;
console.log(result); // 输出: .NET says: 30
});
示例:在 .NET/C# 中调用 Node.js 代码
同样地,你也可以在 .NET/C# 中调用 Node.js 代码。这里我们创建一个简单的 Node.js 函数,用于返回当前时间戳:
// node.js
exports.helloWorld = function (input, callback) {
callback(Date.now().toString());
};
然后在 .NET/C# 中调用这个 Node.js 函数:
using System;
using Microsoft.NodeJS.NodeJS;
class Program
{
static void Main()
{
var runtime = new NodeJSRuntime();
dynamic helloWorld = runtime.CreateScript("path/to/node.js").Export("helloWorld");
string result = helloWorld(42);
Console.WriteLine(result); // 输出: 当前时间戳
}
}
通过这种方式,Edge.js 让你在不同的技术栈之间进行无缝集成变得非常容易。无论是需要利用 Node.js 的异步特性还是 .NET 的强大功能,Edge.js 都能提供一个强大的解决方案。
好屌啊… node 统治宇宙又进一步了…
这是要 “日出东方,唯我不败,千秋万载,一统江湖”啊!
既然叫“闹的” 就不怕折腾 你没看到微软也出了一个Node 叫 Owin吗~!
但是edge居然不支持Java,Java被边缘化了?
好牛比的样子。
代码仓库地址YSYS
NodeJS & .NET
你提到的链接指向的是 Edge.js
的文档。Edge.js
是一个开源项目,允许你在 Node.js 环境中直接调用 .NET 代码(或者 C#、VB.NET 代码)。这对于那些希望利用 .NET 强大功能同时又想使用 JavaScript 生态系统的人来说非常有用。
示例代码
假设你有一个简单的 C# 函数,你想通过 Edge.js
在 Node.js 中调用它:
C# 代码 (hello.csx):
using System;
public class HelloWorld
{
public static string SayHello(string name)
{
return $"Hello, {name}!";
}
}
Node.js 代码:
const edge = require('edge');
// 加载 C# 代码
const helloFunc = edge.func({
assemblyFile: 'path/to/your/hello.dll', // 输出的 DLL 文件路径
typeName: 'HelloWorld',
methodName: 'SayHello'
});
// 调用 C# 方法
helloFunc("World", (error, result) => {
if (error) throw error;
console.log(result); // 输出 "Hello, World!"
});
上述代码做了以下几件事:
- 定义了一个简单的 C# 类
HelloWorld
,其中包含一个静态方法SayHello
。 - 使用
Edge.js
的edge.func
来加载和调用这个 C# 方法。 - 最后,通过 Node.js 调用 C# 方法并打印返回结果。
配置步骤
为了使上述代码工作,你需要执行以下步骤:
-
编译 C# 代码: 使用
C#
编译器将hello.csx
文件编译为 DLL 文件。csc /target:library /out:path/to/your/hello.dll hello.csx
-
安装 Edge.js: 在 Node.js 项目中安装
edge
包。npm install edge
-
运行 Node.js 应用: 确保你的环境配置正确,包括 .NET 运行时和 Node.js 运行时。
以上是基本的示例和配置说明。如果你有更具体的需求或问题,请提供更多的细节。