เมื่อใดที่ฉันควรใช้ AtomPub


13

ฉันทำการค้นคว้าเกี่ยวกับการออกแบบบริการเว็บสงบและฉันได้มาถึงสิ่งที่ฉันคิดว่าเป็นจุดตัดสินใจที่สำคัญดังนั้นฉันคิดว่าฉันจะเสนอมันต่อชุมชนเพื่อรับคำแนะนำ

เพื่อให้สอดคล้องกับหลักการของสถาปัตยกรรม RESTful ฉันต้องการนำเสนอ API ที่สามารถค้นพบได้ดังนั้นฉันจะสนับสนุนคำกริยา HTTP ต่างๆอย่างเต็มที่เท่าที่จะทำได้ ความยากของฉันมาพร้อมกับตัวเลือกในการแสดงทรัพยากรเหล่านั้น คุณเห็นไหมว่ามันจะเป็นเรื่องง่ายสำหรับผมที่จะสร้าง API ของตัวเองซึ่งจะครอบคลุมถึงการนำเสนอผลการค้นหาและการเชื่อมโยงไปยังแหล่งข้อมูลอื่น ๆ

ฉันได้อ่านเกี่ยวกับ Atom Publishing Protocol ( RFC 5023 ) และวิธีการที่ODataส่งเสริมการใช้งาน แต่ดูเหมือนว่าจะเพิ่มระดับการเพิ่มความเป็นนามธรรมให้กับ API ที่ค่อนข้างง่าย (ปัจจุบัน)

ดังนั้นคำถามของฉันคือนักพัฒนาควรเลือก AtomPub เป็นตัวเลือกในการแสดงของพวกเขาเมื่อใด? และถ้าไม่ใช่แนวทางที่แนะนำในปัจจุบันคืออะไร?


1
มีการอภิปรายที่น่าสนใจเกี่ยวกับสิ่งนี้ที่นี่: comments.gmane.org/gmane.comp.web.services.rest/16023
Gary Rowe

คำตอบ:


11

หลังจากทำวิจัยในปริมาณที่พอสมควรแล้ว

ดูเหมือนจะมี 3 รูปแบบหลักและวิธีการ: AtomPub, OData และ HAL ฉันได้สรุปการวิจัยสำหรับแต่ละด้านล่าง

AtomPub

  • Pro: มาตรฐานที่ยอมรับกันดี
  • Pro: ทำงานร่วมกับ XML และ JSON
  • Pro: มีการสนับสนุน Java ที่ยอดเยี่ยมผ่าน Apache Abdera
  • คอนดิชั่น: Abdera แนะนำการพึ่งพาเป็นจำนวนมาก
  • คอนดิชั่น: ซับซ้อนมากที่จะทำงานกับฝั่งเซิร์ฟเวอร์
  • คอนดิชั่น: ยากที่จะสร้างไคลเอนต์ JavaScript ที่สมบูรณ์

OData

  • Pro: สร้างบน AtomPub
  • Pro: ทำงานร่วมกับ XML และ JSON
  • Pro: มีการสนับสนุน Java ที่ดีผ่านโครงการ odata4j
  • Pro: จัดเตรียมโครงสร้างการสืบค้น URI ที่ดี

  • คอนดิชั่น: เปิดตัวกรอบสมบูรณ์ (แทนที่ Dropwizard)

  • Con: ซับซ้อนมากในการทำงานโดยเฉพาะอย่างยิ่งรูปแบบข้อมูลเอนทิตี (EDM)
  • คอนดิชั่น: ยากต่อการค้นหาไลบรารีไคลเอนต์ JavaScript ที่ดีโดยไม่ต้องอาศัยเครื่องมือ Windows เท่านั้นสำหรับ EDM

HAL

  • Pro: แนะนำวิธีการที่มีน้ำหนักเบาและสามารถขยายได้
  • Pro: ทำงานร่วมกับ XML และ JSON
  • Pro: เล็กน้อยในการสร้างรูปแบบ JAXB ที่จะใช้มัน (ไม่มีการอ้างอิง)
  • Pro: ให้กรอบการเชื่อมโยงที่ดี
  • Pro: Trivial เพื่อสร้าง JavaScript ไคลเอ็นต์โดยใช้การแยกวิเคราะห์ jQuery XML
  • คอนดิชั่น: ไม่ให้สัตยาบัน (แม้ว่า IETF ได้รับการทาบทาม)

ดังนั้นฉันควรใช้ AtomPub เมื่อใด

จากข้างต้นควรเลือก AtomPub หากคุณพอใจกับความซับซ้อนเพิ่มเติมและต้องการใช้ไลบรารี่มาตรฐานสำหรับลูกค้าของคุณ อาจเป็นกรณีนี้หากคุณใช้ที่เก็บเอกสารขนาดใหญ่

ฉันได้ใส่รายละเอียดเพิ่มเติม (ซึ่งเกินขอบเขตสำหรับคำถามนี้) ในบทความบล็อกล่าสุดที่อาจเป็นประโยชน์ต่อผู้อื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.