Kapan saya harus menggunakan AtomPub?

13

Saya telah melakukan beberapa penelitian ke dalam desain layanan web RESTful dan saya telah mencapai apa yang saya pikir adalah titik keputusan utama jadi saya pikir saya akan menawarkannya kepada masyarakat untuk mendapatkan beberapa saran.

Sesuai dengan prinsip-prinsip arsitektur RESTful saya ingin menyajikan API yang dapat ditemukan, jadi saya akan mendukung berbagai kata kerja HTTP semaksimal mungkin. Kesulitan saya datang dengan pilihan representasi sumber daya tersebut. Anda tahu, akan mudah bagi saya untuk membuat API saya sendiri yang mencakup bagaimana hasil pencarian akan disajikan dan bagaimana tautan ke sumber daya lain disediakan, tetapi ini akan menjadi unik untuk aplikasi saya.

Saya telah membaca tentang Protokol Penerbitan Atom ( RFC 5023 ), dan bagaimana OData mempromosikan penggunaannya, tetapi tampaknya menambahkan tingkat abstraksi ekstra atas apa yang (saat ini) merupakan API yang agak sederhana.

Jadi pertanyaan saya adalah, kapan pengembang harus memilih AtomPub sebagai pilihan representasi mereka - jika sama sekali? Dan jika tidak, apa pendekatan yang direkomendasikan saat ini?

Gary Rowe
sumber
1
Ada diskusi menarik tentang ini di sini: comments.gmane.org/gmane.comp.web.services.rest/16023
Gary Rowe

Jawaban:

11

Setelah melakukan cukup banyak penelitian tentang ini, berikut adalah temuan saya:

Tampaknya ada 3 format dan pendekatan utama: AtomPub, OData, dan HAL. Saya telah merangkum penelitian untuk masing-masing di bawah ini.

AtomPub

  • Pro: Standar mapan
  • Pro: Bekerja dengan XML dan JSON
  • Pro: Memiliki dukungan Java yang sangat baik melalui Apache Abdera
  • Kontra: Abdera memperkenalkan banyak ketergantungan
  • Con: Sangat kompleks untuk bekerja dengan di sisi server
  • Con: Sulit membangun klien JavaScript yang lengkap

OData

  • Pro: Dibangun di AtomPub
  • Pro: Bekerja dengan XML dan JSON
  • Pro: Memiliki dukungan Java yang baik melalui proyek odata4j
  • Pro: Memberikan struktur permintaan URI yang baik

  • Con: Memperkenalkan kerangka kerja lengkap (pada dasarnya menggantikan Dropwizard)

  • Con: Sangat rumit untuk digunakan, terutama model data entitas (EDM)
  • Con: Sulit menemukan pustaka klien JavaScript yang bagus tanpa mengandalkan alat khusus Windows untuk EDM

HAL

  • Pro: Memperkenalkan pendekatan yang ringan dan dapat diperluas
  • Pro: Bekerja dengan XML dan JSON
  • Pro: Sepele untuk membuat model JAXB untuk mengimplementasikannya (tidak ada dependensi)
  • Pro: Menyediakan kerangka kerja penautan yang baik
  • Pro: Sepele untuk membuat klien JavaScript menggunakan parsing XML jQuery
  • Con: Tidak diratifikasi (meskipun IETF telah didekati)

Jadi kapan saya harus menggunakan AtomPub?

Dari yang di atas, pilih AtomPub jika Anda senang dengan kompleksitas tambahan dan ingin menggunakan pustaka standar untuk klien Anda. Ini mungkin akan menjadi kasus jika Anda menjalankan repositori dokumen besar.

Saya telah memasukkan lebih detail (yang di luar ruang lingkup untuk pertanyaan ini) ke dalam artikel blog terbaru yang mungkin bisa membantu orang lain.

Gary Rowe
sumber