Diferença entre Apache CXF e Axis
Pergunta
Quais são as vantagens de usar o Apache CXF sobre Apache Axis e vice-versa?
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).
- Axis usuário 50-100 mails por mês
- CXF usuário 400-500 mails por mês
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).
As vantagens de CXF:
- CXF suportes para WS-Addressing, WS-Policy, WS-RM, WS-Security e WS-I BasicProfile.
- implementos CXF JAX-WS API (de acordo com por JAX-WS 2.0 TCK).
- CXF tem melhor integração com Spring e outras estruturas.
- CXF tem alta capacidade de extensão em termos de sua estratégia de interceptor.
- CXF possui recursos mais configurável através do API em vez de arquivos XML pesados.
- 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
- 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:
- 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.
- A Axis tem mais opções para ligações de dados para o seu escolhe
- Axis2 suporta múltiplos idiomas, incluindo-a versão C / C ++ e versão Java.
- 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.