Hajusrakendused

  1. Veebiteenus vs API:
    • API (Application Programming Interface) on liides, mis võimaldab andmete vahetamist kahe rakenduse vahel, olenemata nende rakenduste arendamiseks kasutatud programmeerimiskeeltest.
    • Veebiteenus on teatud tüüpi API, mis kasutab andmeedastuseks HTTP-protokolli, sarnaselt veebiserveritele (nt Apache, Nginx), mis suhtlevad brauseritega (nt Firefox, Google Chrome). Veebiteenused on kättesaadavad ka brauserite kaudu, kuid peamiselt ainult GET-päringute jaoks.
    • Kõik veebiteenused on API-d, kuid mitte kõik API-d pole veebiteenused. Näiteks on olemas Windows API, mida kasutavad kõik Windowsi töölauarakendused operatsioonisüsteemi funktsioonide (nt sõnumite kuvamine ekraanil) kasutamiseks. Samuti on spetsiaalsed API-d, nagu OpenGL, Metal ja Direct3D, mis võimaldavad suhelda riistvaraga.
  2. SOAP:
    • SOAP (Simple Object Access Protocol) on vananenud veebiteenuste loomise meetod, mis oli varem laialt levinud. SOAP on keerukas ja laiahaardeline standardite kogum.
    • SOAP töötati välja, et võimaldada andmevahetust erinevate võrkude, sealhulgas interneti ja e-posti kaudu. SOAP-i standardite hulka kuulusid UDDI (Universal Description, Discovery and Integration) teenuste avastamiseks ja WSDL (Web Services Description Language) teenuste dokumenteerimiseks. Need standardid ei levinud laialdaselt ja hiljem lõpetati nende arendamine.
    • SOAP-i sõnumid koosnevad neljast põhielemendist: ENVELOPE (ümbris), HEADER (päis), BODY (keha) ja FAULT (veateade). ENVELOPE tähistab XML-sõnumi algust ja lõppu, HEADER sisaldab päiseelemente, mida server peab töötlema, BODY sisaldab ülejäänud päringu andmeid, ja FAULT käsitleb vigu.
    • SOAP kasutab enamasti HTTP-protokolli, kuid võib kasutada ka teisi protokolle.
  3. REST:
    • REST (Representational State Transfer) on arhitektuuristiil veebiteenuste loomiseks, mitte aga protokoll või standard. REST määratleb parimad tavad, millele hästi toimiv veebiteenus peaks vastama.
    • REST põhineb HTTP-protokollil ja kasutab URL-aadresse ressursside identifitseerimiseks (URI – Uniform Resource Identifier). HTTP-verbe nagu GET, POST, PUT ja DELETE kasutatakse määramaks, millist toimingut klient soovib ressursiga teha.
    • REST võimaldab andmete edastamiseks kasutada erinevaid kodeerimisformaatte, nagu XML, HTML või JSON, kusjuures JSON on eelistatuim oma lihtsuse ja ühilduvuse tõttu.
    • REST on arendajatele mugav, kuna seda on lihtsam kasutada ja see on vähem sõnaohter kui SOAP. REST lahendab SOAP-i keerukuse probleemid ja on seetõttu muutunud peaaegu kõigi avalike API-de standardiks.
  4. RESTful:
    • Enamik tänapäevaseid API-sid on RESTful, mis tähendab, et nad järgivad peamiselt REST-i piiranguid ja parimaid tavasid. REST on saanud API-de arendamise de facto standardiks alates 2000. aastate algusest.
    • Kuigi REST ei ole ametlik standard, kirjeldab see parimaid tavasid, mis on aja jooksul välja kujunenud. REST-i põhimõtted kirjutas esmakordselt lahti Roy Fielding oma doktoritöös.
  5. SOAP ja REST valik:
    • Valik SOAP-i ja REST-i vahel sõltub projekti nõuetest.
    • Mõned programmeerimiskeeled (nt Java) toetavad SOAP-i hästi ja on lihtsad rakendada. Teistes keeltes (nt JavaScript) on SOAP-i tugi keerulisem ja vajab lisatööriistu.
    • REST on laialdasemalt kasutusel, ja enamik arendajaid on sellega juba tuttavad, mistõttu on REST sageli parim valik.
    • Kuigi SOAP on keerulisem ja andmemahukam kui REST, on sellel mitmeid eeliseid, näiteks sõltumatus transpordikihist ja standardiseeritud rakendamine. SOAP töötab hästi hajutatud ettevõttekeskkondades ja sisaldab sisseehitatud veahaldust ja automatiseerimist.
  6. REST vs SOAP – Peamised erinevused:
    • URI käsitlus: REST API-s esitatakse andmed serveri andmebaasist ressurssidena, kus igale ressursile määratakse oma URL (URI). SOAP-is sõltub URI kasutatavast sidumismeetodist.
    • Käskude edastamine: REST kasutab HTTP-verbe (GET, POST, PUT, DELETE) määramaks, millist toimingut soovitakse ressursiga teha. SOAP-is kasutatakse alati POST-päringut, kus vajalikud andmed ja toimingud edastatakse XML-vormingus.
  7. REST-i omadused:
    • REST on staatusevaba arhitektuur, kus iga päringu-vastuse tsükkel on iseseisev. See tähendab, et kummalgi poolel ei ole vaja hoida teavet eelmiste interaktsioonide kohta, mis tagab rakenduste õige ja usaldusväärse toimimise.
    • HTTP olekukoodid annavad kliendile tagasisidet päringu tulemuslikkuse kohta: koodid 2xx viitavad edukale päringule, 4xx tähendavad kliendipoolset viga, ja 5xx viitavad serveripoolsele veale.
    • REST-i eeliseks on lihtne mõistmine ja rakendamine, ning see sobib hästi teiste veebitehnoloogiatega, kasutades HTTP-meetodeid käskudena ja URL-aadresse URI-na.

