2013-06-04 6 views
1

У меня есть программа на C#, работающая на локальной системе, которая должна быть в состоянии сделать две вещи.Проектирование межплатформенного коммуникационного интерфейса

  1. Асинхронно отключение удаленных заданий на удаленных системах под управлением Windows, Linux или Android.
  2. Обеспечьте способ для этих систем отправить обратно выходные данные (StdOut/StdErr) этих заданий обратно в локальную систему.

Ранее я использовал WCF при общении с удаленной системой Windows. Я создал WCF-сервер в удаленной системе Windows, а затем мой локальный компьютер может отправлять команды и сообщения через этот канал WCF. Все усложняется, когда я пытаюсь сделать то же самое с Linux и Android.

Я полагаю, что смогу настроить локальную службу WCF с помощью REST, таким образом, все 3 платформы могут отправлять сообщения с помощью любого удобного языка (скорее всего, C++) через JSON REST. Но какой лучший способ выполнить требование №1?

Должен ли я беспокоиться о создании сервера REST на C++, который работает на Linux и Android? Может ли WCF использовать сервер REST C++, который не написан на .Net? Могу ли я лучше сделать что-то простое с помощью только сокетов TCP?

Безопасность не является проблемой, поскольку она используется в защищенной частной сети. Я просто ищу самый простой способ запуска удаленных команд/процессов и получения ответных сообщений от этих удаленных систем.

ответ

0

Это действительно зависит от вашей инфраструктуры и услуг, которые вы используете. Если вы находитесь в мире веб-сервисов Amazon, вы можете использовать службу простой очереди (SQS) для получения сообщений. Затем удаленные системы могли опросить очередь и запустить задания на основе сообщений, снятых с очереди SQS.

1

Я использую ZMQ и JSON именно для этой цели: создание пользовательской частной топологии сети, которая обменивается данными через JSON через TCP (через ZMQ). Конечно, вы можете использовать любой формат сериализации (я перечисляю некоторые альтернативы ниже).

Я не могу дать вам окончательное «это то, что вы должны делать», потому что вопрос довольно открытый.

  • ZMQ: http://www.zeromq.org/
    • Действительно хороший кросс-платформенной библиотека отведенного гнезда
    • Можно использовать различные транспортные протоколы, включая TCP
    • отправляют сообщения, как только простые массивы байт, оставляя выбор формата сериализации до вы
  • Некоторые форматы сериализации (по вашему усмотрению):
Смежные вопросы