O REST é uma abordagem melhor para executar serviços da Web ou é SOAP? Ou são ferramentas diferentes para problemas diferentes? Ou é uma questão sutil - ou seja, é um pouco melhor em certas arenas do que em outras, etc?
Gostaria especialmente de receber informações sobre esses conceitos e sua relação com o universo PHP e também com aplicativos da web modernos e avançados.
xml
web-services
rest
soap
user13276
fonte
fonte
Respostas:
Criei um dos primeiros servidores SOAP, incluindo a geração de código e a WSDL, a partir das especificações originais conforme estavam sendo desenvolvidas, quando eu trabalhava na Hewlett-Packard. Eu não recomendo usar SOAP para nada.
O acrônimo "SOAP" é uma mentira. Não é simples, não é orientado a objetos, não define regras de acesso. É, sem dúvida, um protocolo. É a pior especificação de Don Box de todos os tempos, e isso é um feito, pois ele é o homem que cometeu "COM".
Não há nada útil no SOAP que não possa ser feito com o REST para transporte e JSON, XML ou mesmo texto sem formatação para representação de dados. Para segurança de transporte, você pode usar https. Para autenticação, autenticação básica. Para as sessões, há cookies. A versão REST será mais simples, mais clara, executada mais rapidamente e usará menos largura de banda.
O XML-RPC define claramente os protocolos de solicitação, resposta e erro, e existem boas bibliotecas para a maioria dos idiomas. No entanto, o XML é mais pesado do que o necessário para muitas tarefas.
fonte
REST é uma arquitetura, SOAP é um protocolo.
Esse é o primeiro problema.
Você pode enviar envelopes SOAP em um aplicativo REST.
O SOAP em si é realmente bastante básico e simples, são os padrões WSS- * que o tornam muito complexo.
Se seus consumidores são outros aplicativos e outros servidores, atualmente há muito suporte para o protocolo SOAP, e o básico da movimentação de dados é essencialmente um clique do mouse nos IDEs modernos.
Se é mais provável que seus clientes sejam clientes RIAs ou Ajax, você provavelmente desejará algo mais simples que SOAP e mais nativo para o cliente (principalmente JSON).
Pacotes JSON enviados por HTTP não são necessariamente uma arquitetura REST, são apenas mensagens para URLs. Tudo perfeitamente viável, mas existem componentes principais para o idioma REST. É fácil confundir os dois. Mas só porque você está falando de solicitações HTTP, não significa necessariamente que você tem uma arquitetura REST. Você pode ter um aplicativo REST sem HTTP (lembre-se, isso é raro).
Portanto, se você tiver servidores e consumidores "confortáveis" com a pilha SOAP, SOAP e WSS, poderá atendê-lo bem. Se você estiver fazendo mais coisas ad hoc e quiser interagir melhor com os navegadores da Web, algum protocolo mais leve sobre HTTP também funcionará bem.
fonte
O REST é um paradigma fundamentalmente diferente do SOAP. Uma boa leitura sobre o REST pode ser encontrada aqui: Como expliquei o REST para minha esposa .
Se você não tiver tempo para lê-lo, aqui está a versão curta: REST é uma mudança de paradigma, concentrando-se em "substantivos" e restringindo o número de "verbos" que você pode aplicar a esses substantivos. Os únicos verbos permitidos são "get", "put", "post" e "delete". Isso difere do SOAP, onde muitos verbos diferentes podem ser aplicados a muitos substantivos diferentes (ou seja, muitas funções diferentes).
Para o REST, os quatro verbos são mapeados para as solicitações HTTP correspondentes, enquanto os substantivos são identificados por URLs. Isso torna o gerenciamento de estado muito mais transparente do que no SOAP, onde geralmente não está claro qual estado está no servidor e o que está no cliente.
Na prática, embora a maior parte disso desapareça, e o REST geralmente se refere apenas a solicitações HTTP simples que retornam resultados em JSON , enquanto o SOAP é uma API mais complexa que se comunica transmitindo XML. Ambos têm suas vantagens e desvantagens, mas eu descobri que, na minha experiência, o REST geralmente é a melhor escolha, porque você raramente ou nunca precisa da funcionalidade completa que obtém do SOAP.
fonte
Resposta rápida para a pergunta de 2012:
As áreas para as quais o REST funciona muito bem são:
Largura de banda e recursos limitados. Lembre-se de que a estrutura de retorno está em qualquer formato (definido pelo desenvolvedor). Além disso, qualquer navegador pode ser usado porque a abordagem REST usa os verbos GET, PUT, POST e DELETE padrão. Novamente, lembre-se de que o REST também pode usar o objeto XMLHttpRequest que a maioria dos navegadores modernos suporta atualmente, o que adiciona um bônus extra de AJAX.
Operações totalmente sem estado. Se uma operação precisar continuar, o REST não é a melhor abordagem e o SOAP pode ser mais adequado. No entanto, se você precisar de operações CRUD (criar, ler, atualizar e excluir) sem estado, será REST.
Situações de armazenamento em cache. Se as informações puderem ser armazenadas em cache devido à operação totalmente sem estado da abordagem REST, isso é perfeito. Isso abrange muitas soluções nas três acima.
Então, por que eu consideraria SOAP? Novamente, o SOAP é bastante maduro e bem definido e vem com uma especificação completa. A abordagem REST é exatamente isso, uma abordagem e está totalmente aberta ao desenvolvimento, portanto, se você tiver o seguinte, o SOAP é uma ótima solução:
Processamento e chamada assíncrona. Se o seu aplicativo precisa de um nível garantido de confiabilidade e segurança, o SOAP 1.2 oferece padrões adicionais para garantir esse tipo de operação. Coisas como WSRM - WS-Reliable Messaging.
Contratos formais. Se os dois lados (fornecedor e consumidor) tiverem que concordar com o formato de troca, o SOAP 1.2 fornece especificações rígidas para esse tipo de interação.
Operações com estado. Se o aplicativo precisar de informações contextuais e gerenciamento de estado conversacional, o SOAP 1.2 terá uma especificação adicional na estrutura WS * para oferecer suporte a esses itens (Segurança, Transações, Coordenação, etc.). Comparativamente, a abordagem REST faria com que os desenvolvedores construíssem esse encanamento personalizado.
http://www.infoq.com/articles/rest-soap-when-to-use-each
fonte
Atualmente, o SOAP tem a vantagem de ferramentas melhores, nas quais eles geram grande parte do código padrão para a camada de serviço e também geram clientes a partir de qualquer WSDL.
O REST é mais simples, pode ser mais fácil de manter como resultado, está no coração da arquitetura da Web, permite uma melhor visibilidade do protocolo e foi comprovado que é dimensionado no tamanho da própria WWW. Algumas estruturas lá fora ajudam a criar serviços REST, como Ruby on Rails, e outras até ajudam a escrever clientes, como o ADO.NET Data Services. Mas, na maioria das vezes, falta suporte de ferramentas.
fonte
null
. E o código clichê gerado geralmente serve apenas para contornar a carga causada pelo próprio SOAP.O SOAP é útil do ponto de vista das ferramentas, porque o WSDL é tão facilmente consumido pelas ferramentas. Assim, você pode gerar clientes de serviços da Web para você no seu idioma favorito.
O REST funciona bem com as páginas da web do AJAX'y. Se você mantiver suas solicitações simples, poderá fazer chamadas de serviço diretamente do seu JavaScript, e isso é muito útil. Tente ficar longe de ter espaços para nome na sua resposta XML, já vi navegadores sufocarem nesses. Portanto, o xsi: type provavelmente não funcionará para você, sem esquemas XML excessivamente complexos.
O REST também tende a ter melhor desempenho. Os requisitos de CPU do código que geram respostas REST tendem a ser menores do que as estruturas SOAP exibem. E, se você tiver seus patos de geração XML alinhados no lado do servidor, poderá transmitir efetivamente o XML para o cliente. Então, imagine que você está lendo linhas do cursor do banco de dados. Ao ler uma linha, você a formata como um elemento XML e a grava diretamente no consumidor do serviço. Dessa forma, você não precisa coletar todas as linhas do banco de dados na memória antes de começar a gravar sua saída XML - você lê e grava ao mesmo tempo. Procure novos mecanismos de modelagem ou XSLT para que o streaming funcione no REST.
O SOAP, por outro lado, tende a ser gerado por serviços gerados por ferramentas como um grande blob e só então gravado. Esta não é uma verdade absoluta, lembre-se, existem maneiras de obter características de streaming do SOAP, como usar anexos.
Meu processo de tomada de decisão é o seguinte: se eu quiser que meu serviço seja facilmente manipulado pelos consumidores, e as mensagens que eu escrever serão de tamanho médio a pequeno (10 MB ou menos) e não me importo em gravar uma CPU extra ciclos no servidor, eu vou com SOAP. Se eu precisar servir o AJAX em navegadores da Web, ou precisar transmitir, ou se minhas respostas forem gigantescas, eu vou para o REST.
Por fim, existem muitos padrões excelentes criados em torno do SOAP, como o WS-Security e a obtenção de serviços da Web com estado, aos quais você pode conectar se estiver usando as ferramentas certas. Esse tipo de coisa realmente faz a diferença e pode ajudá-lo a satisfazer alguns requisitos cabeludos.
fonte
Sei que essa é uma pergunta antiga, mas preciso postar minha resposta - talvez alguém a ache útil. Eu não posso acreditar quantas pessoas estão recomendando REST sobre SOAP. Só posso assumir que essas pessoas não são desenvolvedores ou nunca implementaram um serviço REST de tamanho razoável. A implementação de um serviço REST leva muito mais tempo do que a implementação de um serviço SOAP. E, no final, sai muito mais confuso também. Aqui estão as razões pelas quais eu escolheria o SOAP 99% das vezes:
1) A implementação de um serviço REST leva infinitamente mais tempo do que a implementação de um serviço SOAP. Existem ferramentas para todas as linguagens / estruturas / plataformas modernas lerem em um WSDL e saírem classes e clientes de proxy. A implementação de um serviço REST é feita manualmente e - obtenha isso - lendo a documentação. Além disso, durante a implementação desses dois serviços, é necessário fazer "palpites" sobre o que voltará através do canal, pois não há esquema ou documento de referência real.
2) Por que escrever um serviço REST que retorna XML de qualquer maneira? A única diferença é que, com o REST, você não conhece os tipos que cada elemento / atributo representa - você está sozinho para implementá-lo e espera que um dia uma string não seja encontrada em um campo que você pensou que sempre foi um int. SOAP define a estrutura de dados usando o WSDL, portanto, este é um acéfalo.
3) Ouvi a reclamação de que, com o SOAP, você tem a "sobrecarga" do envelope SOAP. Atualmente, precisamos realmente nos preocupar com um punhado de bytes?
4) Ouvi o argumento de que, com o REST, você pode simplesmente inserir a URL no navegador e ver os dados. Claro, se o serviço REST estiver usando autenticação simples ou sem autenticação. O serviço Netflix, por exemplo, usa OAuth, que exige que você assine e codifique antes de enviar sua solicitação.
5) Por que precisamos de um URL "legível" para cada recurso? Se estávamos usando uma ferramenta para implementar o serviço, realmente nos preocupamos com o URL real?
Preciso continuar?
fonte
A maioria dos aplicativos que eu escrevo são C # ou Java, ou aplicativos de desktop no WinForms ou WPF. Esses aplicativos tendem a precisar de uma API de serviço mais rica do que o REST pode fornecer. Além disso, não quero gastar mais do que alguns minutos criando meu cliente de serviço da web. As ferramentas de geração de clientes de processamento WSDL permitem que eu implemente meu cliente e passe a agregar valor comercial.
Agora, se eu estivesse escrevendo um serviço da Web explicitamente para algumas chamadas de javascript ajax, provavelmente seria no REST; apenas por uma questão de conhecer a tecnologia do cliente e aproveitar o JSON. Na minha opinião, as APIs de serviço da web usadas no javascript provavelmente não devem ser muito complexas, pois esse tipo de complexidade parece ser melhor manipulado no servidor.
Com isso dito, existem alguns clientes SOAP para javascript; Eu sei que o jQuery tem um. Assim, o SOAP pode ser aproveitado do javascript; apenas não tão bem quanto um serviço REST retornando cadeias JSON. Portanto, se eu tivesse um serviço da Web que desejasse ser complexo o suficiente para ser flexível para um número arbitrário de tecnologias e usos de clientes, eu usaria o SOAP.
fonte
Eu recomendo que você use o REST primeiro - se você estiver usando Java, consulte JAX-RS e a implementação de Jersey . O REST é muito mais simples e fácil de interoperar em vários idiomas.
Como outros já disseram neste tópico, o problema com o SOAP é sua complexidade quando as outras especificações WS- * entram e existem inúmeros problemas de interoperabilidade se você se desviar para as partes incorretas do WSDL, XSDs, SOAP, WS-Addressing etc.
A melhor maneira de julgar o debate REST x SOAP é procurar na internet - praticamente todos os grandes players no espaço da web, google, amazon, ebay, twitter e outros - tendem a usar e preferir APIs RESTful do que as SOAP.
A outra abordagem interessante para seguir com o REST é que você pode reutilizar muito código e infra-estrutura entre um aplicativo Web e um front end REST. por exemplo, renderizar HTML versus XML versus JSON de seus recursos é normalmente bastante fácil com estruturas como JAX-RS e visualizações implícitas - além de ser fácil trabalhar com recursos RESTful usando um navegador da web
fonte
Tenho certeza de que Don Box criou o SOAP como uma piada - 'olha, você pode chamar métodos RPC pela web' e hoje geme quando ele percebe que pesadelo dos padrões da web se tornou :-)
O REST é bom, simples, implementado em qualquer lugar (mais um 'padrão' do que os padrões), rápido e fácil. Use REST.
fonte
Eu acho que ambos têm seu próprio lugar. Na minha opinião:
SOAP : uma melhor opção para integração entre sistemas legados / críticos e um sistema de serviço da Web / Web, na camada básica, onde o WS- * faz sentido (segurança, política, etc.).
RESTful : uma melhor opção para integração entre sites, com API pública, na parte superior da camada (VIEW, ou seja, javascripts atendendo a URIs).
fonte
Uma coisa que não foi mencionada é que um envelope SOAP pode conter cabeçalhos e partes do corpo. Isso permite que você use toda a expressividade do XML para enviar e receber informações fora da banda. REST, tanto quanto eu sei, limita você a cabeçalhos HTTP e códigos de resultado.
(ora, você pode usar cookies com um serviço REST para enviar dados do tipo "cabeçalho" fora da banda?)
fonte
Não ignore o XML-RPC. Se você procura uma solução leve, há muito a ser dito sobre um protocolo que pode ser definido em algumas páginas de texto e implementado em uma quantidade mínima de código. O XML-RPC existe há anos, mas ficou fora de moda por um tempo - mas o apelo minimalista parece estar dando a ele um renascimento nos últimos tempos.
fonte
Respondendo à pergunta atualizada de 2012 (pela segunda recompensa) e revisando os resultados de hoje (outras respostas).
SOAP, prós e contras
Sobre o SOAP 1.2, vantagens e desvantagens ao comparar com "REST" ... Bem, desde 2007, você pode descrever os serviços da Web REST com WSDL e usar o protocolo SOAP ... Ou seja, se você trabalhar um pouco mais, todos os padrões W3C de a pilha de protocolos de serviços da web pode ser REST !
É um bom ponto de partida, porque podemos imaginar um cenário em que todas as discussões filosóficas e metodológicas são temporariamente evitadas. Podemos comparar tecnicamente "SOAP-REST" com "NON-SOAP-REST" em serviços semelhantes,
SOAP-REST (= "REST-SOAP"): conforme mostrado por L.Mandel , o WSDL2 pode descrever um serviço da web REST e, se supusermos que XML exemplificado possa ser envolvido em SOAP, toda a implementação será "SOAP-REST" .
NÃO SOAP-REST : qualquer serviço da Web REST que não possa ser SOAP ... Ou seja, "90%" dos exemplos REST conhecidos. Alguns não usam XML (por exemplo, RESTs AJAX típicos usam JSON), outros usam outras estruturas XML, sem os cabeçalhos ou regras SOAP. PS: para evitar a informalidade, podemos supor o nível 2 do REST nas comparações.
Obviamente, para comparar de maneira mais conceitual, compare "NON-REST-SOAP" com "NON-SOAP-REST", conforme abordagens de modelagem diferentes. Portanto, concluindo esta taxonomia de serviços da web:
NÃO REST-SOAP : qualquer serviço da web SOAP que não possa ser REST ... Ou seja, "90%" dos exemplos SOAP conhecidos.
NÃO REST-SOAP-SOAP : sim, o universo da "modelagem de serviços da web" compreende outras coisas (por exemplo, XML-RPC ).
SOAP nas condições REST
Comparando coisas comparáveis: SOAP-REST com NON-SOAP-REST .
PROS
Explicando alguns termos,
Estabilidade contratual : para todos os tipos de contratos (como "acordos escritos"),
Pelo uso de padrões : todos os níveis da pilha W3C são mutuamente compatíveis. O REST, por outro lado, não é um padrão W3C ou ISO e não possui detalhes normatizados sobre os periféricos do serviço. Então, como eu , @DaveWoldrich (20 votos), @cynicalman (5), @Exitos (0) disse antes, em um contexto em que NECESSITAM DE NORMAS, você precisa de SOAP.
Pelo uso das melhores práticas : o "aspecto detalhado" das implementações da pilha do W3C traduz os acordos humanos / legais / jurídicos relevantes.
Robustez : a segurança da estrutura e cabeçalhos do SOAP. Com a comunicação metada (com toda a expressividade do XML) e a verificação, você tem uma "apólice de seguro" contra alterações ou ruídos.
O SOAP tem "confiabilidade transacional (...) que lida com falhas de comunicação. O SOAP tem mais controles em torno da lógica de repetição e, portanto, pode fornecer mais confiabilidade de ponta a ponta e garantias de serviço", E. Terman .
Classificando profissionais por popularidade,
Melhores ferramentas (~ 70 votos): o SOAP atualmente tem a vantagem de melhores ferramentas, desde 2007 e ainda 2012, porque é um padrão bem definido e amplamente aceito. Veja @MarkCidade (27 votos), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9).
Conformidade com os padrões (25 votos): como eu disse @DaveWoldrich (20 votos), @cynicalman (5), @Exitos (0) antes, em um contexto em que NECESSITAMOS DE NORMAS, você precisa de SOAP.
Robustez : seguro de cabeçalhos SOAP, @JohnSaunders (8 votos).
CONS
A estrutura SOAP é mais complexa (mais de 300 votos): todas as respostas aqui e fontes sobre "SOAP vs REST" manifestam algum grau de aversão à redundância e complexidade do SOAP. Essa é uma consequência natural dos requisitos de verificação formal (veja abaixo) e de robustez (veja acima). "REST NÃO SOAP" (e XML-RPC, o originador SOAP ) pode ser mais simples e informal.
A restrição "only XML" é um obstáculo ao desempenho ao usar serviços minúsculos (~ 50 votos): consulte json.org/xml e esta questão ou esta . Este ponto é mostrado por @toluju (41) e outros.
PS: como JSON não é um padrão IETF , mas podemos considerar um padrão de fato para a comunidade de software da web.
Serviços de modelagem com SOAP
Agora, podemos adicionar comparações SOAP-NON-REST com NON-SOAP-REST e explicar quando é melhor usar o SOAP :
Necessidade de padrões e contratos estáveis (consulte a seção "PROS"). PS: consulte uma "necessidade B2B de padrões" descrita por @saille .
Necessidade de ferramentas (consulte a seção "PROS"). PS: os padrões e a existência de verificações formais (veja abaixo) são questões importantes para a automação das ferramentas.
Processamento pesado paralelo (consulte a seção "Contexto / Fundações" abaixo): com processos maiores e / ou mais lentos, não importa com um pouco mais de complexidade do SOAP, confiabilidade e estabilidade são os melhores investimentos.
Precisa de mais segurança : quando é necessário mais do que HTTPS e você realmente precisa de recursos adicionais para proteção, o SOAP é uma escolha melhor ( consulte @Bell , 32 votos). "Enviar a mensagem por um caminho mais complicado que solicitação / resposta ou por um transporte que não envolve HTTP", S. Seely . XML é um problema central, oferecendo padrões para criptografia XML , assinatura XML e canonização XML e, somente com SOAP é possível incorporar esses mecanismos a uma mensagem de acordo com um padrão bem aceito como WS-Security .
Precisa de mais flexibilidade (menos restrições): o SOAP não precisa de correspondência exata com um URI; não restrito a HTTP; não precisa restringir a 4 verbos. Como o @TravisHeseman (9 votos) diz, se você quiser algo "flexível para um número arbitrário de tecnologias e usos de clientes", use SOAP.
PS: lembre-se de que XML é mais universal / expressivo que JSON (et al).
Necessidade de verificações formais : importante entender que a pilha W3C usa métodos formais e o REST é mais informal. Sua descrição de serviço WSDL (uma linguagem formal ) é uma especificação formal de suas interfaces de serviços da web e SOAP é um protocolo robusto que aceita todas as prescrições possíveis de WSDL.
CONTEXTO
Histórico
Para avaliar tendências é necessária perspectiva histórica. Para este assunto, uma perspectiva de 10 ou 15 anos ...
Antes da padronização do W3C, havia alguma anarquia. Foi difícil implementar serviços interoperáveis com estruturas diferentes e mais difícil, caro e demorado para implementar algo interoperável entre as empresas. Os padrões de pilha W3C têm sido uma luz, um norte para a interoperação de conjuntos de serviços web complexos.
Para tarefas do dia-a-dia, como implementar AJAX, o SOAP é pesado ... Portanto, a necessidade de abordagens simples precisa eleger uma nova estrutura teórica ... E grandes "players de software da Web", como Google, Amazon, Yahoo et al. Elegeram a melhor alternativa, que é a abordagem REST. Foi nesse contexto que o conceito REST chegou como uma "estrutura competitiva" e, hoje (2012), essa alternativa é de fato um padrão para programadores.
Fundações
Em um contexto de computação paralela, os serviços da web fornecem subtarefas paralelas; e protocolos, como SOAP, garantem boa sincronização e comunicação. Não é "nenhuma tarefa": os serviços da Web podem ser classificados como
paralelismo de granulação grossa e embaraçoso .
À medida que a tarefa aumenta, torna-se menos significativo "debate da complexidade" e torna-se mais relevante a robustez da comunicação e a solidez dos contratos.
fonte
É matizado.
Se você precisar ter outros sistemas de interface com seus serviços, muitos clientes ficarão mais felizes com o SOAP, devido às camadas de "verificação" que você possui dos contratos, WSDL e padrão SOAP.
Para os sistemas do dia-a-dia que entram nos sistemas, acho que o SOAP é uma sobrecarga desnecessária quando uma simples chamada HTML é necessária.
fonte
Eu estou olhando para o mesmo e acho que eles são ferramentas diferentes para problemas diferentes .
O protocolo Simple Object Access Protocol (SOAP), uma linguagem XML que define uma arquitetura e formatos de mensagem, é usado pelos serviços da Web e contém uma descrição das operações. WSDL é uma linguagem baseada em XML para descrever serviços da Web e como acessá-los. será executado em SMTP, HTTP, FTP etc. Requer suporte a middleware, mecanismo bem definido para definir serviços como WSDL + XSD, WS-Policy SOAP retornará dados baseados em XML SOAP fornece padrões de segurança e confiabilidade
Serviços da Web Representational State Transfer (RESTful). eles são serviços Web de segunda geração. Os serviços da Web RESTful, se comunicam via HTTP que serviços baseados em SOAP e não requerem mensagens XML ou definições de API de serviço WSDL. para REST, nenhum middleware é necessário, apenas o suporte HTTP é necessário.WADL Standard, REST pode retornar XML, texto sem formatação, JSON, HTML etc.
É mais fácil para muitos tipos de clientes consumir serviços da Web RESTful enquanto permite que o lado do servidor evolua e dimensione. Os clientes podem optar por consumir alguns ou todos os aspectos do serviço e combiná-lo com outros serviços baseados na Web.
Os serviços REST is fácil de integrar com sites existentes.
O SOAP possui um conjunto de protocolos, que fornecem padrões de segurança e confiabilidade, entre outras coisas, e interoperam com outros clientes e servidores em conformidade com o WS. Os serviços da Web SOAP (como JAX-WS) são úteis no processamento de processamento e chamada assíncrona.
Para o SOAP da API complexa, será mais útil.
fonte
REST é uma arquitetura inventada por Roy Fielding e descrita em sua dissertação Architectural Styles e no Design of Network-based Architectures . Roy também é o principal autor do HTTP - o protocolo que define a transferência de documentos pela World Wide Web. HTTP é um protocolo RESTful. Quando os desenvolvedores falam sobre "usar serviços da Web REST", provavelmente é mais preciso dizer "usando HTTP".
SOAP é um protocolo baseado em XML que encapsula dentro de uma solicitação / resposta HTTP; portanto, mesmo se você usa SOAP, também está usando REST. Há um debate sobre se o SOAP adiciona qualquer funcionalidade significativa ao HTTP básico.
Antes de criar um serviço da Web, eu recomendaria estudar HTTP. As probabilidades são de que seus requisitos podem ser implementados com a funcionalidade já definida na especificação, portanto, outros protocolos não serão necessários.
fonte
Eu estou olhando para o mesmo problema. Parece-me que, na verdade, o REST é rápido, fácil e bom para chamadas e respostas leves e ótimo para depuração (o que poderia ser melhor do que inserir uma URL em um navegador e ver a resposta).
No entanto, onde o REST parece cair, está relacionado ao fato de não ser um padrão (embora seja composto de padrões). A maioria das bibliotecas de programação tem uma maneira de inspecionar um WSDL para gerar automaticamente o código do cliente necessário para consumir serviços baseados em SOAP. Até agora, consumir serviços Web baseados em REST parece uma abordagem mais ad-hoc de escrever uma interface para corresponder às chamadas possíveis. Fazendo uma solicitação http manual e depois analisando a resposta. Isso por si só pode ser perigoso.
A vantagem do SOAP é que, depois que um WSDL é emitido, os negócios podem estruturar seu lógico, que define contrato, qualquer alteração na interface alterará o wsdl. Não há espaço para manobras. Você pode validar todas as solicitações nesse WSDL. No entanto, como um WSDL não descreve adequadamente um serviço REST, você não tem uma maneira definida de concordar com a interface de comunicação.
Do ponto de vista comercial, isso parece deixar a comunicação aberta à interpretação e mudança, o que parece ser uma má idéia.
A principal 'Resposta' deste tópico parece dizer que SOAP significa Protocolo de Acesso Simples Orientado a Objetos, no entanto, olhando para o wiki, o O significa Objeto não Orientado a Objetos. São coisas diferentes.
Sei que este post é muito antigo, mas achei que deveria responder com minhas próprias descobertas.
fonte
É uma boa pergunta ... Eu não quero te desviar, então estou aberto a respostas de outras pessoas tanto quanto você. Para mim, realmente se resume ao custo de sobrecarga e qual é o uso da API. Prefiro consumir serviços da web ao criar software cliente, mas não gosto do peso do SOAP. O REST, acredito, é mais leve, mas não gosto muito de trabalhar com ele da perspectiva do cliente.
Estou curioso para saber o que os outros pensam.
fonte
Ouça este podcast para descobrir. Se você quiser saber a resposta sem ouvir, então OK, é REST. Mas eu realmente recomendo ouvir.
fonte
Minha regra geral é que, se você deseja que um cliente da web do navegador se conecte diretamente a um serviço, provavelmente deverá usar o REST. Se você deseja transmitir dados estruturados entre serviços de back-end, use SOAP.
Às vezes, o SOAP pode ser muito difícil de configurar e muitas vezes é um exagero para trocas simples de dados de clientes e servidores Web. Infelizmente, a maioria dos exemplos de programação simples que eu já vi (e aprendi) reforça um pouco essa percepção.
Dito isto, o SOAP realmente brilha quando você começa a combinar vários serviços SOAP juntos, como parte de um processo maior conduzido por um fluxo de trabalho de dados (pense em software corporativo). Isso é algo que muitos dos exemplos de programação SOAP não conseguem transmitir porque uma operação SOAP simples para fazer algo, como buscar o preço de uma ação, geralmente é complicada demais para o que ela faz sozinha, a menos que seja apresentada no contexto de fornecimento de uma máquina API legível que detalha funções específicas com formatos de dados definidos para entradas e saídas que, por sua vez, são roteirizadas por um processo maior.
Isso é triste, de certa forma, pois realmente dá uma má reputação ao SOAP, porque é difícil mostrar as vantagens do SOAP sem apresentá-lo no contexto completo de como o produto final é usado.
fonte
O SOAP incorpora uma abordagem orientada a serviços para serviços da Web - na qual métodos (ou verbos) são a principal maneira de interagir com o serviço. O REST adota uma abordagem orientada a recursos, na qual o objeto (ou o substantivo) ocupa o centro do palco.
fonte
No sentido do suporte ao "universo PHP", o PHP para qualquer SOAP avançado é um saco. Você acabará usando algo como http://wso2.com/products/web-services-framework/php/ assim que cruzar as necessidades básicas, mesmo para ativar o WS-Security ou o WS-RM sem suporte embutido.
Criação de envelope SOAP Eu sinto que é muito confuso no PHP, da maneira como cria namespaces, xsd: nil, xsd: anytype e soap com estilo antigo Serviços que usam codificação SOAP (Deus sabe o que é diferente) nas mensagens SOAP.
Evite toda essa bagunça aderindo ao REST, o REST não é nada realmente grande que estamos usando desde o início da WWW. Percebemos apenas quando este artigo http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm foi publicado, mostra como podemos usar os recursos HTTP para implementar os Serviços RESTFul. O HTTP é inerentemente REST, o que não significa que apenas o HTTP torne seus serviços RESTFul.
O SOAP negligencia os principais recursos do HTTP e considera o HTTP apenas como um protocolo de transporte; portanto, é um protocolo de transporte independente da teoria (na prática, não é o caso de você ter ouvido falar do cabeçalho de ação SOAP? Se não for pesquisá-lo agora!).
Com o aumento da adaptação JSON e o HTML5 com javascript amadurecendo, o REST com JSON se tornou a maneira mais comum de lidar com serviços. O esquema JSON também foi definido e pode ser usado para soluções de nível corporativo (ainda nos estágios iniciais) junto com o WADL, se necessário.
O suporte ao PHP para REST e JSON é definitivamente melhor do que o suporte SOAP embutido existente.
Adicionando mais algumas palavras BUZZ aqui SOA, WOA, ROA
http://blog.dhananjaynene.com/2009/06/rest-soa-woa-or-roa/
http://www.scribd.com/doc/15657444/REST-White-Paper
pelo jeito que eu amo o SOAP, especialmente para a especificação WS-Security, essa é uma boa especificação e se alguém que pensa na adaptação JSON da empresa precisar vir com algo semelhante para o JSON, como criptografia em nível de campo etc.
fonte
Um ponto rápido - protocolo de transmissão e orquestração;
Uso SOAP sobre TCP por motivos de velocidade, confiabilidade e segurança, incluindo serviços orquestrados máquina a máquina (ESB) e serviços externos. Altere a definição de serviço, a orquestração gera um erro da alteração WSDL e é imediatamente óbvia e pode ser reconstruída / implementada.
Não tenho certeza se você pode fazer o mesmo com o REST - aguardo a correção ou curso! Com o REST, altere a definição de serviço - nada sabe até retornar 400 (ou o que seja).
fonte
Se você está procurando interoperabilidade entre diferentes sistemas e idiomas, eu definitivamente optaria pelo REST. Eu tive muitos problemas ao tentar fazer o SOAP funcionar entre .NET e Java, por exemplo.
fonte
Eu crio uma referência para descobrir quais deles são mais rápidos! eu vejo este resultado:
para 1000 pedidos:
para 10.000 solicitações:
para 1.000.000 de solicitações:
fonte
Uma pergunta antiga, mas ainda relevante hoje ... devido a muitos desenvolvedores no espaço corporativo ainda o usarem.
Meu trabalho envolve projetar e desenvolver soluções de IoT (Internet of Things). Isso inclui o desenvolvimento de código para pequenos dispositivos incorporados que se comunicam com a nuvem.
É claro que o REST agora é amplamente aceito e útil, e praticamente o padrão padrão para a Web, até a Microsoft tem suporte a REST incluído em todo o Azure. Se eu precisasse confiar no SOAP, não poderia fazer o que precisava, pois é muito grande, volumoso e irritante para pequenos dispositivos incorporados.
O REST é simples, limpo e pequeno. Tornando-o ideal para pequenos dispositivos incorporados. Eu sempre grito quando estou trabalhando com um desenvolvedor da Web que me envia um WSDLs. Como terei de iniciar uma campanha de educação sobre por que isso simplesmente não vai funcionar e por que eles terão que aprender o REST.
fonte
1.De minha experiência. Eu diria que o REST oferece a você a opção de acessar a URL que já foi criada. por exemplo, uma pesquisa de palavras no google. Esse URL pode ser usado como serviço da web para REST. No SOAP, você pode criar seu próprio serviço da web e acessá-lo através do cliente SOAP.
fonte