Põhipunktid:

  • API on üldine andmevahetuse liides rakenduste vahel, veebiteenus on API, mis kasutab HTTP-d.
  • SOAP on keeruline ja andmemahukas standard, mis võimaldab laialdast funktsionaalsust.
  • REST on lihtsam ja vähem sõnaohter arhitektuuristiil, mis põhineb HTTP-l ja on laialdaselt kasutusel API-de arendamisel.
  • SOAP-i ja REST-i valik sõltub projekti nõuetest, arvestades keerukust, andmemahu kasutust ja arendaja tuttavust ühe või teise meetodiga.

JSON – Mis See On ja Kuidas See Töötab?

Mis on JSON?

JSON (JavaScript Object Notation) on lihtne ja arusaadav andmevahetusformaat, mida kasutatakse andmete struktureeritud kujul esitamiseks. Kuigi JSON pärineb JavaScript’ist, on see keelelt sõltumatu ja toetatud peaaegu kõikides kaasaegsetes programmeerimiskeeltes. JSON on populaarne oma lihtsuse tõttu ning seda kasutatakse laialdaselt näiteks REST API-de puhul andmete vahetamiseks.

JSON-i Struktuur

JSON-i struktuuri võib kirjeldada järgmiselt:

  • Objektid: Kasutatakse looksulge {}, milles on võti:väärtus paarid. Näiteks:
  {
    "Widget": "Modal"
  }
  • Massiivid: Kasutatakse nurksulge [], mis võib sisaldada mitut elementi. Näiteks:
  [
    {"Widget": "Cursor changer", "Price": 20.00}
  ]
  • Pesastamine: Objektid ja massiivid võivad sisaldada teisi objekte ja massiive, võimaldades keerukaid andmestruktuure. Näiteks:
  {
    "Microsoft": {"Widget": "Cursor changer", "Price": 20.00},
    "SomeGuyOnReddit": {"Widget": "Darkmode", "Price": 8.19}
  }

JSON-i Andmetüübid

JSON toetab erinevaid andmetüüpe, sealhulgas:

  1. String: Tekst, mis on alati ümbritsetud jutumärkidega. Näiteks "Widget": "Modal".
  2. Number: Arvuline väärtus, olgu see täisarv või ujukomaarv. Näiteks "Price": 20.00.
  3. Objekt: Komplekt võti:väärtus paare looksulgude vahel. Näiteks "Microsoft": {"Widget": "Cursor changer", "Price": 20.00}.
  4. Massiiv: Andmete loend, mis on ümbritsetud nurksulgudega. Näiteks ["Modal", "Cursor changer"].
  5. Boolean: Tõesuse väärtus, kas true või false.
  6. Null: Tähistab tühiväärtust ehk andmete puudumist. Näiteks "Price": null.

JSON võimaldab paindlikult esitada keerulisi andmestruktuure, tehes sellest ideaalse vahendi andmete vahetamiseks erinevate süsteemide vahel.

