Quais são as vantagens de usar o Apache CXF sobre o Apache Axis e vice-versa?
Lembre-se, sou completamente tendencioso (Presidente do PMC da CXF), mas meus pensamentos:
De uma perspectiva estritamente "o projeto pode fazer o que eu preciso", ambos são bastante equivalentes. Existem algumas coisas que o CXF pode fazer que o Axis 2 não pode e vice-versa. Mas, para 90% dos casos de uso, ambos funcionarão bem.
Portanto, tudo se resume a outras coisas além de "recursos da caixa de seleção".
API - O CXF envia APIs "baseadas em padrões" (compatíveis com JAX-WS), enquanto o Axis2 geral é direcionado a itens proprietários. Dito isto, mesmo o CXF pode exigir o uso de APIs proprietárias para configurar / controlar várias coisas fora da especificação JAX-WS. Para o REST, o CXF também usa APIs padrão (compatíveis com JAX-RS) em vez de itens proprietários. (Sim, eu conheço o tempo de execução do JAX-WS no Axis2, mas as ferramentas e os documentos e tudo o mais não o destinam)
Aspectos e suporte da comunidade - O CXF se orgulha de responder a problemas e de disponibilizar "fix packs" para os usuários. O CXF fez 12 fixpacks para o 2.0.x (lançado há dois anos, aproximadamente a cada 2 meses), 6 fixpacks para o 2.1.xe agora 3 para o 2.2.x. O Axis2 realmente não "suporta" versões antigas. A menos que um problema "crítico" seja atingido, você pode precisar esperar até o próximo grande lançamento (em média a cada 9 ou 10 meses) para obter as correções. (embora, com qualquer um dos dois, você possa pegar o código-fonte e corrigir / se corrigir. Precisa adorar o código-fonte aberto.)
Integração - O CXF possui uma integração muito melhor ao Spring se você usar o Spring. Toda a configuração e tal é feita através do Spring. Além disso, as pessoas tendem a considerar o CXF como mais "incorporável" (nunca vi o Axis2 dessa perspectiva) em outros aplicativos. Não tenho certeza se coisas assim são importantes para você.
Desempenho - ambos desempenham muito bem. Eu acho que a ligação de dados ADB proprietária do Axis2 é um pouco mais rápida que o CXF, mas se você usar JAXB (APIs baseadas em padrões novamente), o CXF será um pouco mais rápido. Ao usar cenários mais complexos como o WS-Security, o "mecanismo" de segurança subjacente (WSS4J) é o mesmo para ambos, portanto o desempenho é completamente comparável.
Não tenho certeza se isso responde à pergunta. Espero que pelo menos forneça algumas informações.
:-)
Dan
fonte
Mais uma coisa é a atividade da comunidade. Compare o tráfego da lista de discussão para o eixo e cxf (2013).
Portanto, se esse é um indicador de uso, o eixo é muito menos usado que o cxf.
Compare as estatísticas CXF e Axis em ohloh . O CXF possui uma atividade muito alta, enquanto o Axis possui uma atividade geral baixa.
Este é o gráfico do número de confirmações ao longo do tempo para CXF (vermelho) e Eixo1 (verde) Eixo2 (azul).
fonte
As vantagens do CXF:
As vantagens do Axis2:
Em resumo: dos itens de vantagem acima, leva-nos a pensar em comparar o Axis2 e o CXF por seus próprios méritos. todos eles têm áreas diferentes e bem desenvolvidas em um determinado campo, o CXF é muito configurável, integrável e possui ricos kits de ferramentas suportados e próximos à comunidade Java; o Axis2 adotou uma abordagem que faz com que pareça, em muitos aspectos, um servidor de aplicativos em miniatura. é através de várias linguagens de programação. devido à sua independência, o Axis2 se presta a serviços da web independentes, independentes de outros aplicativos, e oferece uma ampla variedade de funcionalidades.
Como desenvolvedor, precisamos concordar com nossa perspectiva de escolher a correta, qualquer que seja a estrutura escolhida, você terá o benefício de uma comunidade de código aberto ativa e estável. Em termos de desempenho, fiz um teste com base na mesma funcionalidade e configurei no mesmo contêiner da Web, o resultado mostra que o CXF teve um desempenho um pouco melhor que o Axis2, o caso único pode não refletir exatamente suas capacidades e desempenho.
Em alguns artigos de pesquisa, ele revela que a ligação de dados do ADB proprietária do Axis2 é um pouco mais rápida que o CXF, pois não possui recursos adicionais (WS-Security). O Apache AXIS2 é a estrutura relativamente mais usada, mas o Apache CXF pontua em relação a outra Web Services Framework, comparativamente, considerando a facilidade de desenvolvimento, a tendência atual do setor, o desempenho, o scorecard geral e outros recursos (a menos que haja suporte explicitamente necessário à Web Orchestration, o que não é necessário aqui) )
fonte
De acordo com minha experiência, o CXF é bom em termos de configuração no ambiente Spring. Também as classes geradas são simples de entender. E, como é mais ativo, obtemos melhor suporte em comparação com o AXIS ou o AXIS2.
fonte
Outra vantagem do CXF: ele se conecta a servidores da Web usando a autenticação NTLMV2 pronta para uso. (usado pelo Windows 2008 e superior) Antes de usar o CXF, cortei o Axis2 para usar o HTTPClient V4 + JCIFS para tornar isso possível.
fonte