Diferença entre Apache CXF e Axis

177

Quais são as vantagens de usar o Apache CXF sobre o Apache Axis e vice-versa?

Prabhu R
fonte

Respostas:

229

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

Daniel Kulp
fonte
10
Uma comparação recente entre aa ponto de vista WS-Security: ibm.com/developerworks/java/library/j-jws19/index.html
Daniel Kulp
Algum indicador para tornar a comunicação HTTP mais rápida ao usar o CXF em uma intranet? Conecte-se a 8 serviços da
Web
57
  • Axis2 : mais onipresente no mercado, suporta mais ligações, suporta outros idiomas como C / C ++.
  • CXF : Muito mais fácil de usar, mais amigável ao Spring, mais rápido obteve suporte para algumas extensões WS- *.
vsg
fonte
a comparação referida não está mais disponível: "Conteúdo
enviado
5
+1 para muito mais fácil de usar. IMO, CXF também é menos detalhado ao gerar as classes básicas para um cliente WS / WS a partir do WSDL. Um cliente Axis requer uma carga de código irritantemente difícil de entender e refratar, em oposição ao CXF.
Priidu Neemre 23/02
42

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). insira a descrição da imagem aqui

Christian Schneider
fonte
24

As vantagens do CXF:

  1. O CXF suporta WS-Addressing, WS-Policy, WS-RM, WS-Security e WS-I BasicProfile.
  2. O CXF implementa a API JAX-WS (de acordo com o JAX-WS 2.0 TCK).
  3. O CXF possui uma melhor integração com o Spring e outras estruturas.
  4. O CXF possui alta extensibilidade em termos de estratégia de interceptador.
  5. O CXF possui um recurso mais configurável por meio da API, em vez de arquivos XML pesados.
  6. O CXF possui Ligações: SOAP, REST / HTTP e suas Ligações de Dados suportam JAXB 2.0, Aegis, por padrão, usa JAXB 2.0 e especificações padrão Java mais próximas.
  7. O CXF possui kits de ferramentas abundantes, por exemplo, Java para WSDL, WSDL para Java, XSD para WSDL, WSDL para XML, WSDL para SOAP, WSDL para Serviço.

As vantagens do Axis2:

  1. O Axis2 também suporta WS-RM, WS-Security e WS-I BasicProfile, exceto para WS-Policy, e espero que seja suportado em uma versão futura.
  2. O Axis tem mais opções para ligações de dados para sua escolha
  3. O Axis2 suporta vários idiomas - incluindo a versão C / C ++ e a versão Java.
  4. O Axis2 suporta uma gama mais ampla de ligações de dados, incluindo XMLBeans, JiBX, JaxMe e JaxBRI, bem como sua própria ligação de dados nativa, ADB. história mais longa que CXF.

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) )

ajithparamban
fonte
2

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.

Sudip7
fonte
1

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.

user1717728
fonte