2013-02-28 3 views
21

У меня есть приложение C# и приложение Node.js. Я хотел бы нажать кнопку в моем приложении C#, чтобы отправить три аргумента в приложение/функцию Node.js в качестве входных данных. Это возможно?Может ли приложение C# обмениваться данными с кодом Node.js?

Редактировать: Оба приложения работают на одной машине. Приложение C# предоставит три аргумента для приложения Node.js. Приложение Node.js будет запрашивать веб-службу (POST), получать некоторые XML-данные и манипулировать этими данными. Я знаю, что я мог бы выполнить эту задачу и на C#, но в этом случае это должен быть Node.js.

Редактировать # 2 и решение: Сейчас я выбрал: 4. Your node process runs a socket server and your C# app does requests over tcp.

Я также обеспечит решение, которое, кажется, работает:

Теперь вы готовы отправить любые данные с вашего C# на сервер Node.js.

+4

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

+3

Как ваше приложение node.js прослушивает запросы? Вы слушаете HTTP или TCP-запросы? Это приложение командной строки, которое вы запускаете из приложения C#? –

+0

@HectorCorrea Я еще не начал с node.js. Я хотел быть уверенным, что общение возможно. Приложение node.js должно работать все время и быть готовым получить некоторый ввод от приложения C#. – Gero

ответ

26

Да, общение возможно, как указано несколькими людьми в комментариях к вашему вопросу.

Это (некоторые) опция:

  1. процесс Вашего узел запускает сервер HTTP и ваш C# приложение делает запросы JSON Rest через HTTP
  2. процесс Вашего узла запускает SOAP веб-сервис с помощью node-soap модуля
  3. Приложение C# запускает приложение вашего узла, и вы выполняете IPC, записывая входной поток процесса узла и считывая его выходной поток.
  4. Процесс вашего узла запускает сервер сокетов, и ваше приложение C# выполняет запросы по tcp.
  5. используется 3-ий процесс/сервер, как Redis или очереди сообщений
  6. Все, что позволяет совместно использовать данные, такие как файлы ..

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

Как клиентская библиотека на C# я бы предложил вам посмотреть Restsharp в качестве клиентской библиотеки, если вы не можете использовать последнюю версию .NET (4.5). Если вы можете использовать последнюю версию, воспользуйтесь HttpClient, чтобы позвонить в службу поддержки Node.js. Для узла просто используйте Express.

Вариант 2 может быть быстрым, так как есть хорошая поддержка в VS для веб-сервисов, однако я использовал только мыло-мыло в качестве клиента, поэтому не могу прокомментировать, насколько хорошо веб-службы с узлами мылов имеют клиенты C#.

+1

добавлено мыло-мыло в качестве опции – AndyD

+2

Вы можете использовать любую форму IPC для соединения между двумя процессами: это приложение nodejs и ваше приложение C#, или оно может быть любым такой сценарий. Вы также можете посмотреть http://tjanczuk.github.io/edge/#/ –

Смежные вопросы