Enquanto o GUJ tem sua massagem noturna eu respondo ao post do Maurício por aqui. O tema é REST x POX, mais especificamente: precisamos usar REST o tempo todo?
Pra você que estava hibernando há uns 12 meses, REST é um estilo arquitetural que se coloca como uma alternativa ao uso de SOAP e padrõesWS -* para criar WebServices. REST é interessante porque este estilo arquitetural é conhecido e utilizado há anos: é o estilo arquitetural que define a Web. Um sistema REST vai usar os métodos HTTP (GET, POST, PUT e DELETE), os content-types, os código de resposta e tudo mais que você ignora solenemente na maioria das aplicações web atuais mas que estão desenvolvidas e especificadas há mais de uma década.
Um possível problema seria de que as pessoas estão dizendo que usam REST quando na verdade apenas usam XML passando por HTTP, o chamadoPOX ( Plain Old XML, um primo do POJO). Este processo é exatamente a mesma coisa que utilizar SOAP com HTTP, exceto pelo fato de que o XML é personalizado (ao invés de 500 envelopes, um dentro do outro) e que não temos umWSDL (o que provavelmente é ruim).
Bom, a pergunta do Maurício é: isso é ruim? A resposta você já sabe: depende, mas depende do quê?
Quando se usa WebServices SOAP ou REST o que se quer é ter uma interface padronizada para um serviço. Há décadas nós temos serviços distribuídos sendoamplamente utilizados, o motivo de existir SOAP e outros é padronizar este ecossistema. Quando você padroniza algo como o protocolo de interface remota de todas as aplicações obviamente você vai pagar um preço em eficiência. Uma aplicação que segue um protocolo genérico como HTTP provavelmente não será tão eficiente em comunicação remota quanto um que segue um protocolo específico e especializado.
A partir do momento que você resolve utilizar uma interface genérica você assina um contrato. Se você me disser que seu sistema éRESTful eu tenho certeza que se eu fizer a requisição de um objeto inexistente seu sistema irá retornar um código de erro 404, e não um código 200 com um XML bonitinho e uma mensagem de erro. 200 pra mimsignifica uma só coisa: “Ok, o objeto existe e seu conteúdo segue no corpo da mensagem”.
Ao fazer POX você quebra esta regra. Pode ser que seu sistema seja simples e que definir um mini-protocolo baseado em POX seja uma ótima solução, mas você acaba de inventar seu próprio padrão, que é exatamente o que o uso de WebServices tenta evitar. Mesmo para sistemas legados com seus próprios padrões (coisinhas em COBOL, por exemplo), nós temos oESB como tecnologia que converte mensagens para um formato intermediário, de modo que não sejam criados seus próprios padrões. A idéia por trás de REST não é abolir padrões mas sim ter uma especificação simples e eficiente, com um mínimo de primitivas e máxima extensibilidade.
Enquanto não volto para Paraty posso ler seus posts inteiros. Lá em Paraty com dificuldades de acesso à Internet não dá para ler blogs em que cada post precisa navegar por 2 páginas.
Você gosta mesmo disto? Parece jornal do tempo do onça que colocava um trechinho na primeira página com um “segue na página 23″
Um abraço
É porque eu escrevo muito e não dá pra ver as manchetes dos posts, eu imagino que as pessoas não vão ler os outros abaixo se não forem até o final do primeiro.
Mas é um bom ponto o seu…
Sem contar que, no mundo enterpriseyy, se tu chegar pro cara da *coloque aqui sua consultoria de 3 letrinhas favorita* e disser que a integração do seu sistema ERP megalomaníaco sera feita em REST ele vai fazer aquela cara de “einh?!”.
Certo, também acho que escreve posts longos.
Mas como escreve bem, gosto de ler e faço isto desde os tempos do blog em inglês. Melhor ler um post longo bem escrito e que faça sentido do que ler um post curto cheio de links para todo lado e que não faz sentido sem visitar todos os links.
Phillip, existe um “substituto” (não queria usar essa palavra, mas enfim) para o WSDL no mundo REST, o WADL, que serve como um descritor para o estilo REST de arquitetura.
Existe até uma ferramenta de geracão e teste de WADL.
Ignore se eu já estiver falando algo que vc já sabe (o que é bem provável :-))
[...] Fragmental » POX x REST: Interfaces Padronizadas (tags: rest) [...]