Khi nào tôi nên sử dụng AtomPub?


13

Tôi đã thực hiện một số nghiên cứu về thiết kế dịch vụ web RESTful và tôi đã đạt được những gì tôi nghĩ là điểm quyết định chính vì vậy tôi nghĩ rằng tôi sẽ cung cấp cho cộng đồng để nhận được lời khuyên.

Để tuân thủ các nguyên tắc của kiến ​​trúc RESTful, tôi muốn trình bày một API có thể khám phá, vì vậy tôi sẽ hỗ trợ các động từ HTTP khác nhau một cách đầy đủ nhất có thể. Khó khăn của tôi đi kèm với sự lựa chọn đại diện của các tài nguyên đó. Bạn thấy đấy, thật dễ dàng để tôi đưa ra API của riêng mình bao gồm cách trình bày kết quả tìm kiếm và cách liên kết đến các tài nguyên khác, nhưng điều này sẽ là duy nhất cho ứng dụng của tôi.

Tôi đã đọc về Giao thức xuất bản nguyên tử ( RFC 5023 ) và cách OData thúc đẩy việc sử dụng nó, nhưng dường như thêm một mức độ trừu tượng bổ sung đối với API (hiện tại) khá đơn giản.

Vì vậy, câu hỏi của tôi là, khi nào thì một nhà phát triển nên chọn AtomPub làm lựa chọn đại diện của họ - nếu có? Và nếu không, cách tiếp cận được đề nghị hiện nay là gì?


1
Có một cuộc thảo luận thú vị về vấn đề này ở đây: bình
Gary Rowe

Câu trả lời:


11

Sau khi thực hiện một số lượng lớn nghiên cứu về điều này, đây là những phát hiện của tôi:

Dường như có 3 định dạng và cách tiếp cận chính: AtomPub, OData và HAL. Tôi đã tóm tắt nghiên cứu cho từng bên dưới.

Nguyên tử

  • Pro: Tiêu chuẩn được thiết lập tốt
  • Pro: Hoạt động với XML và JSON
  • Pro: Có hỗ trợ Java tuyệt vời thông qua Apache Abdera
  • Con: Abdera giới thiệu rất nhiều phụ thuộc
  • Con: Rất phức tạp để làm việc với phía máy chủ
  • Con: Khó xây dựng một máy khách JavaScript hoàn chỉnh

OData

  • Pro: Được xây dựng trên AtomPub
  • Pro: Hoạt động với XML và JSON
  • Pro: Có hỗ trợ Java tốt thông qua dự án odata4j
  • Pro: Cung cấp cấu trúc truy vấn URI tốt

  • Con: Giới thiệu một khung hoàn chỉnh (về cơ bản thay thế Dropwizard)

  • Con: Rất phức tạp để làm việc với, đặc biệt là mô hình dữ liệu thực thể (EDM)
  • Con: Khó tìm được thư viện máy khách JavaScript tốt mà không dựa vào các công cụ chỉ dành cho Windows cho EDM

HAL

  • Pro: Giới thiệu một cách tiếp cận nhẹ và mở rộng
  • Pro: Hoạt động với XML và JSON
  • Pro: Trivial để tạo một mô hình JAXB để thực hiện nó (không phụ thuộc)
  • Pro: Cung cấp một khung liên kết tốt
  • Pro: Trivial để tạo một máy khách JavaScript bằng cách sử dụng phân tích cú pháp XML của jQuery
  • Con: Không được phê chuẩn (mặc dù IETF đã được tiếp cận)

Vậy khi nào tôi nên sử dụng AtomPub?

Từ những điều trên, nên chọn AtomPub nếu bạn hài lòng với sự phức tạp bổ sung và muốn sử dụng các thư viện tiêu chuẩn cho khách hàng của mình. Đây có thể là trường hợp nếu bạn đang chạy một kho lưu trữ tài liệu lớn.

Tôi đã đưa thêm chi tiết (nằm ngoài phạm vi của câu hỏi này) vào một bài viết blog gần đây có thể giúp ích cho người khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.