Por que alguém iria usar RESTO em vez de serviços baseados em SOAP? [fechadas]

StackOverflow https://stackoverflow.com/questions/90451

  •  01-07-2019
  •  | 
  •  

Pergunta

participou de uma demonstração interessante sobre RESTO hoje, no entanto, eu não conseguia pensar em uma única razão (nem foi apresentado) porque REST é de qualquer maneira melhor ou mais simples de usar e implementar do que um sabão Serviços baseado em pilha.

Quais são algumas das razões por que alguém no "mundo real" uso RESTO em vez dos serviços baseados em SOAP?

Foi útil?

Solução

Menos sobrecarga (sem envelope SOAP para embrulhar cada chamada in)

Menos duplicação (HTTP já representa operações como DELETE PUT, GET, etc. que, de outro modo ser representado em um envelope SOAP).

Mais padronizados - HTTP operações são bem compreendidos e operar de forma consistente. Algumas implementações de SOAP pode obter mimado.

Mais legível e testável (mais difícil de SABÃO teste com apenas um navegador).

Não é necessário XML uso (bem você meio que não tem que para SOAP quer, mas não faz sentido desde que você já está fazendo a análise do envelope).

Bibliotecas fizeram SABÃO (tipo de) fácil. Mas você está abstraindo um monte de baixo redundância como observei. sim, em teoria, SOAP pode passar por cima de outros transportes, de modo a evitar andar em cima de uma camada de fazer coisas semelhantes, mas na realidade apenas sobre todo o trabalho de SOAP que você vai fazer é através de HTTP.

Outras dicas

RESTful serviços são muito mais simples de consumir do que SABÃO serviços baseados (regulares). A razão para isso é que o descanso é baseado em solicitações HTTP normais que permite intenção de ser inferida a partir do tipo de solicitação sendo feita (GET = retrive, POST = write, DELETE = Remover, etc ...) e é completamente sem estado. Por outro lado, você poderia argumentar que é menos flexível, uma vez que acaba com o conceito de um envelope de mensagem que contém contexto de solicitação.

Em minha experiência SABÃO tem sido a preferida para serviços dentro da empresa e RESTO tem sido a preferida para os serviços que são expostos como APIs públicas.

Com ferramentas como WCF no .NET framework é muito trivial para implementar um serviço como descanso ou SOAP.

Alguns leitura relevante:

Eu vou assumir que quando você diz "serviços web" você SABÃO média e o WS- * conjunto de normas. (Caso contrário, eu poderia argumentar que os serviços REST são "serviços Web".)

O argumento canônico é que os serviços REST são uma correspondência mais próxima ao projeto da web - ou seja, o projeto de HTTP e infra-estrutura associada. Assim, usando um serviço REST será mais compatível com ferramentas e técnicas da web existentes.

É claro que, uma vez que você perfurar em detalhes, você descobrir que ambas as abordagens têm forças em diferentes cenários. É esses detalhes que você está interessado?

A sobrecarga não é tão importante quanto a boa arquitetura.

resto não é um protocolo que é uma arquitetura que encorajar a boa concepção escalável. Ele é muitas vezes escolhido porque muita liberdade na RPC pode facilmente levar a uma má concepção.

A outra razão é o custo previsível de protocolos REST sobre HTTP, porque pode alavancar tecnologias (principalmente proxies) existentes. RPC custo inicial é muito baixa, mas tendem a aumentar significativamente com a intensificação de carga.

REST é a implementação agnóstica e muito mais transparente, e isso o torna ótimo para APIs públicas, especialmente para grandes sites como o Flickr, Amazon ou Digg que estão usando suas APIs como ferramentas de marketing e realmente quer que as pessoas a consumir seus dados. Eles não quer ser 1000s-terra arrendada da mão de desenvolvedores iniciantes que estão tentando depurar sua linguagem de script da biblioteca de SOAP de buggy de escolha.

Versus SOAP e WSDL, que são melhores para aplicações internas, onde você tem drop-in bibliotecas e as pessoas clueful conhecidos em ambas as extremidades. (E você talvez não precisa se preocupar com coisas como Internet escala de balanceamento de carga, HTTP caching etc.) Então você começa APIs que são auto-documentadas, preservar tipos etc. com o trabalho de zero.

Got para ler mais excelente do Roy Fielding dissertação sobre o tema. Ele faz um excelente caso e foi definitivamente WAY à frente do seu tempo quando ele escreveu (2000).

blogue Steve Vinoski e sua últimos artigos são definitivamente perusing. Ele é um ex-guru CORBA, que escreveu provavelmente o melhor livro sobre o assunto com Michi Henning, "CORBA® Programação avançada com C ++" . No entanto, ele já viu o erro de seus caminhos de cliente / servidor, e agora jura por REST.

RESTO permite que suas operações não-mutação (que geralmente usam o verbo GET) para ser cache . Isto é, em cache pelo cliente e / ou armazenado em cache por proxies. Esta pode ser uma grande vitória!

REST é basicamente apenas uma maneira de implementar serviços web. É apenas uma maneira de usar o HTTP corretamente para consultar os serviços da web que você está tentando acertar.

http://www.xfront.com/REST-Web-Services.html http://en.wikipedia.org/wiki/Representational_State_Transfer

É super simples e elegante. Você poderia fazê-lo com navegador via http verbo: GET. Eu não encontrar um navegador pode fazer manualmente solicitação HTTP POST genérico facilmente

Aqui está um ponto de dados:. Amazon oferece aos seus APIs em ambos os formatos em REST e SOAP e 85% do uso é DESCANSO

REST é mais fácil de implementar, fácil de entender e maior desempenho.

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