• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Confronto fra web services framework (open source)
 

Confronto fra web services framework (open source)

on

  • 9,849 views

 

Statistics

Views

Total Views
9,849
Views on SlideShare
9,818
Embed Views
31

Actions

Likes
0
Downloads
156
Comments
2

1 Embed 31

http://www.slideshare.net 31

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Great!
    Are you sure you want to
    Your message goes here
    Processing…
  • Great!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Confronto fra web services framework (open source) Confronto fra web services framework (open source) Presentation Transcript

    • 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