无码人妻丰满熟妇奶水区码,麻豆一区区三,亚洲日韩欧美精品综合,亚洲无码地址

在.NET中動態(tài)調(diào)用Nodejs代碼實現(xiàn)低代碼平臺代碼塊節(jié)點(nodejs調(diào)用動態(tài)庫)

在.NET中動態(tài)調(diào)用Nodejs代碼實現(xiàn)低代碼平臺代碼塊節(jié)點(nodejs調(diào)用動態(tài)庫)

在低代碼平臺中,通常有業(yè)務邏輯編排的能力,在業(yè)務邏輯編排中有很多不同類型的節(jié)點,例如:邏輯判斷、接口調(diào)用、數(shù)據(jù)更新等,但為了方便開發(fā)人員使用,如果添加代碼塊的節(jié)點,將會極大增加開發(fā)效率。

代碼塊節(jié)點可以使用 Node.js、Python 等解釋型語言來處理邏輯,在《dotnet 5 中執(zhí)行 Node.js》一文中,介紹了在 .NET 中通過 NodeServices 包來動態(tài)執(zhí)行 Node.js 代碼。但會有些局限。比如用戶想要使用更多的 Node.js 包,就不太容易做到。

在.NET中動態(tài)調(diào)用Nodejs代碼實現(xiàn)低代碼平臺代碼塊節(jié)點(nodejs調(diào)用動態(tài)庫)

所以本文介紹另一種思路了,其實非常簡單,主要分三步:

1、編寫 Node.js 服務,執(zhí)行 js 代碼

2、編寫 .NET API 接口,調(diào)用 Node.js 服務

3、使用 Docker 進行部署

Node.js 服務

1、使用 Node.js 的 express 框架來實現(xiàn)一個 Node.js 服務,首先用 npm init 進行初始化一個項目,初始化后,會產(chǎn)生一個 package.json ,內(nèi)容如下:

{
\"name\": \"api-demo\",
\"version\": \"1.0.0\",
\"description\": \"\",
\"main\": \"index.js\",
\"scripts\": {
\"test\": \"echo \"Error: no test specified\" && exit 1\"
},
\"author\": \"\",
\"license\": \"ISC\"
}

2、使用命令 npm i express安裝 express ,安裝時可以會出現(xiàn)下面錯誤,這時可以切換不同的鏡像源進行嘗試:

在.NET中動態(tài)調(diào)用Nodejs代碼實現(xiàn)低代碼平臺代碼塊節(jié)點(nodejs調(diào)用動態(tài)庫)

使用下面命令可以切換鏡像源:

npm config set registry https://npm.aliyun.com/

如果還是不成功,可以嘗試幾個不同的鏡像源,我是換到中科大就迅速安裝成功了:

騰訊:http://mirrors.cloud.tencent.com/npm/
華為:https://mirrors.huaweicloud.com/repository/npm/
中科大鏡像:https://registry.npmjs.org/
淘寶鏡像1:https://registry.npm.taobao.org
淘寶鏡像2:https://registry.npmmirror.com

3、使用 VS Code 打開 package.json 所在目錄,并且添加 api.js 文件,文件內(nèi)容如下:

