SlideShare a Scribd company logo
Confronto fra web services framewok (open source) Alberto Lagna [email_address]
>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.
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
Agenda Il problema I requisiti per la soluzione Confronto fra framework Il mio parere Riferimenti D&R
“…  come la notte in cui tutte le mucche sono nere” Georg Wilhelm Friedrich Hegel prefazione alla Fenomenologia  dello Spirito
Il problema Scenario
Il problema Impedance mismatch Dovuto alla remotizzazione Tra domini Tra tecnologie
Il problema Gli attori in gioco
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
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
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
I requisiti per la soluzione
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
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
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
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
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"} ] }
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/
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/
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
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
Confronto Intro dei framework Feature matching Documentazione disponibile  Lavori disponibili Traffico mailing list Maturità/supporto
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)
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)
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
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
Introduzione ai fwk JBoss WS Stack nativo + supporto a CXF Pluggable WS stack su JBoss
Feature: approccio sviluppo ok no Il migliore raffinato ok tooling ok no ok ok ok Bottom up ok maven Il migliore raffinato Non ben doc tooling ok ok ok ok ok Top down JBoss WS Spring WS JiBXSoap CXF Axis2
Feature: supporto standard ok ok ok Nativo in AXIOM MTOM/XOP ok Policy ok ok Reliable Messaging ok ok ok Addressing ok Integraz acegi ok ok Security ok WSDL 2.0 Quelli che chiedono utenti Arch flessibile Tramite modulo Supporto a nuovi ok ok ok Generato da tool sperimentale JAXB annotation ok Più vicino a JAXM nativo nativo Su AXIOM JAX-WS JBoss WS Spring WS JiBXSoap CXF Axis2
Feature migliori Streaming XML con perf simili a RMI StAX pull parser di AXIOM Performance SOM, JAXB, SAAJ DOM, jDOM, dom4j, XOM, SAX, StAX, XPATH, JAXB, Castor, XMLBeans, JiBX, Xstream TROPPI Solo JiBX, ma molto raffinato JAXB e Aegis supportano il 99,99% degli schemi ADB, XMLBeans, JiBX, JaxMe, Castor (sperim) Data binding (XML ws) Con annotation Con annotation Uno dei main focus Doc e anche in spring POJO ws Partecipato a molti eventi Garantita da contract first  WS-I basic profile Partecipato a molti eventi interop HTTP HTTP HTTP HTTP/S, JMS, local, IIOP HTTP/S, JMS, TCP, SMTP/POP, XMPP trasporti JBoss WS Spring WS JiBXSoap CXF Axis2
Feature buona buona ottima ottima buona Doc 3k forum 1,2k forum 3,5k 3,5k 12k Traffico ML 2007 0 3 2 22 50 Lavori USA (monster.com) Sponsor ok ok alpha Incubator di apache  Usato in molti progetti OS anche ESB Usato in molti progetti OS Maturità In programma POX REST via annotation Xml over http http binding di WSDL 2.0 REST JBoss WS Spring WS JiBXSoap CXF Axis2
Il mio parere Ognuno dei framework ha delle peculiarità  Scelgo quello che soddisfa i miei requisiti (risolve i miei problemi)
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
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
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/
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
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
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
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
D&R Alberto. [email_address] . it
Ad

More Related Content

Similar to Confronto fra web services framework (open source) (20)

Wcf data services
Wcf data servicesWcf data services
Wcf data services
Salvatore Sorrentino
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
Marcello Teodori
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
Mirco Leo
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
Dominopoint - Italian Lotus User Group
 
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
Alessandro Del Sole
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
Dominopoint - Italian Lotus User Group
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
Dominopoint - Italian Lotus User Group
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
Felice Pescatore
 
S354 php-5.x-e-my sql-5.x
S354 php-5.x-e-my sql-5.xS354 php-5.x-e-my sql-5.x
S354 php-5.x-e-my sql-5.x
LEN Learning Education Network
 
Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applications
marcocasario
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
marcocasario
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8
DotNetCampus
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni Web
Davide Bellettini
 
