2009-10-22 5 views

risposta

5

Sono stato nella tua posizione qualche mese fa e ho finito per guardare più vicino a Metro.

Il killer per me era il fatto che Metro utilizza annotazioni standard per esporre un determinato metodo come servizio web e che tutto il codice della colla potrebbe essere generato automaticamente in fase di esecuzione. Cioè non ci sono ulteriori passaggi da fare durante la costruzione e la distribuzione e funziona in un contenitore standard di servlet (2.5 credo) in Java 5, che è la nostra attuale piattaforma di distribuzione.

Questo ha funzionato molto bene per noi.

Il motivo per cui sono stato annotato con le annotazioni standard è la semplice conseguenza che le nostre applicazioni tendono a vivere letteralmente per decenni dopo le quali è necessario eseguire una manutenzione. Mediante la codifica su un'interfaccia invece di un'implementazione, è possibile sostituire l'intero ponteggio sotto il codice senza modificare il codice che implementa il servizio web. Tra dieci anni (o più) qualsiasi implementazione specifica potrebbe essere appassita e morta, ma altri implementaitons potrebbero essere aumentati da allora e essere immediatamente inseribili.

Basta vedere quante scelte hai oggi per un contenitore servlet ... Questo è il potere di una buona API!


Modifica: Apparentemente il runtime Java 6 include lo stack Metro più un server Web minimale. In altre parole, la JRE da sola può essere la sostituzione dell'armatura menzionata sopra: D

+2

+1 per pensare a quei poveri sciocchi che dovranno capire questo codice tra 10 anni. Potrebbe essere uno di noi! –

+0

@yar, stavo semplicemente sperando che non dovesse essere me :) –

+0

AFAIK, Java 6 non include Metro, include JAX-WS RI che è un sottoinsieme di Metro (Metro = JAX-WS + WSIT /Tango). Sì, con Java 6 è possibile pubblicare un endpoint del servizio Web tramite il metodo 'Endpoint.publish()', utilizzando il server HTTP incorporato in Java SE 6. Vedere http://www.javapassion.com/webservices/jaxwsjavase6. PDF. –

9

Sia Metro che CXF sono stack di servizi Web conformi a JAX-WS e, dal punto di vista del runtime, c'è pochissima scelta tra loro.

Tuttavia, CXF ha ampiamente documentazione migliore e molta più flessibilità e funzionalità aggiuntive se si è disposti ad andare oltre le specifiche JAX-WS. Sulla base della documentazione da sola, sceglierei CXF su Metroevery.

Tuttavia, sceglierei Spring WebServices su Metro o CXF. Non è conforme a JAX-WS, ma non ritengo che sia un problema. È anche molto più semplice e considerevolmente più flessibile di entrambi. Altamente raccomandato.

+0

Potresti approfondire un po 'la funzionalità di CXF di cui parli e la Spring WS idem? –

+0

La gioia di CXF e Spring-WS è che puoi visitare i loro siti web e leggere l'eccellente documentazione per vedere cosa possono fare :) – skaffman

+1

Lo so - potresti aver visto che stavo cercando un simile framework. Stavo pensando in - come - esperienze reali e cose che tu mi hai indicato e ho avuto questa strana idea che forse avresti anche voglia di condividerle ... Vergognati. –

Problemi correlati