Šta su web servisi?

Definicija

Web servis je aplikacija smeštena na nekom serveru, koja je pored osnovne namene dizajnirana da podrži interakciju izmedju dve mašine preko mreže i omogući razmenu informacija izmedju njih. Smatra se da je svaki servis i web servis ako je:

  • Dostupan preko interneta ili (interne mreže)
  • Koristi stadndardizovan sistem poruka
  • Prepoznatiljv je od strane mehanizma za pretragu
  • Nije vezan za operativni sistem ili programski jezik

Pretraga servisa

Web Servisi se objavljuju na jedinstvenoj lokaciji gde se nude kao usluge. UDDI (Universal Description, Discovery and Integration) predstavlja centralizoanu lokaciju koja obezbeđuje mehanizam za registrovanje i pronalaženje Web servisa. UDDI koristi SOAP za komunikaciju i omogućava klijentima da pronađu servis, kao i serveru da ga objavi.

Servisi mogu biti zatvoreni (privatni) ali i javno dostupni. Listu javno dostupnih servisa možete pogledati u github repozitorijumu ili na adresi https://www.publicapis.com . Neki poznati javni servisi su:

Opis servisa

Web servisi imaju mogućnost da opišu sebe, a za opis servisa se koristi WSDL (eng. Web Service Description Language). WSDL je napisan XML-om i sadrži informacije gde se web servis nalazi i koji protokol za komunkaciju koristi.

Web servisi u saradnji sa desktop GUI aplikacijom

Web servisi u saradnji sa desktop GUI aplikacijom su nešto izmedju web i desktop aplikacije. Web servis na serveru daje funkcionalnost a desktop aplikacija daje prilagodljivi grafički interfejs. Komunikacija izmedju njih se ostvaruje koristeći XML ili JSON format. Web servis u saradnji sa desktop GUI aplikacijom je fleksibilniji od web aplikacije jer korisnik može da prilagodi izgled aplikacije na desktopu dok korisnik web aplikaciie mora da koristi web browser i nema uticaja na to kako će aplikacija izgledati na ekranu.

Prednosti u odnosu na web aplikaciju:

  • Štedljiviji su po pitanju opterećenja mreže i resursa servera jer pri komunikaciji šalju samo odgovor dok web aplikacije pored odgovora šalju i HTML sa formom i opisom kako ogovor treba da bude prikazan. Web servisi su idealni su za “male” uredjaje koji nisu PC tj. mobilne Pocet PC… jer je na takvom uredjaju instalirana samo front-end aplikacija a teži deo se odradjuje na serveru.
  • Lakši su za razvoj, testiranje i održavanje. Kod Web aplikacije pored neophodne funkcionalnosti je potrebno istestirati i dizajn na svim browserima i platformama dok kod web servisa autor brine samo o funkciji dok o prikazu brine klijentska aplikacija.

Tipovi web servisa

Glavni protokol za transport podataka izmedju web servisa i klijenta je HTTP iako je moguće je koristiti i druge protokole. Format za prenos podatak je XML ili JSON.

a) Big Web Services (tzv. SOAP bazirani servisi)

soap poruka

Ovi servisi slede SOAP standarde a podaci se prenose u XML formatu a opisani su WSDL. Korišćenje SOAP protokola omogućava komunikaciju izmedju aplikacija na različitim operativnim sistemima i različitim tehnologijama tako što aplikacije razmenjuju poruke “dogovorenog” formata.
Postoji nekoliko različitih tipova poruka u SOAP-u, najpoznatiji je poziv udaljenim procedurama (tzv. Remote Procedure Call – RPC). To je tip poruka u kojem jedan čvor u mreži (klijent) šalje zahtev drugom čvoru (server), nakon čega server vraća odgovor na primljeni zahtev. Ovaj protokol je naslednik je XML-RPC protokola. Koristii ista pravila za transport ali ima drugačiju strukturu poruke.

Oblasti u kojima se SOAP bazirani serivisi dobro “snalaze” su:

  • kod formalnih ugovora kada obe strane trebaju da se slože oko formata za razmenu informacija
  • kod operacija koje koriste stanja

Mana SOAP baziranih servisa je kompleksnost i prevelika „opširnost“ pri korišćenju XML-a, mada ova mana ne sprečava Microsoft i IBM da ga veoma često koriste. U mane se takodje smatra potrošnja resursa da bi se parsirao XML.

