Confronto tra Sun Metro e Apache CXF per lo sviluppo di servizi Web?
-
05-07-2019 - |
Domanda
Quali sono i punti di forza e di debolezza relativi tra Sun Metro e Apache CXF per lo sviluppo di servizi Web in Java. C'è un altro framework che dovrei guardare anche io?
Soluzione
Ero nella tua posizione qualche mese fa e ho finito per guardare più da vicino Metro.
La caratteristica killer per me era il fatto che Metro utilizza annotazioni standard per esporre un determinato metodo come servizio web e che tutto il codice colla potrebbe essere generato automaticamente in fase di esecuzione. Cioè non è necessario eseguire ulteriori passaggi durante la creazione, la distribuzione e il funzionamento in un container servlet standard (2.5 credo) in Java 5, che è la nostra attuale piattaforma di distribuzione.
Questo ha funzionato molto bene per noi.
Il motivo per cui ho scelto le annotazioni standard è il semplicissimo che le nostre applicazioni tendono a vivere letteralmente per decenni dopo i quali è necessario fare un po 'di manutenzione. Codificando un'interfaccia anziché un'implementazione, è possibile scambiare l'intero ponteggio sotto il codice senza modificare il codice che implementa il servizio Web. In dieci anni (o più) qualsiasi attrezzo specifico potrebbe essere appassito e morto, ma altri attrezzi potrebbero essere aumentati da allora ed essere immediatamente inseribili.
Scopri quante scelte hai oggi per un container servlet ... Ecco la potenza di una buona API!
Modifica: a quanto pare il runtime Java 6 include lo stack Metro più un web server minimo. In altre parole, il JRE da solo può essere la sostituzione dei ponteggi sopra menzionata: D
Altri suggerimenti
Sia Metro che CXF sono stack di servizi Web conformi a JAX-WS e, dal punto di vista del runtime, c'è davvero poca scelta tra di loro.
Tuttavia, CXF ha enormemente migliore documentazione e molta più flessibilità e funzionalità aggiuntiva se si è disposti ad andare oltre le specifiche JAX-WS. Solo sulla base della documentazione, sceglierei CXF durante il periodo Metroevery.
Tuttavia, sceglierei Spring WebServices su Metro o CXF. Non è conforme a JAX-WS, ma non lo considero un problema. È anche considerevolmente più semplice e considerevolmente più flessibile di entrambi. Altamente raccomandato.