Сервер узла, работающий в Ubuntu, которому необходимо выполнить приложение C # — как?

#c# #c #node.js #child-process

#c# #c #node.js #дочерний процесс

Вопрос:

У меня есть очень простое приложение на C #, которое было написано предыдущим пользователем. Он использует MD5CryptoServiceProvider для вычисления хэша, используя некоторые начальные строки для генерации случайного кода.

У меня есть Node.js сервер, на котором я хотел бы запустить это приложение и использовать выходные данные.

Я не могу понять, как запустить C # из Ubuntu, и я не могу найти библиотеку MD5, которая выдает тот же ответ.

Вот полная функция:

 {

  MD5 md5 = new MD5CryptoServiceProvider();

  byte[] encodeBytes = System.Text.Encoding.UTF8.GetBytes(seed1  seed2  seed3);

  byte[] output = md5.ComputeHash(encodeBytes);

  string result = string.Format("{0:D}{1:D}{2:D}{3:D}{4:D}{5:D}",

                                ((output[0]   output[1]) % 10), ((output[2]   output[3]   output[4]) % 10),

                                ((output[5]   output[6]) % 10), ((output[7]   output[8]   output[9]) % 10),

                                ((output[10]   output[11]   output[12]) % 10), ((output[13]   output[14]   output[15]) % 10));

  return resu<

}

  

Могу ли я изменить этот скрипт на C # для запуска в качестве дочернего процесса или получить тот же ответ, используя скрипт на C , который я ранее запускал с узловым сервером.

Спасибо!!

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

1. Не было бы лучшим решением просто преобразовать код C # в Javascript?

2. Вы должны ограничиться одной проблемой на вопрос. Либо спросите, как запустить порождение узла обмена данными с ним, либо спросите, как запустить программу на C # в Ubuntu, либо спросите, как реализовать данный код в nodejs.

3. в npm есть модуль для MD5 npmjs.com/package/js-md5

Ответ №1:

Вам следует просто преобразовать свой код в Javascript:

 function generateCode() {

  let seed1 = 'abc';
  let seed2 = 'def';
  let seed3 = 'ghi';
  let hashed = md5(seed1   seed2   seed3);
  let values = [];

  for (let i = 0; i < hashed.length; i  = 2) {
    values.push(parseInt('0x'   hashed.substr(i, 2)));
  }

  let codeParts = [((values[0]   values[1]) % 10), ((values[2]   values[3]   values[4]) % 10),((values[5]   values[6]) % 10), ((values[7]   values[8]   values[9]) % 10),((values[10]   values[11]   values[12]) % 10), ((values[13]   values[14]   values[15]) % 10)];
  let code = codeParts.join('');
    alert(code);
}

generateCode();
  

Я использовал реализацию md5 из здесь, но любая, которая возвращает шестнадцатеричное значение в виде строки, должна работать.

Пример Javascript

C # для сравнения (то же начальное значение)

Вы, конечно, могли бы упростить это, но это служит демонстрацией того, насколько легко просто преобразовать код.

Ответ №2:

Вы можете запускать файлы C # в Ubuntu, используя mono и mcs, я думаю, что они работают действительно хорошо. Вот учебная ссылка о том, как это сделать.

TL; DR: Сначала вам нужно будет установить Monodevelop. Это можно сделать с помощью следующих команд:

 sudo apt-add-repository ppa:directhex/ppa  
sudo apt-get update  
sudo apt-get install monodevelop 
  

После установки mono вам нужно будет установить mcs:

 sudo apt-get install mcs 
  

Когда оба установлены правильно, вам нужно создать файл .cs (файл C #). Вы можете скомпилировать программу с помощью mcs ( mcs <filename.cs> ). Затем используйте mono для выполнения сгенерированного exe-файла: mono <filename.exe> .

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

1. Если вы пишете ответ, то он должен быть автономным, чтобы читатель мог решить проблему, даже если внешние ссылки отключаются. По состоянию на эту ссылку только ответов недостаточно.