Confronto fra web services framework (open source)

40
Confronto fra web services framewok (open source) Alberto Lagna [email protected]

description

 

Transcript of Confronto fra web services framework (open source)

Page 1: Confronto fra web services framework (open source)

Confronto fra web services framewok (open source)

Alberto Lagna

[email protected]

Page 2: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

>apropos alberto.lagna

• Laureato in informatica, master in telecomunicazioni.• Consulente indipendente, lavoro come architetto

software.• Fornisco consulenza nel design e lo sviluppo di sistemi

enterprise basati su java EE e XML.• Ho un esperienza di più di 10 anni nella realizzazione di

soluzioni ad oggetti distribuiti.• membro del JUGTORINO• Promuovo l’uso di software libero e supporto il

movimento open source.

Page 3: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Due parole sul JUG

• Nasce dall'idea di alcuni appassionati di programmazione e Java nel “lontano” febbraio 2002. Ora siamo più di 200 iscritti

• Lo scopo è quello di favorire l'interscambio di conoscenze informatiche e creare un punto di riferimento nel panorama degli sviluppatori Java in Italia

• La partecipazione alle attività e del tutto gratuita e libera

• Il JUG gestisce, una serie di attivita’ tra cui meeting, scrittura di articoli e review di libri per note case editrici

Page 4: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Agenda

• Il problema

• I requisiti per la soluzione

• Confronto fra framework

• Il mio parere

• Riferimenti

• D&R

Page 5: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

“… come la notte in cui tutte le mucche sono nere”

Georg Wilhelm Friedrich Hegelprefazione alla Fenomenologia

dello Spirito

Page 6: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Il problema

• Scenario

Page 7: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Il problema

• Impedance mismatch– Dovuto alla remotizzazione– Tra domini– Tra tecnologie

Page 8: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Il problema

• Gli attori in gioco

Page 9: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• In un sistema enterprise (SOA?)– POJO / XML web services– Standard

• WCF, WS-*, JAX-WS 2.0 e JAXB

– Interoperabilità • doc/lit, a supporto di una risposta complessa

– OpenSource, IDE plugin– MTOM/XOP– JSON, REST

Page 10: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• POJO ws– Sono server e voglio esporre esattamente il

dominio– Problema

• il dominio è un albero• L’XML è un grafo

=> non tutti i fwk sono in grado di “alberizzare” un grafo

– Importante wrapping off-the shelf di un’applicazione esistente

Page 11: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• XML ws– Sono client

• devo colmare il gap con il dominio del server che consumo

• Consumo un WSDL con schema non ad oggetti– Derivante da cattivo disegno– Derivante da binding legacy (PHP, dotNET :) )

– Sono server e voglio semplificare il dominio che espongo

– Importante ricchezza di data binding

Page 12: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

Page 13: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• WS Standard– WCF ne supporta molti

• WS-Addressing– formato id messaggi, indirizzi target, azioni

• WS-SecureConversation– encrypting simmetrico

• WS-ReliableMessaging– delivery garantita dei messaggi

• WS-Coordination– protocollo per coordinare applicazioni distribuite

• WS-AtomicTransaction– 2 phase commit su SOAP

• WS-Policy– estensioni al WSDL per supportare i svc di sopra

– I framework java li devono supportare• Per essere interoperabili, per supporto enterprise

Page 14: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• Interoperabilità– WS-I

• an open industry organization chartered to promote ws interoperability

• Basic security profile, a guide for making sure Web services are secure and interoperable.

– Supporto al doc/lit per permettere lo scambio di messaggi complessi

Page 15: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• Supporto doc/lit – per permettere lo scambio di messaggi complessi– rpc/enc approach

• easily exposes simple method calls as web services• model method calls with parameters encoded in XML• creates problems for interoperability, especially with more complex data

structures. • has been effectively deprecated by WS-I BP, and replaced by the doc/lit

approach.

– doc/lit approach• focuses on the actual XML data being • uses W3C XML Schema definitions to fix the XML data formats• up to the participants of interaction to process the XML messages as appropriate

to their needs.

D. Sosnosky

Page 16: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• MTOM – Message Transmission Optimization