Oracle Apex - Presentazione
Oracle Apex - PresentazioneOracle Apex - Presentazione
Oracle Apex - Presentazione
Miriade Spa
 
Differenze tra Alfresco Community ed Enterprise
Differenze tra Alfresco Community ed EnterpriseDifferenze tra Alfresco Community ed Enterprise
Differenze tra Alfresco Community ed Enterprise
SoftInstigate
 
Introduzione ai Web Services
Introduzione ai Web ServicesIntroduzione ai Web Services
Introduzione ai Web Services
Marco Livraghi
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
Giampiero Granatella
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
Marcello Teodori
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
guestfe3e15
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Giovanni Cappellini
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
Marcello Teodori
 
Installazione del cms alfresco
Installazione del cms alfrescoInstallazione del cms alfresco
Installazione del cms alfresco
Mirco Leo
 
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
Alessandro Del Sole
 
Enterprise Spring and Flex applications
Enterprise Spring and Flex applicationsEnterprise Spring and Flex applications
Enterprise Spring and Flex applications
marcocasario
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
marcocasario
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8
DotNetCampus
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni Web
Davide Bellettini
 
Oracle Apex - Presentazione
Oracle Apex - PresentazioneOracle Apex - Presentazione
Oracle Apex - Presentazione
Miriade Spa
 
Differenze tra Alfresco Community ed Enterprise
Differenze tra Alfresco Community ed EnterpriseDifferenze tra Alfresco Community ed Enterprise
Differenze tra Alfresco Community ed Enterprise
SoftInstigate
 
Introduzione ai Web Services
Introduzione ai Web ServicesIntroduzione ai Web Services
Introduzione ai Web Services
Marco Livraghi
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
Marcello Teodori
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
guestfe3e15
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Giovanni Cappellini
 

More from Alberto Lagna (9)

Alberto lagna soa that works
Alberto lagna   soa that worksAlberto lagna   soa that works
Alberto lagna soa that works
Alberto Lagna
 
Biznology presentazione azienda
Biznology presentazione aziendaBiznology presentazione azienda
Biznology presentazione azienda
Alberto Lagna
 
why cloud loves soa
why cloud loves soawhy cloud loves soa
why cloud loves soa
Alberto Lagna
 
Una enterprise architecture a servizi
Una enterprise architecture a serviziUna enterprise architecture a servizi
Una enterprise architecture a servizi
Alberto Lagna
 
Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA
Alberto Lagna
 
Understanding Mda
Understanding MdaUnderstanding Mda
Understanding Mda
Alberto Lagna
 
Lifeticker per FIFA 2006, in tempo reale con SOA e AJAX
Lifeticker per FIFA 2006, in tempo reale con SOA e AJAXLifeticker per FIFA 2006, in tempo reale con SOA e AJAX
Lifeticker per FIFA 2006, in tempo reale con SOA e AJAX
Alberto Lagna
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterprise
Alberto Lagna
 
Contenuti time-based e personalizzati sul cellularde
Contenuti time-based e personalizzati sul cellulardeContenuti time-based e personalizzati sul cellularde
Contenuti time-based e personalizzati sul cellularde
Alberto Lagna
 
Alberto lagna soa that works
Alberto lagna   soa that worksAlberto lagna   soa that works
Alberto lagna soa that works
Alberto Lagna
 
Biznology presentazione azienda
Biznology presentazione aziendaBiznology presentazione azienda
Biznology presentazione azienda
Alberto Lagna
 
Una enterprise architecture a servizi
Una enterprise architecture a serviziUna enterprise architecture a servizi
Una enterprise architecture a servizi
Alberto Lagna
 
Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA
Alberto Lagna
 
