Я предлагаю вам взглянуть на 1. XMLRPC 2. JSONRPC 3. SOAP 4. REST / ATOM
XMLRPC - правильный выбор. Не волнуйся, это слишком старо. Это не проблема. Это так просто, что мало что нужно изменить, так как оригинальная спецификация. Преимущество в том, что в каждом языке программирования, который я знаю, есть библиотека для клиента, в которую можно писать. Конечно, для python. Я заставил его работать с mod_python и у меня не было никаких проблем.
Большая проблема с этим - его многословие. Для простых значений существует много накладных расходов на XML. Вы можете получить его из причины, но затем вы потеряете некоторые возможности отладки с помощью таких инструментов, как Fiddler.
Мои личные предпочтения - JSONRPC. Он обладает всеми преимуществами XMLRPC и очень компактен. Кроме того, клиенты Javascript могут «оценить» его, поэтому анализ не требуется. Большинство из них построены для версии 1.0 стандарта. Я видел различные попытки улучшить его, названный 1.1 1.2 и 2.0, но они не построены один на другом и, насколько мне известно, пока не получили широкой поддержки. 2.0 выглядит лучше, но я все еще придерживался бы 1.0 (октябрь 2008)
Третьим кандидатом будет REST / ATOM. REST - это принцип, а ATOM - это способ передачи большого объема данных, когда это необходимо для запросов POST, PUT и GET.
Для очень хорошей реализации этого взгляните на GData, API Google. Очень хорошо.
SOAP устарел, и многие библиотеки / языки поддерживают его. Это тяжело и сложно, но если ваши основные клиенты .NET или Java, это может стоить беспокойства.
Visual Studio импортирует ваш файл WSDL и создаст оболочку, а для программиста C # это будет выглядеть как локальная сборка.
Приятная вещь во всем этом заключается в том, что если вы правильно разработаете свое решение, существующие библиотеки для Python позволят вам поддерживать более одной библиотеки практически без затрат. XMLRPC и JSONRPC особенно хорошо подходят.
Относительно аутентификации. XMLRPC и JSONRPC не утруждают себя определением. Это независимая вещь от сериализации. Таким образом, вы можете реализовать базовую аутентификацию, дайджест-аутентификацию или свою собственную с любым из них. Я видел пару примеров дайджест-аутентификации на стороне клиента для python, но мне еще предстоит увидеть серверную. Если вы используете Apache, он может вам не понадобиться, вместо этого используется модуль Apache mod_auth_digest. Это зависит от характера вашего приложения
Транспортная безопасность. Это явно SSL (HTTPS). В настоящее время я не могу вспомнить, как работает XMLRPC, но с имеющейся у меня реализацией JSONRPC это тривиально - вы просто меняете http на https в своих URL-адресах на JSONRPC, и он будет проходить через транспорт с поддержкой SSL.