Mechanism– Ottimizzazione dei messaggi SOAP– Implementata da XOP (XML-binary

Optimized Packaging) – Importante per interoperabilità e

ottimizzazione negli attachment

Page 17: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• JSON– JavaScript Object Notation– Alternativo alla rappresentazione di oggetti in XML– Basato su JavaScript, ma ne è indipendente– Molto utilizato da GUI AJAX per la semplicità:

• Basta chiamare eval() sulla struttura{ "type": "menu", "value": "File", "items": [ {"value": "New", "action": "CreateNewDoc"}, {"value": "Open", "action": "OpenDoc"}, {"value": "Close", "action": "CloseDoc"} ]}

Page 18: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• REST– Representational State Transfer– The web is populated of resources (sources of specific

information) that can be referred to using a global identifier (a URI). In order to manipulate them, components of the network (clients and servers) communicate via a standardized interface (e.g. HTTP) and exchange representations of these resources.

– Alternativo a SOAP– Grande numero di applicazioni Ajax, mashUp lo richiedono– Standard de facto (Google, Amazon, eBay, Flickr, …)

• Piccola demo• http://www.flickr.com/services/api/

Page 19: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• DEMO – Se leggete questa riga vuol dire che siete

ancora svegli – REST API di Flickr

• http://www.flickr.com/services/api/

Page 20: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

I requisiti per la soluzione

• Java standard– JAX-WS 2.0

• Evoluzione di JAX-RPC• Supporto annotation• Migliorato supporto agli schemi utilizzando

JAXB 2.0 binding

Page 21: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

La terza generazione dei framework

• Migliorato supporto per doc/lit – diventato mandatorio

• WS-* standard implementati• Ridisegno architetturale

– migliorate performance

• Abbandonato rpc/enc che produceva un xml non usabile

• Supporto REST

Page 22: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Confronto

• Intro dei framework

• Feature matching

• Documentazione disponibile

• Lavori disponibili

• Traffico mailing list

• Maturità/supporto

Page 23: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Introduzione ai fwk

• Axis 2– un application server in miniatura– pluggability di estensioni– hot deploy– flessibilità a runtime– disegnato attorno ad AXIOM (AXIs Object

Model)– multilanguage (C e java)

Page 24: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Introduzione ai fwk

• Apache CXF– Nato dal merge dei progetti Xfire e IONA Celtix– Main focus

• Facilità d’uso, API semplici per un rapido startup nello sviluppo• Supporto agli standard• Integrazione con Spring

– Molti programming models• JAX-WS annotation e senza• Contract first e Java first

– Integrazione con legacy• Non XML bindings come JSON e CORBA• Trasporti diversi (HTTP/S, JMS, local, IIOP)

Page 25: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Introduzione ai fwk

• JiBXSoap– Costruito attorno al JiBX data binding

• MOLTO accurato

– Sviluppato per supportare solo doc/lit– Molto performante

• Da 3 a 5 volte più veloce di Axis2 doc/lit• Fino a 20 volte più veloce di Axis2 rpc/enc

– Miglior supporto per approccio Bottom-up

Page 26: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Introduzione ai fwk

• Spring WS– “make a best practice an easy practice”– Supporto al solo contract first (top down)– Moltissime

• API XML (XML WS) • data binding (POJO WS)

– Spring nativo

Page 27: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Introduzione ai fwk

• JBoss WS– Stack nativo + supporto a CXF– Pluggable WS stack su JBoss

Page 28: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Feature: approccio sviluppo

Axis2 CXF JiBXSoap SpringWS

JBoss WS

Top down ok ok ok ok ok

tooling Non ben doc

raffinato Il migliore maven ok

Bottom up

ok ok ok no ok

tooling ok raffinato Il migliore no ok

Page 29: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Feature: supporto standard

Axis2 CXF JiBXSoap Spring WS JBoss WS

JAX-WS Su AXIOM nativo nativo Più vicino a JAXM

ok

JAXB annotation

sperimentale Generato da tool

ok ok ok

Supporto a nuovi

Tramite modulo Arch flessibile Quelli che chiedono utenti

WSDL 2.0 ok

Security ok ok Integraz acegi ok

Addressing ok ok ok

ReliableMessaging

ok ok

