• 如何在.Net Core调用NodeJs



    概述

    目前.net core正处于飞速的成长期,虽然前途光明不容置疑,但是就生态而言还是比不上其他一些语种的大环境,那如果能够在.net core下调用其他语种的库加以利用那就能更好的发挥我们手头的.net core 而不至于因为库短缺而尴尬

    NodeJs出生名门,依靠其异步IO广泛用于I/O密集的场景,而且世界上的javascript开发者也是多如牛毛!自然Nodejs的盛起也给他们的代码生活带来了前所未有的体验,同样JS的库也是五花八门一度占据了github的排行榜。

    如果.net core能利用 nodejs的庞大生态库是不是很nice?

    Microsoft.AspNetCore.NodeServices库

    其实微软爸爸提供了Microsoft.AspNetCore.NodeServices这个库,专门用来调用nodejs服务

    要使用NodeJs服务,首先需要Microsoft.AspNetCore.NodeServices在项目文件中包含包的引用。您可以使用dotnet add package Microsoft.AspNetCore.NodeServices命令执行此操作。

    然后,您需要将Node Services中间件利用ConfigureServices()添加到请求管道。

    现在,您可以利用INodeServices在应用程序中获取实例。并利用它调用在Node环境中运行的JavaScript的API。您可以使用FromServicesattribute在您的action方法中获取`INodeServices'的实例

    实例

    这里我贴一个实例供参考

    新建aspnet core站点

    利用dotnet command建立站点

    dotnet new mvc

    添加nuget包

    dotnet add package Microsoft.AspNetCore.NodeServices

    建立node环境,此处示例用于扫描wifi环境

    在站点根目录下利用npm建立环境

    npm init -y
    npm install node-wifi --save-dev

    建立nodejs的程序文件 index.js

    复制代码
    var wifi = require("node-wifi");
    
    module.exports = function(callback) {
        wifi.init({
            iface: null // network interface, choose a random wifi interface if set to null
        });
        // Scan networks
        wifi.scan(
        ).then(function (networks) { callback(null,networks)});
    };
    复制代码

    设置js文件为始终复制

    注入配置

    复制代码
       public void ConfigureServices(IServiceCollection services)
            {
                services.Configure<CookiePolicyOptions>(options =>
                {
                    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                    options.CheckConsentNeeded = context => true;
                    options.MinimumSameSitePolicy = SameSiteMode.None;
                });
                services.AddNodeServices();
    
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            }
    复制代码

    在控制器-Action处调用

    public async Task<IActionResult> Wifi([FromServices] INodeServices nodeServices)
    {
    var result=await nodeServices.InvokeAsync<dynamic>("Index.js");
    return new JsonResult(result);
    }
    返回情况

  • 相关阅读:
    P1030 求先序排列 P1305 新二叉树
    spfa
    Clairewd’s message ekmp
    Cyclic Nacklace hdu3746 kmp 最小循环节
    P1233 木棍加工 dp LIS
    P1052 过河 线性dp 路径压缩
    Best Reward 拓展kmp
    Period kmp
    Substrings kmp
    Count the string kmp
  • 原文地址:https://www.cnblogs.com/webenh/p/11213664.html
Copyright © 2020-2023  润新知