Qual é a melhor abordagem para serviços web - contrato primeiro ou o último contrato?

StackOverflow https://stackoverflow.com/questions/763827

  •  11-09-2019
  •  | 
  •  

Pergunta

Qual é a melhor abordagem para o desenvolvimento de serviços web; contrato primeiro ou o último contrato?
Quais são as vantagens e desvantagens de cada um?

O que você tem experiência com?

Editar Esta pergunta é sobre a implementação de um serviço de web (leia-se: SOAP) A questão é se as classes de implementação deve ser codificado primeiro eo WSDL e esquema XSD gerado a partir desse (último contrato) ou o WSDL e esquema XSD escrito em primeiro lugar e as classes de implementação gerado (contrato primeiro)

Foi útil?

Solução

Contract-primeiro é o geralmente aceite 'melhores práticas'.

Isso faz você ser muito claro tanto com o produtor e consumidor do serviço exatamente o que é necessário eo que é esperado. Isto torna-se especialmente importante quando você começar a tentar converter tipos de Java -> tipos XML. Você também é capaz de reutilizar esquemas em todo serviço web diferente.

Outras dicas

Eu usei ambas as abordagens. Minha sugestão é usar primeiro contrato esquema, mas código primeiro WSDL.

Criação de um arquivo WSDL tem um monte de nuances estranhas como ligações, portas e tal. Prefiro ter este feito por ferramentas em vez de com a mão. Existem ferramentas para ajudar a fazer isso, mas nenhum deles é mais simples do que

@WebService
public ...

No mínimo, você pode verificar sua implantação.

Para o esquema, eu sugeri primeiro contrato porque a linguagem XML Schema é muito mais rico do que o que você pode descrever em Java. Um exemplo que eu costumo dar é mostrar que XML Schema pode restringir o tamanho de uma string e aplicar um padrão de expressão regular. Fazer isso em Java e anotações se parece mais confusa bit.

Outra vantagem de fazer o esquema como primeiro contrato é a presença de ferramentas para converter o arquivo de esquema na documentação HTML.

A ferramenta XJC pode gerar os arquivos de classe necessários. No entanto, eu só recomendo fazer isso no início.

No final, você deve levar o arquivo WSDL gerado e trabalhar com isso em seu lugar. Dessa forma, você pode usar wsimport e verificar se a coisa toda de WSDL para Schema é válido.

Você pode implantar com o arquivo WSDL usando o atributo wsdlLocation em sua implementação @WebService eo servidor de aplicativos irá corrigir a ligação de dados para você quando os usuários solicitarem o WSDL do servidor, mas você ainda mantêm suas anotações. Caso contrário, suas anotações não vai aparecer nos arquivos WSDL solicitados.

Eu suspeito que a resposta é um definitivo "depende".

A questão é que se você construir e publicar seu contrato, você é obrigado por ela. Isso faz com que a mudança mais difícil. não impossível, mas difícil.

Por outro lado, é mais rápido para mexer com o contrato que com código, se você está confortável com esquemas etc Então, você pode fazer alguma mudança incremental no contrato.

Não existem também ferramentas que irão gerar um esqueleto de código do WSDL? Tenho quase certeza que existem. Se assim for, você pode fazer bem para fazer os esquemas do "código" item, e gerar o código a partir dele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top