Kiedy powinienem używać AtomPub?

13

Prowadzę badania nad projektowaniem usług internetowych RESTful i doszedłem do tego, co uważam za kluczowy punkt decyzji, więc pomyślałem, że zaoferuję to społeczności, aby uzyskać porady.

Zgodnie z zasadami architektury RESTful chcę zaprezentować wykrywalny interfejs API, dlatego będę wspierał różne czasowniki HTTP tak dokładnie, jak to możliwe. Moja trudność wiąże się z wyborem reprezentacji tych zasobów. Widzę, że byłoby mi łatwo wymyślić własny interfejs API, który obejmuje sposób prezentacji wyników wyszukiwania i sposób udostępniania linków do innych zasobów, ale byłoby to unikalne dla mojej aplikacji.

Czytałem o Atom Publishing Protocol ( RFC 5023 ) i o tym, jak OData promuje jego użycie, ale wydaje się, że dodaje dodatkowy poziom abstrakcji w stosunku do (obecnie) raczej prostego API.

Moje pytanie brzmi: kiedy programista powinien wybrać AtomPub jako swój sposób reprezentacji - jeśli w ogóle? A jeśli nie, jakie jest obecnie zalecane podejście?

Gary Rowe
źródło
1
Interesująca dyskusja na ten temat tutaj: comments.gmane.org/gmane.comp.web.services.rest/16023
Gary Rowe

Odpowiedzi:

11

Po przeprowadzeniu sporej ilości badań w tym zakresie, oto moje ustalenia:

Wydaje się, że istnieją 3 podstawowe formaty i podejścia: AtomPub, OData i HAL. Podsumowałem badania dla każdego poniżej.

AtomPub

  • Pro: Ugruntowany standard
  • Pro: Działa z XML i JSON
  • Pro: Ma doskonałą obsługę Java przez Apache Abdera
  • Przeciw: Abdera wprowadza wiele zależności
  • Con: Bardzo skomplikowany do pracy po stronie serwera
  • Przeciw: Trudno zbudować kompletnego klienta JavaScript

OData

  • Pro: Opiera się na AtomPub
  • Pro: Działa z XML i JSON
  • Pro: Ma dobrą obsługę Java przez projekt odata4j
  • Pro: Zapewnia dobrą strukturę zapytań URI

  • Con: Wprowadza kompletny framework (zasadniczo zastępuje Dropwizard)

  • Wada: bardzo skomplikowana praca, szczególnie model danych encji (EDM)
  • Przeciw: Trudno jest znaleźć dobrą bibliotekę klienta JavaScript bez polegania na narzędziach EDM przeznaczonych tylko dla systemu Windows

HAL

  • Pro: Wprowadza lekkie i rozszerzalne podejście
  • Pro: Działa z XML i JSON
  • Pro: Trywialne stworzenie modelu JAXB w celu jego wdrożenia (bez zależności)
  • Pro: Zapewnia dobre ramy łączenia
  • Pro: Trywialne tworzenie klienta JavaScript za pomocą parsowania jQuery XML
  • Przeciw: Nie ratyfikowany (chociaż zwrócono się do IETF)

Kiedy więc powinienem używać AtomPub?

Z powyższego należy wybrać AtomPub, jeśli jesteś zadowolony z dodatkowej złożoności i chcesz używać standardowych bibliotek dla swoich klientów. Prawdopodobnie tak będzie w przypadku dużego repozytorium dokumentów.

Dodałem więcej szczegółów (które są poza zakresem tego pytania) w ostatnim artykule na blogu, który może być pomocny dla innych.

Gary Rowe
źródło