REST należy używać, jeśli bardzo ważne jest, aby zminimalizować sprzężenie między komponentami klienta i serwera w aplikacji rozproszonej.
Może tak być w przypadku, gdy serwer będzie używany przez wielu różnych klientów , nad którymi nie masz kontroli. Może tak być również w przypadku, gdy chcesz mieć możliwość regularnej aktualizacji serwera bez konieczności aktualizowania oprogramowania klienta.
Mogę Państwa zapewnić, że osiągnięcie tak niskiego poziomu sprzężenia nie jest łatwe . Aby odnieść sukces, należy przestrzegać wszystkich ograniczeń REST. Utrzymanie czysto bezpaństwowego połączenia jest trudne. Wybieranie odpowiednich typów mediów i wyciskanie danych do formatów jest trudne. Tworzenie własnych typów multimediów może być jeszcze trudniejsze.
Dostosowanie bogatego zachowania serwera do jednolitego interfejsu HTTP może być mylące, a czasami wydaje się pedantyczne w porównaniu ze stosunkowo prostym podejściem RPC.
Pomimo trudności, korzyści są takie, że masz usługę, którą deweloper klienta powinien być w stanie łatwo zrozumieć dzięki konsekwentnemu stosowaniu protokołu HTTP. Usługa powinna być łatwo wykrywalna dzięki hipermediom, a klient powinien być wyjątkowo odporny na zmiany na serwerze .
Zalety hipermediów i unikanie stanu sesji sprawiają, że równoważenie obciążenia jest proste, a partycjonowanie usług jest wykonalne . Ścisła zgodność z regułami HTTP sprawia, że dostępność narzędzi takich jak debuggery i buforujące proxy jest wspaniałą rzeczą.
Aktualizacja
Wydaje mi się, że REST to kolejne „ostatnie słowo mody” (albo całkowicie się mylę, bo w praktyce nigdy nie widziałem REST).
Myślę, że REST stał się modny, ponieważ ludzie próbujący robić projekty typu SOA odkryli, że używając stosu SOAP nie zdają sobie sprawy z obiecanych korzyści. Ludzie wracają do sieci jako przykładu prostych metod integracji. Niestety, myślę, że ludzie nie doceniają ilości planowania i przewidywania, które włożono w tworzenie sieci, i nadmiernie upraszczają to, co należy zrobić, aby umożliwić tego rodzaju nieoczekiwane ponowne wykorzystanie, które ma miejsce w sieci.
Mówisz, że nigdy nie widziałeś REST w praktyce, ale to nie może być prawdą, jeśli kiedykolwiek korzystasz z przeglądarki internetowej. Przeglądarka internetowa jest klientem REST.
- Dlaczego nie trzeba aktualizować przeglądarki, gdy ktoś zmienia kod HTML na stronie internetowej?
- Dlaczego mogę dodać kompletny nowy zestaw stron do witryny internetowej, a „klient” może nadal uzyskiwać dostęp do tych nowych stron bez aktualizacji?
- Dlaczego nie muszę podawać „service-description-language” do przeglądarki internetowej, aby poinformować ją, kiedy przejdzie do http://example.org/images/cat, że typem zwracanym będzie obraz jpeg i kiedy przejdziesz dla
http://example.org/description/cat
typem zwracanym będzie text / html?
- Dlaczego mogę używać przeglądarki internetowej do odwiedzania witryn, które nie istniały w chwili wydania przeglądarki? Skąd klient może wiedzieć o tych witrynach?
To może brzmieć jak głupie pytania, ale jeśli znasz odpowiedź, możesz zacząć rozumieć, o co chodzi w REST. Spójrz na StackOverflow, aby uzyskać więcej korzyści z REST. Kiedy patrzę na pytanie, mogę dodać tę stronę do zakładek lub wysłać adres URL do znajomego, a on widzi te same informacje. Nie musi przeglądać witryny, aby znaleźć to pytanie.
StackOverflow korzysta z różnych usług OpenId do uwierzytelniania, gravatar.com dla obrazów awatarów, google-analytics i Quantserve do informacji analitycznych. Ten rodzaj integracji wielu firm jest czymś, o czym świat SOAP tylko marzy . Jednym z najlepszych przykładów jest fakt, że biblioteki jQuery używane do obsługi interfejsu użytkownika StackOverflow są pobierane z sieci dostarczania treści Google. Fakt, że SO może nakierować klienta (tj. Twoją przeglądarkę internetową), aby pobrać kod z witryny innej firmy w celu poprawy wydajności, świadczy o niskim sprzężeniu między klientem sieciowym a serwerem.
Oto przykłady działającej architektury REST.
Teraz niektóre witryny / aplikacje internetowe łamią zasady REST i przeglądarka nie działa zgodnie z oczekiwaniami.
- Niesławny problem z przyciskiem Wstecz
jest spowodowany użyciem stanu sesji po stronie serwera.
- Równoważenie obciążenia może stać się uciążliwe, gdy masz stan sesji po stronie serwera.
- Aplikacje Flash często uniemożliwiają adresowi URL identyfikację konkretnej reprezentacji.
- Innym problemem, który łamie przeglądarki internetowe, jest słaba zgodność ze standardami mediów. Cały czas słyszymy o tym, jak należy zabić IE6. Problem polega na tym, że standardy nie były odpowiednio przestrzegane lub zostały zignorowane z jakiegokolwiek powodu.
- Korzystanie z sesji logowania jest źródłem wielu luk w zabezpieczeniach.
REST jest wszędzie. To ta część sieci, która sprawia, że działa dobrze. Jeśli chcesz tworzyć aplikacje rozproszone, które można skalować jak sieć, być odpornym na zmiany, podobnie jak sieć i promować ponowne wykorzystanie, tak jak w przypadku sieci, postępuj zgodnie z tymi samymi zasadami, które stosowano podczas tworzenia przeglądarek internetowych.