Возможно ли вызвать функцию C # из Node.JS / Javascript

#javascript #c# #node.js

#javascript #c# #node.js

Вопрос:

Интересно, возможно ли вызвать функцию C # из javascript, как я пытаюсь сделать ниже в качестве примера? (Я использую Node.js )

Возможно ли каким-либо образом объединить это, чтобы позволить csharpфункции использовать свой способ вычисления типов doubles, Int32 и т.д. csharp для вычисления?

 var a = 4;
var b = 3;
var array = ["1", "2"];

//Is it possible to call the "csharpfunction" from javascript?


double csharpfunction(double a, double b, string[] array)
{
    a = a * b;
    return a;
}  

Ответ №1:

Поскольку C # имеет свою собственную систему сбора мусора и, следовательно, нуждается в собственной инфраструктуре, а ее форматы данных совершенно разные и настраиваемые, вероятно, было бы проще всего просто перенести вашу функцию на супер простой сервер, запустить этот отдельный процесс с вашего node.js приложение, а затем отправлять запросы на этот сервер (вероятно, через localhost на заранее определенном порту), чтобы выполнить все, что вы пытаетесь сделать. Вы можете решить, какой тип сервера и формат обмена данными вы хотите использовать, но HTTP и JSON были бы простыми и быстрыми в реализации, если бы они не вызывали проблем с эффективностью. Для передачи данных между языками их нужно будет любым способом поместить в какой-нибудь стандартный формат.

node.js имеет систему дополнений, но она ориентирована на C / C , поэтому вам, вероятно, придется обернуть свой код C # в оболочку C / C , чтобы использовать его напрямую, и вам все равно, вероятно, придется поместить свой код C # в его собственный процесс, чтобы позволить его сборщику мусора иметь место для запуска и делать свое дело. Я считаю, что простой сервер в своем собственном процессе, вероятно, даже проще, чем использование системы дополнений в этом случае.

Комментарии:

1. Я понимаю, поэтому я должен каким-то образом использовать собственный процесс и передавать вычисления туда. Это звучит как хороший и понятный способ сделать это. Спасибо!