从C#.Net调用Node.JS

时间:2017-02-08 08:34:05

标签: c# asp.net node.js edge.js

是否可以在C#ASP.Net服务器上调用Node.js方法/模块? 我发现了Edge.JS库,但据我所知,它允许在Node.JS上调用C#代码。 我需要直接反向解决方案。

3 个答案:

答案 0 :(得分:10)

Edge.js has not been updated since mid 2017Microsoft.AspNetCore.NodeServices has been obsoleted

我的组织维护着一个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上进行了测试。
  • Performance功能

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

    • 如果Node.js进程意外终止,请重新启动。
    • (可选)在文件更改时重新启动Node.js进程。
    • 杀死其父.Net进程终止时杀死Node.js进程。
  • Flexible API

    • 同时公开static API和基于依赖项注入的API。
    • 支持以string形式,Stream形式或从磁盘上的文件中调用JavaScript。

答案 1 :(得分:3)

  

Microsoft.AspNetCore.NodeServices

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

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

  •   

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

答案 2 :(得分:0)

使用'express'在你的节点app中公开一个http方法,并使用'RestSharp'/'HttpClient'调用它