Pergunta

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

Foi útil?

Solução

Tenha em mente, eu estou completamente tendenciosa (PMC Presidente do CXF), mas meus pensamentos:

A partir de um estritamente "pode ??o projeto fazer o que eu preciso fazer" perspectiva, ambos são muito equivalentes. Há algumas coisas "caso extremo" que CXF pode fazer isso Axis 2 não e vice-versa pode. Mas para 90% dos casos de uso, nem vai funcionar bem.

Assim, ele se resume a um monte de outros que não "recursos de caixa de seleção" coisas.

  • API - CXF empurra "baseada em padrões" (JAX-WS compatível), enquanto Axis2 geral da API vai para coisas proprietárias. Dito isto, mesmo CXF pode exigir usos da proprietária API do que configure / controlar várias coisas fora da especificação JAX-WS. Para REST, CXF também usa (JAX-RS compatíveis) da API padrão em vez de coisas proprietárias. (Sim, eu estou ciente do tempo de execução JAX-WS em Axis2, mas o ferramental e docs e tudo não destiná-las)

  • aspectos comunitários e suportabilidade - orgulhos CXF-se de responder a questões e fazendo "fixpacks" disponível para os usuários. CXF fez 12 fixpacks para 2.0.x (lançado há dois anos, por isso a cada 2 meses), 6 fixpacks para 2.1.x, e agora 3 para 2.2.x. Axis2 realmente não "apoio" versões mais antigas. A menos que uma questão "crítica" é atingido, você pode ter de esperar até o próximo grande lançamento (que em média a cada 9-10 meses ou assim) para obter correções. (Embora, com qualquer um, você pode pegar o código fonte e patch / corrigir-se. Tem que amar open source).

  • Integração - CXF tem muito melhor integração da Primavera se você usar o Spring. Toda a configuração e tal é feito através da mola. Além disso, as pessoas tendem a considerar CXF como mais "embutido" (Eu nunca olhou para Axis2 a partir dessa perspectiva) em outras aplicações. Não tenho certeza se essas coisas são importantes para você.

  • Performance - ambos executar muito bem. Eu acho que a ligação de dados ADB proprietária da Axis2 é um pouco mais rápido do que CXF, mas se você usar JAXB (baseada em padrões API de novo), CXF é um pouco mais rápido. Ao usar cenários mais complexos como WS-Security, a segurança "motor" subjacente (WSS4J) é o mesmo para ambos assim que o desempenho é completamente comparáveis.

Não tenho certeza se isso responde a pergunta. Espero que, pelo menos, fornece algumas informações.

: -)

Dan

Outras dicas

  • Axis2 :. Mais onipresente no mercado, suportes mais ligações, suporta outras linguagens como C / C ++
  • CXF :. Muito mais fácil de usar, mais Primavera amigável, de apoio mais rápido ficou por algum WS- * extensões

Mais uma coisa é a atividade da comunidade. Compare o tráfego da lista de discussão para o eixo e cxf (2013).

Assim, se este é um indicador de uso de eixo, em seguida, é de longe menos usado do que cxf.

Compare estatísticas CXF e do Eixo em Ohloh. CXF tem atividade muito alta enquanto Axis tem baixa actividade global.

Este é o gráfico para o número de commits ao longo do tempo para CXF (vermelho) e Axis1 (verde) Axis2 (azul). enter descrição da imagem aqui

As vantagens de CXF:

  1. CXF suportes para WS-Addressing, WS-Policy, WS-RM, WS-Security e WS-I BasicProfile.
  2. implementos CXF JAX-WS API (de acordo com por JAX-WS 2.0 TCK).
  3. CXF tem melhor integração com Spring e outras estruturas.
  4. CXF tem alta capacidade de extensão em termos de sua estratégia de interceptor.
  5. CXF possui recursos mais configurável através do API em vez de arquivos XML pesados.
  6. CXF tem ligações:. SOAP, REST / HTTP, e sua Ligações de dados suporte JAXB 2.0, Aegis, por padrão, ele usa JAXB 2.0 e mais perto especificação padrão Java
  7. CXF tem conjuntos de ferramentas, por exemplo abundantes Java para WSDL, WSDL para Java, XSD para WSDL, WSDL para XML, WSDL para SOAP, WSDL para o serviço.

As vantagens do Axis2:

  1. Axis2 também suporta WS-RM, WS-Security e WS-I BasicProfile exceto para WS-Policy, espero que ele será suportado em uma versão futura.
  2. A Axis tem mais opções para ligações de dados para o seu escolhe
  3. Axis2 suporta múltiplos idiomas, incluindo-a versão C / C ++ e versão Java.
  4. Axis2 suporta uma ampla gama de ligações de dados, incluindo XMLBeans, JiBX, JaxMe e JaxBRI, bem como os seus próprios dados nativos de ligação, ADB. história mais longa do que CXF.

Em resumo: Dos itens vantagem acima, ele nos leva a uns bons pensamentos para comparar Axis2 e CXF por seus próprios méritos. todos eles têm diferentes áreas desenvolveram-bem em um determinado campo, CXF é muito configurável, integrável e tem kits de ferramentas ricas apoiados e perto de comunidade Java, Axis2 tomou uma abordagem que torna, em muitos aspectos se assemelham a um servidor de aplicativos em miniatura. é através de múltiplas linguagens de programação. porque a sua independência, Axis2 presta-se para os serviços web que ficar sozinho, independente de outras aplicações, e oferece uma ampla variedade de funcionalidade.

Como um desenvolvedor, é preciso conferir nossa perspectiva para escolher o caminho certo, o que quadro que você escolher, você terá o benefício de uma comunidade open source ativo e estável. Em termos de desempenho, eu fiz um teste com base a mesma funcionalidade e CONFIGED no mesmo recipiente web, os shows de resultados que CXF realizados pouco melhor do que Axis2, o único caso pode não refletir exatamente as suas capacidades e desempenho.

Em alguns artigos de pesquisa, revela que a ligação de dados ADB proprietária da Axis2 é um pouco mais rápido do que CXF, uma vez que não tem recurso adicional (WS-Security). Apache Axis2 é relativamente mais utilizado framework mas dezenas Apache CXF sobre outros Web Services Framework comparativamente considerando a facilidade de desenvolvimento, tendência atual da indústria, desempenho, scorecard geral e outros recursos (a menos que haja suporte Web Services Orchestration é explicitamente necessário, o que não é necessária aqui )

De acordo com a minha experiência CXF é bom em termos de configurá-lo para o ambiente de Primavera. Também as classes geradas são simples de entender. E como é mais ativa, temos um suporte melhor em comparação com AXIS ou Axis2.

Outra vantagem do CXF: ele se conecta a servidores Web que usam autenticação NTLMV2 fora da caixa. (Usado pelo Windows 2008 e para cima) Antes de usar CXF, eu hackeado Axis2 usar HTTPClient V4 + JCIFS para tornar isso possível.

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