Pular para o conteúdo principal

SOAP sobre HTTP não me impressiona

Todo esse papo sobre as vantagens e maravilhas do SOAP sempre pareceram um pouco suspeito, e agora finalmente eu percebi o porquê.

De algum modo, me parece que o discurso de benefícios o SOAP é uma versão travestida do seguinte argumento: o melhor é reusar o HTTP porque o melhor é reusar os servidores HTTP pré-existentes ou, ao menos, porque o problema de implementação de um servidor HTTP tem solução conhecida.

Uma crítica fundamental ao SOAP sobre HTTP é o fato de o HTTP não ter sido projetado como protocolo de transporte para outros protocolos; na prática, esse fato é simplesmente desconsiderado.

Creio que isso evidencia as razões histórias para esse esquema: o valor não está tanto nas capacidades do HTTP como protocolo de transporte, mas nas capacidades das implementações do HTTP de suportar esta forma de reuso.
Entendendo as coisas por esse ângulo, faz perfeito sentido que ao inventar uma plataforma de web services um sujeito reusasse, digamos, o Apache HTTP Server, ou o Microsoft IIS: são sistemas extensíveis de propósito.
Em um mundo imaginário onde implementar um sistema sobre TCP não fosse difícil, talvez SOAP sobre HTTP nunca tivesse nascido.

Isso, por sua vez, sugere um interessante objeto de pesquisa: um servidor genérico sobre TCP, tão extensível que implementar algo como SOAP sobre ele fosse uma solução natural.

O próprio Apache HTTP Server realiza esta proposta, de certa maneira; existem coisas como mod_ftp. Produtos como ACE e Boost.ASIO estão quase lá mas não são orientados a componentes o suficiente.

É claro que existem outras razões porque é interessante implementar SOAP sobre HTTP, como por exemplo o problema de implantação diante de firewalls convencionais que bloqueiam todas as portas TCP. Essa é uma razão para se implementar qualquer coisa sobre HTTP, é claro; não é uma propriedade especial doSOAP.

Comentários

  1. Prefiro usar HTTP com REST, de preferencia usando HyperMidia -- na linha que o Restfulie esta fazendo.

    SOAP é interessante sobre XMPP :)

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

return void();

É uma pequeneza mas eu gostaria muito que as linguagens da família do C permitissem retornar void quando a função retorna void . Escrever da forma a seguir me aborrece. public class Foo  {    public void log (String msg) { }    public void bar (String x, String y) { }    public void bar (String x)    {      if (x == null)      {        log("x was null");        return;      }      bar(x, "default");    } } Eu ficaria mais feliz escrevendo assim: public class Foo  {    public void log (String msg) { }    public void bar (String x, String y) { }    public void bar (String x)    {      if (x == null) return log("x was null");      bar(x, "default");     } }

Por que goto é considerado prejudicial?

Recentemente, o Fabiano Vasconcelos abriu uma discussão no Grupo de Usuários de C e C++: De cara eu vi algo aqui um pouco estranho, se que o amigo Márcio me permite comentar: que muitos programadores, inclusive eu (se que posso ser rotulado como programador) foram instruídos com o princípio de NUNCA usar o goto, por ser considerado um mau estilo de programação. Durante a discussão, o Eduardo Vieira puxou um artigo da KernelTrap sobre uma discussão similar ocorrida no grupo de desenvolvimento do Linux, onde Robert Wilken disse o seguinte: In general, if you can structure your code properly, you should never need a goto, and if you don't need a goto you shouldn't use it. It's just "common sense" as I've always been taught. Unless you're intentionally trying to write code that's harder for others to read. É preciso colocar a máxima "goto considered harmful" na perspectiva histórica adequada. Acredito que praticamente todo programador trein...