Какой я могу выбрать?SSH или AMQP? - PullRequest
0 голосов
/ 10 января 2011

Мое приложение работает в Windows и реализовано с использованием C++ / Qt.

Приложение вызовет другое приложение, развернутое на сервере Linux, которое, в свою очередь, вызовет некоторые сторонние инструменты. Серверное приложение Linux будет отправлять некоторые обновления статуса в зависимости от запуска сторонних инструментов. Обычно стороннее приложение будет работать часами, а обновления будут отправляться на разных этапах. Сервер Linux может также отправлять некоторые файлы в дополнение к обновлениям статуса, а клиент Windows также отправляет некоторые файлы, необходимые для запуска этих сторонних инструментов.

Я планировал реализовать это в libssh2 , поскольку передача файлов может выполняться и приложения также могут выполняться с использованием libssh2_channel_exec(). Обновления могут быть отправлены и получены через неблокирующие передачи сокетов. Также переводы должны быть защищены и они аутентифицированы паролем, поэтому я подумал, что SSH будет соответствовать моим требованиям.

Я также изучил Qpid apache, который реализует AMQP. Сообщения, кажется, являются более подходящими для моих обновлений статуса, так как обновления происходят реже. Но я не уверен насчет защищенного соединения, аутентификации по паролю, а также вызова приложения.

Итак, какой из них я могу выбрать между этими двумя? Или есть другой лучший вариант? Я не совсем привык к сетевому программированию, поэтому любые ссылки, ссылки по этому поводу приветствуются ..

Ответы [ 2 ]

0 голосов
/ 11 июня 2011

Начните с SSH, а затем рассмотрите наложение других протоколов поверх.Вы можете использовать переадресацию портов SSH для создания VPN-подключения к серверу, и, возможно, это облегчит использование чего-то вроде AMQP или 0MQ.

0 голосов
/ 10 января 2011

Рассматривали ли вы некоторые веб-решения, такие как XML-RPC, REST, SOAP или другие?Обратите внимание, что вы можете либо иметь постоянное сетевое соединение и обновлять потоки, либо просто заставить своего клиента запрашивать обновление так часто, как это необходимо.

Кроме того, я думаю, что решение для построения на основе некоторых из этих протоколов облегчит вам кодирование- нет необходимости в некоторых низкоуровневых решениях, когда у вас есть отличные библиотеки.Что касается безопасности, я бы посчитал SSL, который является частью протокола HTTPS, достаточно безопасным.Конечно, вы также можете использовать гибридный стиль, например, SSH-туннель для защиты сервера и использовать авторизацию по SSH-ключу.

Но если вы уверены, что хотите использовать SSH или AMQP, используйте первый - я думаю, что он лучше защищен.Также попробуйте не использовать имя пользователя / пароль.Вместо этого используйте вышеупомянутые ключи.

...