Tuesday, October 09, 2007

Open Source Web Services Engines: Comparativo Performance

Este artigo da SOA World Magazine traz uma comparação de vários Web Services engines que são open source. Veja na tabela abaixo os engines testados:


Os autores (Krishnendu KuntiRahul Muralidhar e Nagarani Badveeti) detalham alguns testes de performance dos engines acima. Estes testes foram baseados na capacidade de processar XMLs utilizando diferentes bidding frameworks (em adição ao bidding nativo).

Antes, do mesmo  artigo, um pouco da história dos Web Services:
  • 1a. Geração: e.g. APACHE SOAP utilizavam a API DOM e não tinham boa performance
  • 2a. Geração: e.g. Apache Axis 1.4 tinham suporte nativo para WSDL, JAX RPC e SAAJ; o problema, segundo os autores, é a limitação no que se refere à integração com "XML bidding frameworks"externos. Sào mais performáticos quando comparados aos da 1a. geração, porém ainda tem uma performance ruim em cenários de grandes "XML payloads"
  • 3a. Geração: e.g. XFire e Axis2 utilizam StAX para "processar" o XML e possuem uma arquitetura "plugável"que permite a integração com "bidding frameworks"externos, além de suportar um número maior de WS* standards
Vamos ao que interessa. Vejam abaixo alguns resultados dos testes realizados:
# de Transações por Segundo


Tempo médio de resposta de uma Transação (segundos)

Throughput: "quantidade de dados" o serviço foi capaz de enviar para o cliente em 01 segundo





Conclusão dos autores:

First, it seems obvious that the performance of third-generation SOAP engines is significantly better than that of its first- and second-generation counterparts.

It's concluded that the JibX Binding Framework offers the best performance and a great deal of flexibility through its binding definition file. However, defining bindings for complicated objects can become very cumbersome and time-consuming.

It's also concluded that XFire with JibX offers the best marshalling and un-marshalling performance, and is only marginally slower than Axis2 with JibX in round-trip performance, which can be largely attributed to the slower client-side processing by the XFire-based JibX client. XFire also seems to offer the best scalability, speed, and throughput among all test cases. Moreover, the ease of development using JibX binding with XFire over Axis2 with JibX makes this an attractive option.

However, it's worth noting that, if ease of use and development is of essence, Axis2 with ADB offers the best balance between ease and performance - Axis2 with ADB is extremely easy to use (however, it's less flexible than JibX) and offers very decent performance.

No comments: