是否可以从 C# ASP.NET 服务器调用 Node.js 函数?我找到了 Edge.js 库,但据我了解,它允许 Node.js 调用 C#。我需要直接反向解决方案。
问问题
19194 次
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。
string
支持以表单、Stream
表单或磁盘上的文件调用 javascript 。
于 2020-03-23T03:36:24.917 回答
8
Microsoft.AspNetCore.NodeServices
这为 .NET 代码在 Node.js 环境中的服务器上运行 JavaScript 提供了一种快速而稳健的方式。您可以使用它在运行时在 ASP.NET Core 应用程序中使用 NPM 包中的任意功能。
大多数应用程序开发人员不需要直接使用它,但如果您想实现自己的功能,包括在运行时从 .NET 调用 Node.js 代码,您可以这样做。
于 2017-06-06T15:17:13.733 回答