20

是否可以从 C# ASP.NET 服务器调用 Node.js 函数?我找到了 Edge.js 库,但据我了解,它允许 Node.js 调用 C#。我需要直接反向解决方案。

4

2 回答 2

19

Edge.js 自 2017 年年中以来一直没有更新Microsoft.AspNetCore.NodeServices 已经过时

我的组织维护了一个库Jering.Javascript.NodeJS,它可以完成 Microsoft.AspNetCore.NodeServices 所做的一切以及更多:

Jering.Javascript.NodeJS 使您能够从 C# 调用 NodeJS 中的 javascript。借助此功能,您可以使用 C# 项目中的 javascript 库和脚本。

示例用法

string javascriptModule = @"
module.exports = (callback, x, y) => {  // Module must export a function that takes a callback as its first parameter
    var result = x + y; // Your javascript logic
    callback(null /* If an error occurred, provide an error object or message */, result); // Call the callback when you're done.
}";

// Invoke javascript in Node.js
int result = await StaticNodeJSService.InvokeFromStringAsync<int>(javascriptModule, args: new object[] { 3, 5 });

// result == 8
Assert.Equal(8, result);

强调

  • 跨平台支持

    • 面向 .NET Standard 2.0 和 .NET Framework 4.6.1。
    • 在 Windows、macOS 和 Linux 上测试。
  • 性能特点

    • 不会为每次调用启动新的 Node.js 进程。相反,通过进程间通信将调用发送到长期存在的进程。
    • (可选)在 Node.js 进程集群中同时运行调用。处理集群的负载平衡。
    • 尽可能缓存已编译的 javascript。
  • 长期运行的应用程序支持

    • 如果 Node.js 进程意外终止,则重新启动它们。
    • (可选)在文件更改时重新启动 Node.js 进程。
    • 当父 .Net 进程死亡时杀死 Node.js 进程。
  • 灵活的 API

    • 公开静态 API和基于依赖注入的 API。
    • string支持以表单、Stream表单或磁盘上的文件调用 javascript 。
于 2020-03-23T03:36:24.917 回答
8

Microsoft.AspNetCore.NodeServices

  • 这为 .NET 代码在 Node.js 环境中的服务器上运行 JavaScript 提供了一种快速而稳健的方式。您可以使用它在运行时在 ASP.NET Core 应用程序中使用 NPM 包中的任意功能。

  • 大多数应用程序开发人员不需要直接使用它,但如果您想实现自己的功能,包括在运行时从 .NET 调用 Node.js 代码,您可以这样做。

来源:https ://github.com/aspnet/JavaScriptServices

于 2017-06-06T15:17:13.733 回答