#c# #node.js
#c# #node.js
Вопрос:
Я разработал приложение на node JS, которое работает отлично, у меня есть другое приложение, написанное на C # dot net, его приложение Win form, я хочу использовать вызов моего кода NodeJS внутри приложения winform.
Например, я вызову функцию в приложении C #
response = CallNodeJsScript(argument1, argument2...);
Есть ли какой-либо способ сделать это?
Может ли Electron быть вариантом для этого?
Пожалуйста, помогите, спасибо
Комментарии:
1. Ну, NodeJS обычно используется для создания веб-приложения. Так что, возможно, вы можете сделать http-запрос к узловому приложению, которое выполнит вашу функцию и вернет ответ? Я не знаю, вы не сделали сценарий полностью понятным.
2. На самом деле, в NodeJS есть библиотека, я хочу каким-то образом показать, что если кто-нибудь откроет мое настольное приложение, это приложение создаст локальный сервер, как Electron, а затем сделает все необходимое
3. На самом деле это немного излишне. Что именно делает эта функция узла? Насколько это сложно? Не могли бы вы просто переписать его на c #?
4. Приложение C # не использует библиотеку JavaScript. Как и другие комментарии, вы либо предоставляете свои функции JavaScript через REST API, либо консольное приложение, а затем приложение C # может вызвать его. Также можно переписать все на C #, поскольку .NET работает намного быстрее, чем Node.js .
Ответ №1:
я не знаю об elcotron, но вы можете сделать smt следующим образом:
let handler = {}
handler.mult = function (num1, num2) {
return num1 * num2
}
const net = require('net');
const server = net.createServer(conn => {
console.log('new client');
conn.on('data', data => {
let text = data.toString('utf8')
let json = JSON.parse(text)
let func_name = json.name
let res = handler[func_name].apply(json.args)
conn.write(res)
});
conn.on('end', () => {
console.log('client left');
});
});
server.listen(9090);
С помощью этого вы можете в своем c # создать tcp до 127.0.0.1: 9090 и отправить json в формате:
{
name:"mult",
args:[2,5]
}
Вам нужно добавить все функции, которые вы хотите использовать, в обработчик
Комментарии:
1. Спасибо, но как я могу запустить сервер 127.0.0.1: 9090 с c #?