Estrategia para interoperabilidade entre versoes para um web service

5 respostas
A

Fala Galera,

Sem entrar em detalhes muito tecnicos, gostaria de saber que estrategia voces estao usando para fazer interoperabilidade entre versoes de um mesmo webservice. Por exemplo: Tenho na versao 1.0 do meu software um webservice que prove a comunicacao entre meu cliente 1.0 e meu servidor 1.0. Para a versao 2.0 do software, eu vou adicionar um novo parametro ao metodo e eu gostaria que meu cliente 1.0 fosse capaz de acessar o meu servidor 2.0 e vice versa.

Opcoes pensadas:

  1. Criar um novo endpoint a cada versao - assim se nao consigo acessar a versao mais nova (2.0) eu tento acessar a versao mais velha (1.0). Questao: Isso nao seria problematico em relacao a redes - esperar um time out para um endpoint pode demorar um tempo excessivo.
  2. Criar um novo namespace dentro de um mesmo endpoint, assim nao tem time-out. Assim teriamos um novo namespace para cada versao no mesmo endpoint. Isso me parece possivel mas nao tenho certeza - estou usando JEE 5.
  3. (Nojento) Usar um servico que passa um Object[]<String key,String value> e retorna um Object[]<String key,String value> - passar um atributo versao, assim podemos saber que versao estamos usando. Isso me parece nojento, procedural e trabalhoso - tenho que reconstruir a cada request os objetos outra vez para utiliza-los.

E entao, o que voces tem feito quanto a este problema ?

Me perdoem quanto aos acentos - nao estou no Brasil e aqui nao tem teclado com acentos.
Abracos,
Alan

5 Respostas

pcalcado

Tem que ser SOAP?

REST com versão em um cabeçalho HTTP resolve isso mole.

A

Fala philip,

O problema eh que tenho que usar JEE 5 (SAP NetWeaver - :frowning: ) - nao tem como usar um framework externo REST and a gente nao tempo suficiente para desenvolver algo interno. Assim acho que a resposta eh sim, tem que ser SOAP.

Mas a sua solucao do cabecalho nao seria algo parecido com a terceira solucao proposta por mim - passar um Object[]<String,String>, com um atributo versao, como parametro do metodo web service ? Como voce faria em SOAP ?

Valeu !
Alan

pcalcado

Faz tanto tempo que eu não faço nad aem SOAP que não sei. Deve ter uma especificação para isso, não?

C

Em rest pode também usar a versao na url, o que seria parecido com a sua opcao dois. A diferenca é a maneira SOAP de se fazer a coisa, que é complexa até pra coisas simples.

A

So para complementar encontrei a seguinte pagina (http://docs.codehaus.org/display/XFIRE/Versioning) no blog do XFire falando sobre isso. Acho que eh a unica fonte da internet falando sobre esse problema.

Criado 25 de fevereiro de 2008
Ultima resposta 25 de fev. de 2008
Respostas 5
Participantes 3