Para que foi inventado o SOAP?


8

Esta questão é inspirada por esta . Qual era o objetivo inicial de inventar o SOAP? Por que foi inventado quando tínhamos HTTP e REST do tipo antigo?



@ Gilbert - a questão menciona isso já como inspiração . Na minha opinião, isso é mais filosófico, em vez de prático. O que levou à invenção, em vez de, qual devo escolher.
Sdg

2
Lavando? <G>
Loren Pechtel

2
Em algum lugar, um consultor usou um sistema de informações corporativas que era rápido e ágil, vendo a receita evaporando; eles inventaram um padrão brutalmente lento para recomendar à gerência. Eles têm XMLs! XMLs são bons e corporativos! Os desenvolvedores permanentes eram impotentes para resistir. Agora, o consultor tem um fluxo de receita interminável, ajustando o desempenho no ESB semelhante a uma geleira e o mundo está certo novamente.
Afixe

Respostas:


8

REST não é um padrão, é uma arquitetura (vagamente definida). E está ligado ao HTTP, que muitas pessoas no mundo corporativo consideram uma limitação. Então, eles pensaram que precisavam de um padrão geral adequado, que funcionasse sobre outras camadas de transferência.

E o SOAP foi definido antes do REST (pelo menos de acordo com a Wikipedia :-)


Definitivamente, muitas coisas RESTful foram usadas antes do SOAP ser inventado, eles chamavam de GET e POST em geral.
Wyatt Barnett

4

O SOAP é muito mais adequado que o HTTP simples para trocar estruturas de dados complexas. O REST tem design praticamente restrito às operações CRUD, enquanto o SOAP permite chamadas de método arbitrárias, que podem ser algo que não pode ser pressionado no esquema REST.


4
O REST não está restrito ao CRUD, praticamente ou teoricamente. O HATEOAS, por exemplo, gira em torno de interações / representações detectáveis - infoq.com/articles/webber-rest-workflow .
FinnNk

1
FinnNK: Ainda não está convencido ... Claro, você pode fazer qualquer coisa GET ou PUT, mas não tenho certeza se é muito RESTy em todos os casos. Por exemplo, imagine um serviço da web que receba uma lista de registros, os mescla com os registros existentes no banco de dados (inserindo novos e atualizando registros existentes, mas sem excluir nada) e retorne uma lista de todos os registros que não estavam atualizados. Como tornar esse REST completo?
precisa saber é o seguinte

Os recursos REST podem ser recursos de 'processamento' tanto quanto recursos de 'substantivo'. Aqui você exporia um ponto de extremidade que aceita a atualização e algum tipo de ID - é possível consultar usando esse ID para obter registros não atualizados (e o próprio local da consulta pode ser descoberto por meio de um link). Essa atualização em lote é um dos cenários clássicos para SOAP - use qualquer que seja a melhor combinação que eu possa ter.
FinnNk

@ammoQ: Uma maneira de o seu serviço provavelmente ser feito com um POST da lista de registros. No retorno, você pode, entre outras coisas, ter um URL para GET que lista os registros desatualizados.
Sdg

4

Da Wikipedia :

O SOAP, originalmente definido como Simple Object Access Protocol, é uma especificação de protocolo para troca de informações estruturadas na implementação de Serviços da Web em redes de computadores. ... SOAP tem três características principais: Extensibilidade (segurança e roteamento WS estão entre as extensões em desenvolvimento), Neutralidade (SOAP pode ser usado em qualquer protocolo de transporte como HTTP, SMTP ou mesmo TCP) e Independência (SOAP permite qualquer modelo de programação).

O SOAP não se limita ao HTTP e fornece segurança imediatamente.

Se você estiver usando HTTP e não precisar de segurança (seu serviço da web é aberto ao público), não precisará de SOAP.


4

Eu não estava na sala, mas geralmente diria que o SOAP era uma idéia muito, muito boa e uma resposta muito razoável às outras opções de RPC que existiam entre meados e o final dos anos 90. Como o CORBA , um animal com o qual não posso dizer que tive que lidar pessoalmente, mas a simples menção disso pode fazer os homens crescidos se sujarem. As opções além do CORBA eram realmente mais assustadoras em muitos casos e havia pouca padronização e muitos protocolos de mensagens personalizados em andamento. Sistemas integrados eram coisas muito, muito difíceis. Havia boas razões para não confiar no HTTP como transporte. No final dos anos 90, as velocidades típicas da LAN eram de 10 megabits ou menos, as velocidades da WAN eram muitas vezes medidas em baud. Toda a infraestrutura de cache de borda que faz tanto pelo REST não existia.

O que nos leva ao SOAP - que por si só não especifica um meio de transporte. Acredito que alguém conseguiu implementar uma chamada SOAP pelo pombo-correio. Ou talvez uma andorinha africana. De qualquer forma, é muito mais simples implementar a opção de mensagens do que a que veio antes. E se você tivesse um kit de ferramentas SOAP decente, era muito, muito mais fácil de consumir do que qualquer outra coisa que havia chegado antes. E mais fácil de fazer ferramentas. Tão fácil que eles pensaram que precisavam estender o protocolo. E é aí que entra o WS- *. É aí que as rodas caem daquele caminhão. . .


+1. A sua foi a única resposta que conecta o SOAP à sua origem - computação distribuída. O SOAP não era tanto sobre HTTP quanto sobre conversa entre aplicativos - onde animais como o CORBA falhavam!
Dipan Mehta 14/03/12

2

SOAP é um protocolo de mensagens criado pela mesma razão pela qual qualquer outro protocolo de mensagens foi criado; padronizar a maneira pela qual as informações do objeto são passadas. Como a página da Wikipedia afirma, ela se originou na Microsoft e agora é um padrão aberto mantido pelo W3C.

A melhor pergunta é por que escolher entre SOAP ou algum esquema XML ou JSON ou o que quer que seja, e a resposta se resume a usar o que for mais fácil / prático em sua situação específica.


1

Na minha opinião, o SOAP é outra visão da RPC . Veja como você expõe o WebService atualmente. Uma parte marca o método como WebService e a outra apenas busca o WSDL e usa métodos remotos como se fossem locais. Estou bastante ciente de todos os problemas do SOAP, mas em algum nível de abstração o SOAP / WS cumpre sua promessa de RPC. É claro que você pode criar uma API baseada na arquitetura REST, mas ainda será necessário que outra parte codifique alguns bits que de alguma forma desafiam a definição de RPC.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.