Pessoal está confundindo 3 conceitos: escabilidade, performance e interoperabilidade.
1 - Escalabilidade em software, você consegue aplicando uma arquitetura Distribuída, “particioná-lo” em peças e fazê-lo responder em máquinas separadas.
Abaixo link para um excelente livro que dá uma boa base sobre Algorítmos Distribuídos - http://www.amazon.com/Distributed-Systems-Algorithmic-Approach-Information/dp/[telefone removido]/ref=pd_sim_b_3
Aliás definição do Tanenbaum: “coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente” - Sobre sistemas distribuídos.
Com arquitetura distribuída, você endereça a questão de crescer o processamento à medida que seu software tenha um aumento de carga considerável.
Em termos de tecnologia, há uma série de formas de realizar essa distribuição das tarefas, com protocolos binários, proprietários etc. Um exemplo clássico é o Corba que faz uso do IIOP e na tecnologia Java - EJB. Vale à pena ler um pouco mais sobre Corba - http://searchsqlserver.techtarget.com/definition/CORBA
Eu não preciso de um protocolo comum para conseguir “escalabilidade” do meu software, como HTTP. O HTTP é uma forma que exige menos máquinas, já que você poderia se fazer valer de Caches. Contudo, não são todos os dados que são passíveis de cacheamento, ou seja “idempotentes”. Há uma série de restrições para uso de cacheamento, por exemplo, quando o dado é único à cada cliente, como conta-bancária.
Então o ato de Escalar, é distribuir o seu processamento em máquinas e essas agirem com única. Com sua arquitetura orientada a serviços, você já distribuiu sua plataforma de software e consegue adicionar mais máquinas para endereçar a demanda de processamento.
2- Performance - O HTTP é um protocolo síncrono e lento, ele não tem Performance alta, então o pessoal está confundindo escalabilidade com tempo de resposta. Um sistema de mensageria como o HornetQ processa 8.2 milhões de mensagens por segundo e vai trabalhar em cima de outros protocolos como AMQP etc. Você ainda tem protocolos de baixa latência, talvez tenha que trabalhar até com Sockets e TCP diretamente.
É importante saber se você está num projeto que necessita apenas de escalabilidade, como um FaceBook ou se você está criando um Broker para uma corretora e exigirá baixa latência e performance. São problemas distintos.
3 - Interoperabilidade: Interoperabilidade é a capacidade de um sistema (informatizado ou não) de se comunicar de forma transparente (ou o mais próximo disso) com outro sistema (semelhante ou não). Para um sistema ser considerado interoperável, é muito importante que ele trabalhe com padrões abertos ou ontologias - http://pt.wikipedia.org/wiki/Interoperabilidade
Aqui um sistema Restful em cima de HTTP utilizando Semântica como RDF, talvez tenha uma melhor interoperabilidade que os WebServices clássicos. Contudo, ambas opções são estilos arquiteturais de exposição da sua API à outras plataformas, ou seja SOA :-).