Pergunta

Os argumentos sobre a simplicidade de soluções utilizando XML-RPC ou descanso são fáceis de entender e difícil argumentar com.

Muitas vezes também ouviu os argumentos de que o aumento da sobrecarga de sabão pode impactar significativamente a largura de banda utilizada e possivelmente até mesmo latência. Eu gostaria de ver os resultados de um teste que quantifica o impacto. Qualquer um sabe uma boa fonte de tais informações?

Foi útil?

Solução

Existem alguns estudos que têm sido feitos em relação a este que você pode encontrar informativo. Consulte o seguinte:

Há também um é (um pouco fora de data) conversa desempenho interessante sobre o tema na MSDN .

Em suma - a maioria destas fontes parecem concordar que SOAP e REST são mais ou menos o mesmo desempenho para dados de uso geral. Alguns resultados, no entanto, parecem indicar que, com dados binários, REST pode realmente ser menos eficaz. Veja os links no fórum I ligado para mais detalhes sobre isso.

Outras dicas

O principal impacto na velocidade do SOAP vs. descanso não tem a ver com a velocidade do fio, mas com cachability. RESTO sugere o uso de semântica da web em vez de tentar túnel sobre ele via XML, serviços da web para RESTful são geralmente projetados para usar corretamente os cabeçalhos de cache, para que eles funcionam bem com infra-estrutura padrão da web como caching proxies e caches do navegador mesmo locais. Além disso, usando semântica meio da web que coisas como ETags e compressão zip automática são bem compreendidos maneiras de aumentar a eficiência.

.. e agora você diz que quer benchmarks. Bem, com a ajuda de Google, encontrei um cara cujos shows testar restante a ser 4-6x mais rápido do que o sabão e outra papel que também favorece REST.

resto como um protocolo não define qualquer forma de mensagem envelope, enquanto SABÃO tem este padrão.

Para tanto, a sua um pouco simplista para tentar comparar os dois, eles são maçãs com laranjas.

Dito isto, um envelope SOAP (menos o de dados) é apenas alguns k, então não deve haver qualquer diferença notável na velocidade desde que você está recuperando um objeto serializado via tanto SOAP e REST.

SOAP e qualquer outro protocolo que utiliza XML geralmente incha suas mensagens um pouco -. Isso pode ou não ser um problema, dependendo do contexto

Algo como JSON seria mais compacto e talvez mais rápido para serialise / deserialise - mas não usá-lo exclusivamente por esse motivo. Faça o que você sente faz sentido no momento e alterá-lo se é um problema.

Qualquer coisa que usa HTTP normalmente (a menos que a reutilização de uma conexão keepalive HTTP 1.1, que muitas implementações não) inicia-se uma nova conexão TCP para cada solicitação; isso é muito ruim, especialmente através de links de alta latência. HTTPS é muito pior. Se você tem um monte de pedidos curtos de um remetente para um receptor, pense sobre como você pode tirar essa sobrecarga para fora.

Usando HTTP para qualquer tipo de RPC (seja SOAP ou outra coisa) é sempre vai incorrer essa sobrecarga. Outros protocolos RPC geralmente permitem-lhe manter uma conexão aberta.

Expandindo "pjz" 's resposta.

Se você está recebendo uma grande quantidade de informação (obter * tipo de chamadas) operações de SOAP baseado, atualmente não há nenhuma maneira que você pode armazenar em cache-los. Mas se você fosse para implementar essas mesmas operações usando REST, existe a possibilidade de que os dados (depende do seu contexto de negócios) pode ser armazenado em cache, como mencionado acima. Porque o sabão usa POST para suas operações, não pode armazenar em cache as informações no lado do servidor.

SOAP é definitivamente mais lento. Cargas são significativamente maiores que são mais lentos para a montagem, de transporte, de análise, Validar e processo.

Eu não sei de qualquer resposta à pergunta de benchmarking, no entanto, o que eu sei sobre o formato SOAP é sim, ele tem sobrecarga, mas que a sobrecarga não aumenta por pedido: se você tiver um elemento enviado para o serviço web, você tem sobrecarga + uma construção elemento, e se você tem 1000 elementos enviados para o serviço web, você tem sobrecarga + 1000 elemento de construção. A sobrecarga ocorre quando o pedido XML é formatado para a operação particular, mas cada elemento argumento individual no pedido é formatado o mesmo.

Se você furar a repetíveis explosões, curtos de dados (por exemplo, 500 elementos), a velocidade deve ser acceptible.

Eu acho que a principal questão aqui é como compara RPC com SOAP.

que ambos têm a mesma abordagem de abstração de comunicação por ter stub objetos que você operar com e / tipos de dados complexos primitivos você voltar sem realmente saber como tudo isso é tratado por baixo.

Eu sempre prefiro (JSON-) RPC porque

  • é leve
  • há muitos grandes implementações para todas as linguagens de programação lá fora
  • É simples de aprender / uso / criar
  • é rápido (especialmente com JSON)

embora haja razões que você deve usar sabão, ou seja, se você precisa de nomear parâmetros em vez de confiar em sua ordem correta

mais alguns detalhes que você começa a partir desta stackoverflow questão

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top