Протоколные буферы «легковесны» в том смысле, что они обеспечивают очень компактное представление проводов, тем самым экономя полосу пропускания, память, хранилище и т. Д., Оставаясь при этом очень универсальными и кросс-языковыми.Конечно, мы используем их лот в Google, но неясно, заботитесь ли вы вообще об этих характеристиках производительности - вы, кажется, используете «облегченный» в совершенно ином смысле, чем тесно связанный с(умственная) нагрузка на вас, программиста, и не все с (вычислительной) нагрузкой на компьютеры и сети; -).
Если вам не нужно тратить гораздо больше пропускной способности / памяти / и т. д., чем выможет, и вас не волнует возможность кодировать участвующие подсистемы на разных языках, тогда буферы протокола могут быть не оптимальными для вас.
Также не является pickling
, если я прочитал ваше «несколько безопасное» требованиеправильно: открепление правильно сконструированной вредоносной маринованной строки может выполнить произвольный код на машине для маринования.На самом деле HTTP не является «несколько безопасным» в несколько ином смысле: в этом протоколе нет ничего, что могло бы помешать злоумышленникам «перехватить» ваш трафик (поэтому вы никогда не должны использовать HTTP для отправки конфиденциальных полезных данных, если только вы не используете сильное шифрование наперед отправкой и отмените его после получения).Для безопасности (опять же, в зависимости от значения слова) вам нужен HTTPS или (проще настроить, не требует покупки сертификатов! -) SSH-туннели.
Как только у вас есть SSHтуннель, установленный между двумя машинами (для Python paramiko
может помочь, но даже сделать это с помощью сценариев оболочки или иным образом, напрямую управляя клиентом командной строки ssh
, не так уж плохо ;-) вы можете запуститьлюбой протокол на нем (например, HTTP в порядке), так как конечные точки туннеля предоставляются в виде заданных пронумерованных портов, на которых можно открыть сокет.Я бы лично рекомендовал JSON вместо XML для кодирования полезных нагрузок - см., Например, здесь для RPC-сервера и клиента на основе JSON, подобных XMLRPC, - но я предполагаю, что использование сервера и клиента XMLRPCПоставить стандартную библиотеку Python еще проще, поэтому, вероятно, ближе к тому, что вы ищете.Почему вы хотите вишни в дополнение?Производительность теперь внезапно превосходит простоту, только для этого аспекта всей архитектуры, в то время как в любом другом случае простота была выбрана выше производительности?Это казалось бы весьма противоречивым набором архитектурных решений! -)