2. Introdução
Histórico e Motivação
Chamadas de Procedimentos Remotos (RPCs) são usados desde a década de 70, com a popularização das redes de computadores. Essa tecnologia se mostra indispensável, por exemplo, nas relações cliente-servidor já que nelas um computador cliente depende de um processamento ou de uma informação armazenados no servidor. Com isso surgiram diversas soluções e protocolos que implementavam as RPCs, como, por exemplo, Microsoft Distributed Component Object Model (DCOM), Object Management Group's Common Object Request Brokering Architecture (CORBA), Java's Remote Method Invocation (RMI) e DCE/RPC.
Essas tecnologias derivadas das RPCs têm em comum o fato de dependerem de protocolos específicos a elas. Isso é uma desvantagem problemática pois cria incompatibilidade. Algumas delas também usam tecnologias proprietárias para a transmissão ou codificação das mensagens entre os atores envolvidos na RPC. Por fim, ainda há outra questão: como muitos desses protocolos usam portas e protocolos de comunicação específicos, podem aparecer problemas com firewalls; o tráfego nessas portas pode ser bloqueado em alguns casos.
Paralelamente, no fim dos anos 90, a web se popularizou e os diversos protocolos padronizados da Internet (HTTP, por exemplo) se estabeleceram.
No contexto definido acima, e com a criação e difusão do XML, começou a ser escrito um protocolo para RPC baseado em XML. A ele foi dado o nome SOAP. SOAP é um protocolo de troca de mensagens originalmente elaborado por Dave Winer, Don Box, Bob Atkinson, and Mohsen Al- Ghosein em 1998, com o suporte da Microsoft.
Com o envolvimento da IBM e da Lotus no desenvolvimento do protocolo, o mesmo foi reelaborado pela W3C (World Wide Web Consortium), sendo mantido pelo XML Protocol Working Group (Grupo de trabalho de Protocolos XML) da mesma. Com o posterior envolvimento da HP, do Apache Project e da Sun Microsystems, SOAP se tornou um padrão para troca de mensagens. O título de recomendação da W3C só pôde ser conferido após uma discussão que durou anos (ainda que o fim da mesma não seja claro): simplicidade versus recursos extras. Empresas como a Sun defendiam a incorporação de mais recursos ao protocolo (aproximando-o do ebXML), enquanto outras como a UserLand julgaram a simplicidade como a característica chave para o sucesso do protocolo. A homologação da W3C foi dada a um SOAP mais perto daquele defendido por essas empresas do que aquele defendido pela Sun, mas a cada nova versão do protocolo (que atualmente está na 1.2), novos recursos são incorporados.
O que é SOAP?
SOAP já foi uma abreviação de Simple Object Access Protocol (protocolo simplificado para acesso a objetos), mas, desde a publicação da versão atual de sua especificação feita pela W3C (1.2), deixou de sê- lo.
Pode-se dizer que são dois os propósitos do SOAP:
- Ser um padrão de chamada de processos remotos entre sistemas distintos, independente de plataforma, linguagem de programação e que use padrões abertos e estáveis;
- Viabilizar a conversa entre, por exemplo, um objeto COM (uma tecnologia da Microsoft para comunicação entre programas Windows) e um objeto Java.
Na prática, os dois propósitos se confundem, mas as referências aqui analisadas ora focam em um, ora em outro, justificando a divisão.
Resumindo, SOAP especifica uma sintaxe baseada em XML para se escrever e endereçar uma mensagem entre dois sistemas comunicantes.
A troca de mensagens SOAP se dá usando protocolos como o HTTP ou o SMTP, ainda que esses não tenham sido projetados para tal. Essa característica gera algumas questões que serão discutidas mais a frente.