You are on page 1of 32

Rad sa Web Servisima

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

SOAP Message Čitava SOAP poruka

Headers Zaglavlja vezivanja protokola

SOAP Envelope <Envelope> uključuje korisni teret

SOAP Header <Header> zatvara zaglavlja

Headers Individualna zaglavlja

SOAP Body <Body> sadrži naziv SOAP 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.

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
Primjena 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
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
WSDL
WSDL Schema
• <definitions> su korijenski čvor
Interface WSDL-a
•<import> omogućava
<definitions> uključivanje drugih entiteta
<import> • <types> su definicije podataka –
xsd
<types> • <message> definira parametre
funkcije web servisa
<message>
• <portType> definira ulazne i
<portType> izlazne operacije
• <binding> određuje kako se
<binding> svaka poruka šalje putem žice
UDDI
UDDI Information Model

Provider: Informacije o subjektu koji nudi


uslugu tModel: Opisi specifikacija
za usluge.
1…n

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 Service Web Application


Kreirano sa
Developer WSDL.exe Developer

Web Server S

.asmx Service App Web Server C

Proxy Web Form


.cs .aspx
Service Application
Struktura klijenta Web Servisa

myService Proxy code


 Generirano pomoću disco.exe i wsdl.exe
(pogledajte komentare koda CalcClient.cs)
myServiceClient code
 Uobičajena ASP ili Winform aplikacija
 myService Proxy = new myService();
 Result = Proxy.myMethod(args);
DemoWebService Running

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

Klijenti web servisa koriste proxyje web


servisa za komunikaciju s Remote
servisom:
// create proxy instance
demo1WebService.demo1 proxy = new demo1WebService.demo1();

// 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

You might also like