Policy ok

MTOM/XOP Nativo in AXIOM

ok ok ok

Page 30: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Feature

Axis2 CXF JiBXSoap Spring WS JBoss WS

trasporti HTTP/S, JMS, TCP, SMTP/POP, XMPP

HTTP/S, JMS, local, IIOP

HTTP HTTP HTTP

interop Partecipato a molti eventi

WS-I basic profile

Garantita da contract first

Partecipato a molti eventi

POJO ws Doc e anche in spring

Uno dei main focus

Con annotation Con annotation

Data binding(XML ws)

ADB, XMLBeans, JiBX, JaxMe, Castor (sperim)

JAXB e Aegis supportano il 99,99% degli schemi

Solo JiBX, ma molto raffinato

DOM, jDOM, dom4j, XOM, SAX, StAX, XPATH, JAXB, Castor, XMLBeans, JiBX, XstreamTROPPI

SOM, JAXB, SAAJ

Performance StAX pull parser di AXIOM

Streaming XML con perf simili a RMI

migliori

Page 31: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Feature

Axis2 CXF JiBXSoap Spring WS JBoss WS

REST Xml over http

http binding di WSDL 2.0

POX

REST via annotation

In programma

Maturità Usato in molti progetti OS

Incubator di apache

Usato in molti progetti OS anche ESB

alpha ok ok

Sponsor

Doc buona ottima ottima buona buona

Lavori USA

(monster.com)

50 22 2 3 0

Traffico ML

2007

12k 3,5k 3,5k 1,2k

forum

3k

forum

Page 32: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Il mio parere

• Ognuno dei framework ha delle peculiarità

• Scelgo quello che soddisfa i miei requisiti (risolve i miei problemi)

Page 33: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Il mio parere

• Scelgo quello che soddisfa i miei requisiti– Axis 2

• Flessibilità a runtime

– Apace CXF• LA Soluzione standard

– JiBX Soap• XML WS con schema complesso

– Spring WS• Esporre applicazione spring

– JBoss WS• Ho uno stack JBoss

Page 34: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Riferimenti

• Hegel– Prefazione alla Fenomenologia dello Spirito.– http://it.wikiquote.org/wiki/

Georg_Wilhelm_Friedrich_Hegel– http://www.class.uidaho.edu/mickelsen/

texts/Hegel%20Phen/hegel_phen_preface.htm

Page 35: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Riferimenti

• Framework– Axis 2 http://ws.apache.org/axis2/– Apache CXF http://incubator.apache.org/cxf/– JiBX Soap http://jibx.sourceforge.net/jibxsoap/– Spring WS

http://static.springframework.org/spring-ws/site/– JBoss WS http://labs.jboss.com/jbossws/

Page 36: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Riferimenti

• Standard– WS-Addressing

• http://www.w3.org/Submission/ws-addressing/

– WS-Secure Conversation• http://docs.oasis-open.org/ws-sx/ws-

secureconversation/200512/ws-secureconversation-1.3-os.html

– WS-Coordination• http://docs.oasis-open.org/ws-tx/wstx-wscoor-1.1-spec-

os/wstx-wscoor-1.1-spec-os.html

Page 37: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Riferimenti

• Standard– WS-AtomicTransaction

• http://docs.oasis-open.org/wstx/wsat-1.1-spec-wd-01.doc

– WS-Policy• http://www.w3.org/Submission/WS-Policy/

– WS-I Basic Security Profile• http://www.ws-i.org/Profiles/

BasicSecurityProfile-1.0.html

Page 38: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Riferimenti

• Standard– MTOM/XOP

• http://www.w3.org/TR/soap12-mtom/

– JSON• http://it.wikipedia.org/wiki/JSON

– REST• http://en.wikipedia.org/wiki/

Representational_State_Transfer

Page 39: Confronto fra web services framework (open source)

Confronto fra web services framework (open source)

Riferimenti

• Articoli– The year ahead in Java Web services– Digging into Axis2: AXIOM– Axis2 Data Binding– Axis, Axis 2 and CXF Surveying the Ws landscape– Expose Your POJO-Based Domain Apps as Web

Services– Web Services Stack Comparison– http://del.icio.us/alagna/webservice