Pergunta

Meu provedor de webservice me dar um grande arquivo WSDL, mas vamos usar apenas alguns função dentro.

Eu acredito que a grande WSDL ter um impacto negativo para o desempenho do aplicativo.

Usamos o webservice em appliction cliente, tempo de inicialização e uso memória são questões. Grandes meios WSDL que JAX-WS vai leva mais tempo para fazer a ligação e toma mais memória para a classe de stub.

Será que é possível que cortar arquivo WSDL para uma versão leve? Há qualquer ferramenta para este fim?

Eu não acho que o meu provedor webservice irá gerar outra WSDL para nós. Podemos ter de fazê-lo auto no script de construção .

Foi útil?

Solução

Em suma, suas respostas são "Nenhuma ferramenta, mas você pode DIY".

Eu desejo que existem ferramenta simples pode fazê-lo porque o meu WSDL contém demasiados função não utilizado e esquema de estrutura de dados.

Se eu pode automatizar isso, WSDL -> WSDL aparadas -> gerar classes stubs cliente. Nada não utilizado será gerado, não mau uso, há manutenções necessárias, não vamos tocar no código gerado, e eu posso realmente focar o código que estiver em uso. Menor JAR, menor tempo de análise XML. Se o WSDL ficar atualizado, vou só teve que reconstruir stubs cliente aulas e teste de unidade de execução.

Eu tentei manter fora de humano invocado. Leva tempo, fácil de obter erro, e ter que refazer toda vez que cada pequena mudança no WSDL originais.

Eu não estou familiarizado com o esquema WSDL. Estou pensando ele pode ser feito por XSLT?

Outras dicas

O tamanho do WSDL terão impacto zero no desempenho ... a menos que você está baixando-o e / ou analisá-lo para cada pedido. E se você estiver fazendo o último, não. Ele só precisa de ser processado quando as alterações de serviço, eo serviço deve sempre mudar a compatibilidade, com o apoio contínuo de mensagens antigas (pelo menos por algum período de tempo sobrepostos).

Você deve considerar o processamento de um WSDL para ser uma mudança de programa, e fazê-lo como faria com qualquer versão, com controle de versão, e testar, etc.

O problema não é com o tamanho do próprio WSDL. É o tamanho do código gerado que importa. Por exemplo, se você usar Axis2 para gerar o código a partir de uma grande WSDL, você acaba criando uma classe Request / Response para cada operação WSDL, bem como as classes de seus tipos de retorno. Você iria acabar com uma enorme classe de stub mais tarde, o que poderia afetar o desempenho, uma vez que iria importar classes que são exigidos por operações de serviços web que você não precisa.

Não há nenhuma ferramenta fácil de fazer isso. Eu costumo usar o Notepad ++ para fazer isso, e sim, você sempre pode cometer erros ao fazê-lo.

Outro erro comum é escolher para gerar ambos os métodos de estilo síncrona e assíncrona, quando a maior parte do tempo (no meu caso, pelo menos), você só usaria métodos estilo de sincronização. Isto poderia aumentar dramaticamente o tamanho de seu toco bem.

Eu não usei as ferramentas que você está falando, mas você pode executar com sucesso métodos de serviço web sem o código nunca tocar um arquivo WSDL.

Este parece ser um bom momento para executar um teste rápido. Cut tudo a partir do arquivo WSDL, exceto o que você precisa executar um dos métodos mais simples que você pretende usar. Referência que cópia do WSDL em seu lugar. Se funcionar, você sabe o que fazer a seguir!

Não há necessidade de cortar o WSDL. Se você está determinado a ir por este caminho, qualquer coisa simplesmente apagar nas classes stub que você não precisa. Apenas certifique-se de testá-lo como você vai ter certeza de que tudo ainda está funcionando.

Você poderia simplesmente remover manualmente as elementos correspondentes aos métodos que você não precisa e ver se isso é suficiente. Você deve ser capaz de remover esses elementos sem tocar no resto do arquivo.

O físico tamanho do WSDL não deve importa se você gerar stubs cliente aulas em tempo de compilação (por exemplo, através AXIS wsdl2java.) Se você está baixando o WSDL e analisá-lo para cada solicitação, em seguida, o download tempo provavelmente vai anão o tempo de análise. Considere cache o arquivo localmente, se o tempo de download se torna um problema. Se o tempo de análise torna-se um problema que você pode querer considerar aparar o arquivo ou cache os objetos analisados. Tenha cuidado ao armazenar em cache ou aparar o arquivo como você vai precisar para integrar as alterações quando seus problemas de provedor de um novo WSDL. Considere atualizar seu cache / WSDL aparado cada vez que o serviço é reiniciado ou em algum intervalo.

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