Quando dovrei usare AtomPub?


13

Ho condotto alcune ricerche sulla progettazione di servizi Web RESTful e ho raggiunto quello che penso sia un punto di decisione chiave, quindi ho pensato di offrirlo alla comunità per ottenere qualche consiglio.

In linea con i principi di un'architettura RESTful, voglio presentare un'API rilevabile, quindi supporterò i vari verbi HTTP nel modo più completo possibile. La mia difficoltà viene dalla scelta della rappresentazione di tali risorse. Vedete, sarebbe facile per me trovare la mia API che copre come devono essere presentati i risultati della ricerca e come vengono forniti collegamenti ad altre risorse, ma questo sarebbe unico per la mia applicazione.

Ho letto dell'Atom Publishing Protocol ( RFC 5023 ) e di come OData ne promuove l'utilizzo, ma sembra aggiungere un ulteriore livello di astrazione rispetto a quella che è (attualmente) un'API piuttosto semplice.

Quindi la mia domanda è: quando uno sviluppatore dovrebbe selezionare AtomPub come sua scelta di rappresentazione - se non del tutto? E se no, qual è l'attuale approccio raccomandato?


1
C'è una discussione interessante al riguardo qui: commenti.gmane.org/gmane.comp.web.services.rest/16023
Gary Rowe,

Risposte:


11

Dopo aver fatto una buona dose di ricerca in questo, ecco i miei risultati:

Sembra che ci siano 3 formati e approcci primari: AtomPub, OData e HAL. Ho riassunto la ricerca per ciascuno di seguito.

AtomPub

  • Pro: standard ben consolidato
  • Pro: funziona con XML e JSON
  • Pro: ha un eccellente supporto Java tramite Apache Abdera
  • Contro: Abdera introduce molte dipendenze
  • Contro: molto complesso con cui lavorare sul lato server
  • Contro: Difficile creare un client JavaScript completo

OData

  • Pro: si basa su AtomPub
  • Pro: funziona con XML e JSON
  • Pro: ha un buon supporto Java attraverso il progetto odata4j
  • Pro: fornisce una buona struttura di query URI

  • Contro: introduce un framework completo (essenzialmente sostituisce Dropwizard)

  • Contro: molto complesso con cui lavorare, in particolare il modello di dati di entità (EDM)
  • Contro: Difficile trovare una buona libreria client JavaScript senza fare affidamento su strumenti solo per Windows per EDM

HAL

  • Pro: introduce un approccio leggero ed estensibile
  • Pro: funziona con XML e JSON
  • Pro: Trivial per creare un modello JAXB per implementarlo (nessuna dipendenza)
  • Pro: fornisce un buon framework di collegamento
  • Pro: prova a creare un client JavaScript utilizzando l'analisi XML di jQuery
  • Contro: Non ratificato (anche se IETF è stato avvicinato)

Quindi, quando dovrei usare AtomPub?

Da quanto sopra, dovresti scegliere AtomPub se sei soddisfatto della complessità aggiuntiva e desideri utilizzare librerie standard per i tuoi clienti. Questo sarebbe probabilmente il caso se stai eseguendo un repository di documenti di grandi dimensioni.

Ho inserito maggiori dettagli (che non rientrano nell'ambito di questa domanda) in un recente articolo di blog che potrebbe essere di aiuto per gli altri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.