const express = require(\'express\');
const app = express;

app.use(express.json)

app.listen(3006, => console.log(\'express 服務啟動成功\'));

app.post(\'/execute\', (req, res) => {
const data = req.body
console.log(data)

if(data && data.Code){
var code=data.Code;
try{
var result=eval(code);
res.json({result});
}catch(e){
res.json({error:e.message});
}
}else{
res.json({error:\'Invalid request body\'});
}
});

  • 可以在命令行使用 node api.js進行服務啟動,啟動后可以在瀏覽器用 3006 端口進行訪問

  • 上面代碼中定義了一個路由為 execute 的 Post 接口

  • 接口接受到需要執(zhí)行的 js 代碼,使用 eval 進行執(zhí)行,然后返回結(jié)果

.NET 調(diào)用

下面使用 .NET 8 的 Mini API ,創(chuàng)建一個接口來進行對 Node.js 服務的調(diào)用。

1、在 Rider 中創(chuàng)建一個 .NET 8 的 Web API 項目。

2、接口代碼如下:

using System.Net.Http.Headers;
using Newtonsoft.Json;
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddEndpointsApiExplorer;
builder.Services.AddSwaggerGen;

builder.Services.AddHttpClient;

var app = builder.Build;

if (app.Environment.IsDevelopment)
{
app.UseSwagger;
app.UseSwaggerUI;
}
app.UseHttpsRedirection;

app.MapPost(\"/run\", async (IHttpClientFactory clientFactory,CodeBlockInfo codeBlockInfo) =>
{
var client = clientFactory.CreateClient;
string uri = \"http://localhost:3006/execute\";

HttpContent context = new StringContent(JsonConvert.SerializeObject(codeBlockInfo));
context.Headers.ContentType = new MediaTypeHeaderValue(\"application/json\");

var result = await client.PostAsync(uri,context);
string resultContent = result.Content.ReadAsStringAsync.Result;
return resultContent;
});

app.Run;

public class CodeBlockInfo
{
public string Code { get; set; }
}

  • 定義一個 CodeBlockInfo 實體用來傳輸需要執(zhí)行的 js 代碼

  • 接口 run 中調(diào)用 Node.js 的服務,然后將執(zhí)行的結(jié)果返回

  • 關(guān)于使用 HttpClient 調(diào)用第三方接口,可以參考:https://learn.microsoft.com/zh-cn/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

3、下面一段 js 代碼是解析身份證號,從中提取出生日期和性別:

var idcard = \'420111202401011234\';
var birthday = idcard.substr(6, 4) \'-\' idcard.substr(10, 2) \'-\' idcard.substr(12, 2);
var sex = \'女\';
if (idcard.substr(16, 1) % 2 == 1) {
sex = \'男\(zhòng)';
};
output={\'生日\':birthday,\'性別\':sex}

4、運行 .NET 程序,使用 Postman 進行測試,上面的代碼就是入?yún)ⅲ?/p>

在.NET中動態(tài)調(diào)用Nodejs代碼實現(xiàn)低代碼平臺代碼塊節(jié)點(nodejs調(diào)用動態(tài)庫)

部署

Node.js

1、在目錄中創(chuàng)建 Dockerfile 文件,內(nèi)容如下:

FROM node:latest
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3006
CMD [\"node\", \"api.js\"]

2、執(zhí)行下面命令進行鏡像構(gòu)建:

docker build -t node-execute-code-demo .

3、執(zhí)行下面命令運行容器:

docker run -d -p 3106:3006 --name node-execute-code-demo --restart=always node-execute-code-demo

.NET API

1、對 API 項目進行發(fā)布,發(fā)布后的內(nèi)容在 bin/Release/net8.0/publish/目錄中。

2、在 publish 目錄中添加 Dockerfile 文件,內(nèi)容如下:

FROM mcr.microsoft.com/dotnet/aspnet:8.0
COPY . /app
WORKDIR /app
EXPOSE 5271/tcp
ENTRYPOINT [\"dotnet\", \"Run-NodeJS-Demo.dll\"]

3、執(zhí)行下面命令進行鏡像構(gòu)建:

docker build -t net-run-nodejs-demo .

4、執(zhí)行下面命令運行容器:

docker run -d -p 9090:8080 --name net-run-nodejs-demo --restart=always net-run-nodejs-demo

需要注意的是,上面的代碼示例中將 Node.js 的訪問地址寫死在了接口方法中,并且使用的是 localhost,如果部署到容器中會導致不能正常訪問,正式環(huán)境需要使用服務器的 IP,并使用配置的方式。

使用 Docker Compose

上面的兩個步驟中已經(jīng)創(chuàng)建了 Node.js 和 .NET API 的鏡像,下面使用一個 Docker Compose 的方式來進行容器的管理。

1、創(chuàng)建一個 code-execute-demo 目錄。

2、在目錄中創(chuàng)建 docker-compose.yml 文件,文件內(nèi)容如下:

version: \"3\"

networks:
fw_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.88.8.0/24

services:
nodejs:
restart: always
image: node-execute-code-demo:latest
ports:
- \"3106:3006\"
environment:
- TZ=Asia/Shanghai
networks:
fw_net:
ipv4_address: 172.88.8.2

net-api:
restart: always
image: net-run-nodejs-demo
ports:
- \"9090:8080\"
environment:
- TZ=Asia/Shanghai
networks:
fw_net:
ipv4_address: 172.88.8.3

3、命令執(zhí)行 docker-compose up -d進行容器的構(gòu)建,構(gòu)建完成可以使用docker-compose ps來查看容器是否正常:

在.NET中動態(tài)調(diào)用Nodejs代碼實現(xiàn)低代碼平臺代碼塊節(jié)點(nodejs調(diào)用動態(tài)庫)

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。

(0)
上一篇 2024年5月15日 上午8:00
下一篇 2024年5月15日 上午8:11

相關(guān)推薦

  • 超市小程序的作用及制作教程科普(超市小程序的作用及制作教程科普版)

    對于線下超市實體店來說,開發(fā)一個自己的社區(qū)超市小程序,能獲得不少好處: (1)提升線下店鋪曝光度 微信“附近的小程序”功能,會向用戶展示其5公里內(nèi)的開發(fā)了小程序的商家,也就是說,實…

    科研百科 2024年5月10日
    41
  • Reminder久坐提醒

    Reminder久坐提醒 隨著現(xiàn)代生活方式的改變,越來越多的人傾向于長時間保持同一姿勢,這可能會導致身體不適和健康問題。為了改善這種情況,我們發(fā)明了Reminder久坐提醒器,這是…

    科研百科 2024年10月28日
    6
  • 醫(yī)院科研項目政府支持嗎

    醫(yī)院科研項目政府支持嗎 醫(yī)院科研項目是醫(yī)院發(fā)展的重要支撐,也是提高醫(yī)療質(zhì)量、提升醫(yī)療水平的重要手段。然而,醫(yī)院科研項目的政府支持程度對于項目的成功實施至關(guān)重要。本文將探討醫(yī)院科研項…

    科研百科 2025年4月3日
    8
  • 科研項目生產(chǎn)試驗

    科研項目生產(chǎn)試驗:探索科技與產(chǎn)業(yè)融合的新途徑 近年來,隨著科技的快速發(fā)展,科研項目生產(chǎn)試驗已成為推動產(chǎn)業(yè)發(fā)展的重要力量。然而,傳統(tǒng)的科研項目生產(chǎn)試驗往往注重學術(shù)研究,而忽視了產(chǎn)業(yè)的…

    科研百科 2025年2月3日
    4
  • 上海crm客戶關(guān)系管理系統(tǒng)

    上海crm客戶關(guān)系管理系統(tǒng):提升客戶體驗的數(shù)字化工具 隨著數(shù)字化時代的到來,客戶關(guān)系管理(CRM)系統(tǒng)已經(jīng)成為企業(yè)提高客戶滿意度和競爭力的重要工具。在上海,許多公司已經(jīng)意識到CRM…

    科研百科 2024年9月15日
    22
  • 聊城市農(nóng)業(yè)科研項目

    聊城市農(nóng)業(yè)科研項目 近年來,聊城市的農(nóng)業(yè)領(lǐng)域取得了巨大的進展,但也存在許多問題和挑戰(zhàn)。為了解決這些問題,聊城市農(nóng)業(yè)部門近年來積極開展了多項科研項目,旨在提高農(nóng)業(yè)生產(chǎn)效率和質(zhì)量,推動…

    科研百科 2025年5月24日
    2
  • 教育局科研項目

    教育局科研項目 隨著教育事業(yè)的發(fā)展,教育局一直致力于推動教育事業(yè)的創(chuàng)新和進步。在這個時代,教育需要更加開放和靈活,需要更加注重學生的個性化發(fā)展。為此,教育局推出了一系列科研項目,旨…

    科研百科 2025年2月26日
    1
  • 河南 科研課題

    河南科研課題河南科研課題報告(河南省農(nóng)技學生指導)摘要:此次專題,應該是研究中國現(xiàn)有水資源的現(xiàn)狀,并將說明個人對水資源的重要性。孩子學習?對于所有的家長來,最關(guān)心就是孩子的學習,對…

    科研百科 2024年11月25日
    6
  • 外貿(mào)銷售國際銷售最好用的50款客戶線索詢盤開發(fā)軟件-2023最全版(外貿(mào)業(yè)務詢盤跟進技巧)

    外貿(mào)銷售國際銷售最好用的50款客戶線索詢盤開發(fā)軟件-2023最全版(外貿(mào)業(yè)務詢盤跟進技巧) 外貿(mào)銷售可以掌握國際市場銷售技術(shù)SalesTech,成為懂技術(shù)的超級銷售,這也是Sell…

    科研百科 2024年3月24日
    174
  • 醫(yī)院科研項目審讀

    醫(yī)院科研項目審讀 醫(yī)院科研項目的審讀是一項非常重要的工作,它涉及到科研項目的質(zhì)量、可靠性和安全性。在審讀過程中,我們需要對科研項目的內(nèi)容、方法、結(jié)果和結(jié)論進行仔細的分析和評估,以確…

    科研百科 2025年2月7日
    6
大黑逼网站在线观看| 日本黄色日本高清视频一区二区| 综合亚洲一区二区日韩| 久艹在线视频一区二| 日本韩国一区在线| 屈辱有码一区二区| 69激情视频网| 精品+无码+在线| 鸡巴欧美在线| 欧美黄片观看| 日本人妻少妇调教| 国产大屌操逼视频| 色丝久久久| 中文字幕av久久爽蜜| 日韩欧美另类一区二区| www.人妻熟女.com| 日韩在线观看三级图片网站| 欧美97日韩人妻免费视频| 国产A级精品毛片| 性av夜夜情| 操大胆骚逼| 中文亚洲日韩aa| 日韩色本道| 久久久一本精品99久久精品66| 天天干天天爽视频 - 百度| 日韩香蕉黄色在线视频观看| 欧美熟足日韩| 好吊妞这里有精品欧美专区精选| 精品少妇内射| caoporn国产1区| 中午字幕一区| 最新尤物视频网址| 操出白浆电影| 精品h在线| 久久免费看少妇高潮电影| 色欲caoporn成人在线视频 | 午夜精品福利视频在线播放器| 亚洲一区Cao| 91Av三区| 美女逼逼自慰| 日本邪恶久久久|