Lifeticker per FIFA 2006, in tempo reale con SOA e AJAX
Lifeticker per FIFA 2006, in tempo reale con SOA e AJAXLifeticker per FIFA 2006, in tempo reale con SOA e AJAX
Lifeticker per FIFA 2006, in tempo reale con SOA e AJAX
Alberto Lagna
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterprise
Alberto Lagna
 
Contenuti time-based e personalizzati sul cellularde
Contenuti time-based e personalizzati sul cellulardeContenuti time-based e personalizzati sul cellularde
Contenuti time-based e personalizzati sul cellularde
Alberto Lagna
 
Ad

Confronto fra web services framework (open source)

  • 1. Confronto fra web services framewok (open source) Alberto Lagna [email_address]
  • 2. >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.
  • 3. 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
  • 4. Agenda Il problema I requisiti per la soluzione Confronto fra framework Il mio parere Riferimenti D&R
  • 5. “… come la notte in cui tutte le mucche sono nere” Georg Wilhelm Friedrich Hegel prefazione alla Fenomenologia dello Spirito
  • 7. Il problema Impedance mismatch Dovuto alla remotizzazione Tra domini Tra tecnologie
  • 8. Il problema Gli attori in gioco
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. I requisiti per la soluzione
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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"} ] }
  • 18. 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/
  • 19. 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/
  • 20. 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
  • 21. 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
  • 22. Confronto Intro dei framework Feature matching Documentazione disponibile Lavori disponibili Traffico mailing list Maturità/supporto
  • 23. 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)
  • 24. 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)
  • 25. 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
  • 26. 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
  • 27. Introduzione ai fwk JBoss WS Stack nativo + supporto a CXF Pluggable WS stack su JBoss
  • 28. Feature: approccio sviluppo ok no Il migliore raffinato ok tooling ok no ok ok ok Bottom up ok maven Il migliore raffinato Non ben doc tooling ok ok ok ok ok Top down JBoss WS Spring WS JiBXSoap CXF Axis2
  • 29. Feature: supporto standard ok ok ok Nativo in AXIOM MTOM/XOP ok Policy ok ok Reliable Messaging ok ok ok Addressing ok Integraz acegi ok ok Security ok WSDL 2.0 Quelli che chiedono utenti Arch flessibile Tramite modulo Supporto a nuovi ok ok ok Generato da tool sperimentale JAXB annotation ok Più vicino a JAXM nativo nativo Su AXIOM JAX-WS JBoss WS Spring WS JiBXSoap CXF Axis2
  • 30. Feature migliori Streaming XML con perf simili a RMI StAX pull parser di AXIOM Performance SOM, JAXB, SAAJ DOM, jDOM, dom4j, XOM, SAX, StAX, XPATH, JAXB, Castor, XMLBeans, JiBX, Xstream TROPPI Solo JiBX, ma molto raffinato JAXB e Aegis supportano il 99,99% degli schemi ADB, XMLBeans, JiBX, JaxMe, Castor (sperim) Data binding (XML ws) Con annotation Con annotation Uno dei main focus Doc e anche in spring POJO ws Partecipato a molti eventi Garantita da contract first WS-I basic profile Partecipato a molti eventi interop HTTP HTTP HTTP HTTP/S, JMS, local, IIOP HTTP/S, JMS, TCP, SMTP/POP, XMPP trasporti JBoss WS Spring WS JiBXSoap CXF Axis2
  • 31. Feature buona buona ottima ottima buona Doc 3k forum 1,2k forum 3,5k 3,5k 12k Traffico ML 2007 0 3 2 22 50 Lavori USA (monster.com) Sponsor ok ok alpha Incubator di apache Usato in molti progetti OS anche ESB Usato in molti progetti OS Maturità In programma POX REST via annotation Xml over http http binding di WSDL 2.0 REST JBoss WS Spring WS JiBXSoap CXF Axis2
  • 32. Il mio parere Ognuno dei framework ha delle peculiarità Scelgo quello che soddisfa i miei requisiti (risolve i miei problemi)
  • 33. 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
  • 34. 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
  • 35. 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/
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. 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