Professional Documents
Culture Documents
Ilhan Klisura
Šta su to Web Servisi?
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 standardizovan sistem poruka
Prepoznatiljv je od strane mehanizma za pretragu
Nije vezan za operativni sistem ili programski jezik
Pretraga servisa i Opis 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 naći na GitHub stranici.
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.
Big Web Services (tzv. SOAP bazirani servisi)
RESTful web servisi
Web servisi zasnovani na POX (Plain Old XML)
Big Web Services
(tzv. SOAP bazirani servisi)
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
Struktura Poruke
Message Name & Data Ime i podaci SOAP poruke kodirani u XML-u
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.
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.
Karakteristike RESTful servisa:
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.
0…n
Service: Opisne informacije o
određenoj porodici tehničkih
ponuda
Vezovi sadrže reference za
tModele. Ove reference
određuju specifikacije
Binding: Tehničke informacije o interfejsa za uslugu.
0…n tački ulaska u uslugu i
građevinskim specifikacijama
Potrošnja Web Servisa
Web Server S
Web service
description
Public web
method
Client of DemoWebService
Instanciraju
ći proxy web
usluge Dodavanjem
web reference
stvara se
proxy
SOAP Request and Response
HTTP GET and POST exchanges
demo1.wsdl
demo1.disco
Web Service Application Structure
HttpApplicationState
Application
property
Request
Context
WebService HttpContext
property
Response
Server
HttpServerUtility
property
Session
Demo1 HttpSessionState
property
User
property
Postavke Web Servisa
HttpApplicationState
Podijelite stanje između svih korisnika aplikacije.
HttpSessionState
Dijelite stanje od stranice do stranice za jednog korisnika.
HttpContext
Omogućava pristup objektima zahtjeva i odgovora
poslužitelja.
HttpServerUtility
Pruža metode CreateObject, Execute i MapPath.
User
Podržava autentifikaciju korisnika.
WebMethods
WebMethod metode mogu proslijediti mnoge vrste C#
i CLR
Korisnički definirani objekti također se mogu
proslijediti ako se mogu serializirati :
.Net XML serializer neće serializirati nejavne članove
Zbog ograničenja WSDL jezika
Korisnički definirani tipovi mogu se prenositi samo sa SOAP-
om. GET i POST neće raditi.
WSDL ugovor sadrži opis sheme bilo kojeg korisničkog
definiranog objekta kojeg prosljeđuje WebMethod
Klijenti Web Servisa
// use proxy
string result = proxy.demoMethod("string from client");
AutoGenerated Proxy
Stvoreno kada
postavite
referencu za
webservice
Web Servisi nasuprot Remotinga
Web Servisi:
Može ga koristiti bilo koja platforma koja razumije
XML, SOAP i WSDL.
Metadata (tipovi) koje pruža WSDL
Hostira IIS i nasljeđuje ASP-ov sigurnosni model.
Koristi HTTP protokol tako dostupan putem web
stranica i može proći kroz većinu zaštitnih zidova.
Može proslijediti samo ograničeni skup korisnički
definiranih objekata :
Nije moguće serializirati graf objekta ili sve .Net spremnike.
Web Servisi nasuprot Remotinga
Remoting:
Zahtijeva .Net platformu na klijentu kao i
na serveru.
Zahtijeva prilagođenu sigurnost
(ozloglašeno je teško dobiti pravo).
Metadata obezbeđuje Assembly.
Može proslijediti bilo koji .Net tip, uključujući
grafove objekata i sve .Net spremnike.
Bogat, ali nijedan prenosivi tip.
Browser
View
Client Application View