SOAP (Simple Object Access Protocol) je komunikaciski protokol koji se koristi za opis poruka izmedju aplikacija. SAOP protokol definiše i propisuje format poruka za komunikaciju. SOAP poruka je običan XML dokument koji se sastoji iz sledećih elemenata:

  • Envelope elemenat (identifikuje XML dokumenat kao SAOP poruku) je obavezan deo
  • Zalavlje (header) koji je opcioni deo
  • Telo (body) je obavezni deo i nosi informacije (parametre) zahteva i vraća rezultate tj.odgovor Web serisa.
  • Fault element koji je opcioni i pruža informacije o tome šta treba uraditi ukoliko dodje do greške prilikom procesuiranja poruke

b) RESTful web servisi

Ovi servisi su jednostavnije integrisani sa HTTP-om od SOAP servisa, ne zahtevaju XML poruke ili WSDL opise servisa. Danas se RESTfull izdvojio kao dominantan mrežni servis, potisnuo je SOAP i WSDL jer je značajno jednostavniji za korišćenje.

Karakteristike

Podaci se najčešće prebacuju u JSON formatu mada je dostupan i XML i YAML format. Zasniva se na REST arhitekturi, veoma je fleksibilan i jednostavan za razumevanje. Može biti izvršen na bilo kom klijentu ili serveru koji ima HTTP/HTTPS podršku. RESTful servisi treba da imaju sledeće osobine i karakterisitike:

  • Nepostojanje stanja (Stateless)
  • Mogućnost keširanja (Cacheable)
  • Uniformni interfejs (Uniform interface URI)
  • Izričito korišćenje HTTP metoda
  • Transfer XML i/ili JSON

Kod ovog tipa servisa, resursi (npr. statičke strane, fajlovi, podaci iz baze…) imaju sopstveni URL ili URI koji ih identifikuju. Pristup do resursa je definisan HTTP protokolom, gde svaki poziv čini jednu akciju (kreira, čita, menja ili briše podatke). Isti URL se koristi za sve operacije ali se menja HTTP metod koji definiše vrstu operacije. REST koristi “CRUD like” HTTP metode kao što su: GET, POST, PUT, DELETE, OPTIONS.

Primena RESTfull servisa

RESTfull servisi se koriste:

  • kod ograničenog propusnog opsega i resursa (povratna informacija može biti u bilo kom obliku)
  • kod operacija koje ne koriste stanja (ukoliko neka operacija treba da bude nastavljena onda REST nije pravi pristup i SOAP verovatno predstavlja bolje rešenje)
  • kod situacija gde je moguće keširanje (ukoliko informacija može biti keširana zbog operacija koje ne koriste stanja onda je ovaj pristup odličan)

Prednosti RESTfull servisa

Odlike RESTfull servisa su:

  • jednostavnost
    Klijenti koji pozivaju REST servise ne moraju da formatiraju zahteve po SOAP specifikaciji i ne moraju da parsiraju SOAP odgovor kako bi iz njega izvukli rezultat.
  • fleksibilnost formata vraćenih podataka
    Format u kome se podaci vraćaju nije unapred definisan i zavisi od samog servisa. Klijenti mogu da zatraže podatke u formatu koji im najviše odgovara, za razliku od SOAP formata koji iako je standardizovan mora da se parsira. Pa tako JavaScript može dobiti podatke u JSON formatu koji lako može da pročita, a RSS čitač u RSS-XML formatu koji može da prikaže.
  • korišćenje postojeće mrežne infrastrukture
  • brzo savladavanje tehnike

NAPOMENA:
REST nije protokol kao SOAP već je koncept koji se bazira na promeni stanja klijenta i sve akcije se obavljaju u trenutku promene tog stanja, s mogućnošću vraćanja na neko od prethodnih stanja.
REST arhitektura se tipično sastoji od klijenta i servera. Klijent inicira zahtev serveru, server procesira zahtev i vraća odgovor klijentu.

c) Web servisi zasnovani na POX (Plain Old XML)

Postoji rastući trend kod pragmatičnih programera da koriste Plain Old XML uz “REST like” URL i najbolje iz SOAP protokola. Ovaj servis koristi “sirov” XML za prenos podataka, a GET i POST metode za komunikaciju. Kada se kaže da koristi sirov XML misli se nije obavijen nikakvim drugim omotom (eng envelope) nekog message protokola. Ovaj tip servisa je jednostavniji i brži od SOAP servisa, a zadržao je “strongly-typed API” koji je najveća prednost SOAP servisa.

Pogledajte slične članke...

Podelite:

Ostavite komentar