( enpassant | 2020. 04. 07., k – 07:14 )

Azt hiszem félreérted.

Nem minden tevékenységeket veszünk el a klienstől, hanem főleg a "döntéseket".
A skálázódás biztosítására való a kliens-szerver architektúra, az állapotmentesség, a gyorsítótárazhatóság és a réteges felépítés.

Döntések alatt azon dolgokat értem, amik az Egységes interfész részben szerepelnek.

  • Erőforrások azonosítása. A kliensnek nem kell tudnia semmit, hogyan képződnek az azonosítók. Ha rábízzuk a kliensre, azzal csak a hibalehetőségeket bővítjük, de teljesítményben, skálázódásban nem nyerünk semmit.
  • Erőforrások manipulációja ezeken a reprezentációkon keresztül. A szerver biztosít minden adatot, ami a kliensnek kell az erőforrás manipulációjához, nem kell további kéréseket intéznie a szerver vagy más szerverek felé.
  • Önleíró üzenetek. A szerver biztosít minden adatot, ami a kliensnek kell az üzenet feldolgozásához, nem kell további kéréseket intéznie a szerver vagy más szerverek felé.
  • Hipermédia, mint az alkalmazásállapot motorja. Ez a legfontosabb. Idézem is. "A kliensek csakis azokon az állapotokon mehetnek át, amelyeket a szerver által küldött hipermédia tartalmaz hivatkozások alakjában." A szerver küldi a hivatkozásokat, aminek a legfontosabb eleme az erőforrás azonosítója (URI), de része a reláció, a HTTP metódus, a média típus, ... Ezeket mind nem kell kitalálnia a kliensnek, mert megkapja.

A szerver a lehető legkevesebb dolgot csinálja, mert ő korlátos erőforrás.

Alapvetően ezzel sem értek egyet. Egy mobiltelefonhoz vagy esetleg egy IoT eszközhöz képest, mitől lenne egy szerver, ami igény esetén új node-okat indít, korlátos erőforrás? A szerver is általában korlátos erőforrás, ha nem bővülhet kedve szerint, de a kliens az mindig az. Úgy kell elosztani a feladatokat, hogy a kliensek és a szerver(ek) is beleférjenek a korlátaikba.