NodeJS & .NET

NodeJS & .NET

刚看到这货了啊,NodeJS要闹那样啊? http://tjanczuk.github.io/edge/#/1

8 回复

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!"
});

上述代码做了以下几件事:

  1. 定义了一个简单的 C# 类 HelloWorld,其中包含一个静态方法 SayHello
  2. 使用 Edge.jsedge.func 来加载和调用这个 C# 方法。
  3. 最后,通过 Node.js 调用 C# 方法并打印返回结果。

配置步骤

为了使上述代码工作,你需要执行以下步骤:

  1. 编译 C# 代码: 使用 C# 编译器将 hello.csx 文件编译为 DLL 文件。

    csc /target:library /out:path/to/your/hello.dll hello.csx
    
  2. 安装 Edge.js: 在 Node.js 项目中安装 edge 包。

    npm install edge
    
  3. 运行 Node.js 应用: 确保你的环境配置正确,包括 .NET 运行时和 Node.js 运行时。

以上是基本的示例和配置说明。如果你有更具体的需求或问题,请提供更多的细节。

回到顶部