Kokkuvõte: Veebiandmete Halduse Tehnikad

Veebiarenduses on andmete tõhus haldamine olulise tähtsusega jõudluse ja kasutajakogemuse tagamiseks. Siin on mõned peamised tehnikad, mida selleks kasutatakse:

1. Andmete Puhverdamine

  • Määratlus: Andmete puhverdamine on protsess, mille käigus salvestatakse andmed või failid ajutisse salvestuskohta (vahemällu), et neile kiiremini ligi pääseda. Seda tehnikat kasutavad sageli tarkvararakendused, serverid ja veebibrauserid, et tagada, et kasutajad ei pea iga kord veebilehte või rakendust laadides andmeid uuesti alla laadima.
  • Eesmärk: Sageli ligipääsetavate andmete salvestamine rakendusele või brauserile lähemale vähendab andmete hankimise aega, parandades seeläbi veebisaitide ja rakenduste laadimiskiirust.

2. Andmete Dubleerimine

  • Määratlus: Andmete dubleerimine tähendab andmetest koopiate tegemist ja nende hoidmist erinevates asukohtades varundamise ja andmete kättesaadavuse tagamiseks. Need koopiad võivad olla salvestatud samas süsteemis, erinevatel füüsilistel/virtuaalsetel serveritel või pilvepõhiselt.
  • Eelised:
    • Parandab andmete kättesaadavust, tagades, et andmed jäävad ligipääsetavaks ka ühe koopia rikke korral.
    • Suurendab juurdepääsu kiirust, võimaldades andmeid lugeda lähimast või kiireimast allikast.
    • Parandab serveri jõudlust, jagades lugemisoperatsioonid mitme koopia vahel.
    • Lihtsustab andmete taastamist kaotuse või rikutuse korral.

3. Local Storage ja Session Storage

  • Local Storage: Võimaldab veebisaitidel salvestada võtme-väärtuse paare kasutaja brauseris, mis jäävad alles ka pärast brauseri sulgemist. Andmed säilivad kuni kasutaja kustutab brauseri vahemälu või veebisait kustutab need andmed.
  • Session Storage: Sarnane local storage’iga, kuid andmed säilivad ainult lehe seansi ajal. Kui brauser või vahekaart suletakse, andmed kustutatakse.
  • Kasutus: Mõlemat kasutatakse andmete lokaalseks salvestamiseks kliendi poolel, mis võib parandada jõudlust ja kasutajakogemust, vähendades vajadust korduvate andmepäringute järele serverisse.

4. Küpsised

  • Määratlus: Küpsised on väikesed tekstifailid, mida veebisaidid salvestavad kasutaja seadmesse, sisaldades nimi-väärtus paare. Neid saab järgmiste päringute käigus serverile tagasi saata, võimaldades serveril kasutajaid erinevates seanssides ära tunda.
  • Kasutus: Küpsised on olulised seansi haldamiseks, kasutaja eelistuste salvestamiseks ja jälgimiseks. Näiteks võimaldavad need kasutajatel jääda sisselogituks, kui nad navigeerivad veebisaidil erinevate lehtede vahel.

5. Näide Local Storage’i Kasutamisest

  • Olukord: Veebirakendus kasutab andmete puhverdamiseks local storage’it, et vältida korduvaid võrgupäringuid.
  • Protsess:
    1. Kontrolli Vahemälu: Rakendus kontrollib kõigepealt, kas vajalikud andmed on saadaval local storage’is kindla võtme all.
    2. Andmete Saamine: Kui andmed on olemas, parsitakse need ja kasutatakse otse.
    3. Fetch & Store: Kui andmeid ei ole vahemälus, hangib rakendus need võrgust, töötleb ja salvestab need local storage’isse tulevaseks kasutamiseks.
  • Koodi Näide: let widgetsCache = localStorage.getItem('widgetsCache'); if (widgetsCache) { widgetsCache = JSON.parse(widgetsCache); } else { widgetsCache = fetchWidgetsFromNetwork(); localStorage.setItem('widgetsCache', JSON.stringify(widgetsCache)); } Selline lähenemine vähendab võrguliiklust ja kiirendab rakenduse jõudlust, kasutades varem hangitud andmeid uuesti.

Need mõisted moodustavad veebiandmete tõhusa haldamise aluse, tagades, et rakendused on kiired, usaldusväärsed ja reageerivad.