Serviços da web baseados em documento ou RPC
-
08-06-2019 - |
Pergunta
Minha intuição é que os serviços da Web baseados em documentos são preferidos na prática - essa é a experiência de outras pessoas?Eles são mais fáceis de apoiar?(Observei que o SharePoint usa Any para o "tipo de documento" em sua interface WSDL, acho que isso o torna baseado em documento).
Além disso - as pessoas estão oferecendo serviços do tipo WSDL e Rest agora para a mesma funcionalidade?WSDL é popular para geração de código, mas para front-ends como PHP e Rails eles parecem preferir o descanso.
Solução
Documento versus RPC é apenas uma questão se você estiver usando serviços da Web SOAP que exigem uma descrição de serviço (WSDL).Os serviços web RESTful não usam WSDL porque o serviço não pode ser descrito por ele, e a sensação é que REST é mais simples e fácil de entender.Algumas pessoas propuseram WADL como uma forma de descrever serviços REST.
Linguagens como Python, Ruby e PHP facilitam o trabalho com REST.o WSDL é usado para gerar código C# (um proxy de serviço da web) que pode ser facilmente chamado a partir de uma linguagem estática.Isso acontece quando você adiciona um Referência de serviço ou Referência da Web no Visual Studio.
O fornecimento de serviços SOAP ou REST depende da população de usuários.O fato de os serviços serem usados pela Internet ou apenas dentro da sua organização afeta sua escolha.O SOAP pode ter alguns recursos (padrões WS-*) que funcionam bem para B2B ou uso interno, mas são péssimos para um serviço de Internet.
Documento/literal versus RPC para serviços SOAP são descritos neste Artigo do IBM DevelopWorks.Documento/literal é geralmente considerado o melhor para usar em termos de interoperabilidade (Java para .NET etc).Se é mais fácil apoiar, isso depende das suas circunstâncias.Minha opinião pessoal é que as pessoas tendem a tornar essas coisas mais complicadas do que o necessário, e a abordagem mais simples do REST é superior.
Outras dicas
Conforme mencionado, é melhor escolher o Literal do Documento em vez do codificado RPC sempre que possível.É verdade que as bibliotecas Java antigas (Axis1, Glue e outras coisas pré-históricas) suportam apenas codificação RPC, no entanto, nas bibliotecas Java SOAP mais modernas de hoje, simplesmente não suportam (por exemplo,EIXO2, XFire, CXF).Portanto, tente expor o serviço codificado em RPC somente se você souber que precisa lidar com um consumidor que não pode fazer melhor.Mas, novamente, talvez apenas o XML RPC possa ajudar nessas implementações legadas.
A resposta de BiranLy é excelente.Gostaria apenas de acrescentar que documento versus RPC também pode se resumir a problemas de implementação.Descobrimos que a Microsoft prefere documentos, enquanto nossas bibliotecas baseadas em Java eram baseadas em RPC.Seja qual for sua escolha, certifique-se de saber o que outros clientes em potencial também assumirão.