You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

连接Node.js与.NET Core服务端引擎、实现JS调用C#接口的最优方案?

最优实现方案:ASP.NET Core + SignalR

这个方案完全规避你自己实现MQ服务时要处理的指令封装、返回值路由、多客户端管理等复杂逻辑,原生支持RPC风格的函数调用,自动处理参数/返回值序列化,且完美适配树莓派ARM运行环境。

  • 核心优势:无需修改你已有的IWorkbench实现逻辑,只需新增薄服务层对外暴露接口,JS客户端调用方法和调用本地函数体验一致
  • 类型适配:C#的byte[]类型会自动和JS侧的Uint8Array互转,无需额外做编码转换

C#服务端实现步骤

  1. 给你现有管理GPIO的C#项目添加ASP.NET Core 宿主支持,注入你已经写好的IWorkbench实现类到依赖注入容器
  2. 新增SignalR Hub类,直接对接IWorkbench的方法:
using Microsoft.AspNetCore.SignalR;

public class WorkbenchHub : Hub
{
    private readonly IWorkbench _workbench;
    // 直接注入已实现的IWorkbench实例
    public WorkbenchHub(IWorkbench workbench)
    {
        _workbench = workbench;
    }

    public Task SetDigitalOutput(byte[] output)
    {
        _workbench.SetDigitalOutput(output);
        return Task.CompletedTask;
    }

    public Task<byte[]> GetDigitalInput()
    {
        return Task.FromResult(_workbench.GetDigitalInput());
    }

    public Task<double> GetTemperatureBySensor()
    {
        return Task.FromResult(_workbench.GetTemperatureBySensor());
    }
}
  1. 在启动配置中注册SignalR服务、配置跨域规则(允许远程JS客户端访问)、映射Hub路由即可,整体代码改动量不超过30行。

JS客户端实现步骤

直接使用官方SignalR JS SDK,连接后直接调用对应方法即可:

// 引入SDK,也可以直接用UMD格式的本地包
import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr';

// 初始化连接
const connection = new HubConnectionBuilder()
  .withUrl('http://<树莓派IP:开放端口>/workbenchHub')
  .configureLogging(LogLevel.Warning)
  .build();

// 启动连接
await connection.start();

// 直接调用远端方法,原生支持返回值接收
const currentTemp = await connection.invoke('GetTemperatureBySensor');
console.log('读取到的温度值:', currentTemp);

const inputPorts = await connection.invoke('GetDigitalInput');
console.log('数字输入端口状态:', inputPorts);

// 写入数字输出
await connection.invoke('SetDigitalOutput', new Uint8Array([0x01, 0x03, 0x05]));
备选轻量方案:REST API

如果你不想引入SignalR依赖,可以直接用ASP.NET Core Web API暴露接口,实现起来同样比自建MQ简单:

  • C#侧新增API Controller,注入IWorkbench,分别给三个方法写POST/GET接口,byte[]参数会自动和Base64字符串互转
  • JS侧直接用fetch调用接口即可,无需额外安装依赖,适合调用频率不高的场景

内容的提问来源于stack exchange,提问作者Marco Arigliani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:30:00