如何在.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);
}

 

返回情況


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM