Professional Documents
Culture Documents
Infrastruktura Za Elektronsko Poslovanje Vezbe 04 FTNKM StefanPitulic
Infrastruktura Za Elektronsko Poslovanje Vezbe 04 FTNKM StefanPitulic
elektronsko poslovanje
SOAP
SOAP
Simple Object Access Protocol - protokol pristupa
jednostavnog objekta
način da se podacima lako pristupi preko mreže
objekat može biti bilo šta iz jedne apliikacije, kao što je
Microsoft-ov Word, do baza podataka.
koristi se za prosleđivanje instrukcija i podataka nazad i
zmeđu XML Web servisa i njegovih klijenata.
dozvoljava komunikaciju dva objekta, bez obzira gde se
nalaze
SOAP
SOAP je protokol za razmenu struktuiranih informacija (poruka) u
distribuiranim, decentralizovanim okruženjima. On omogućava
komunikaciju između aplikacija koje rade pod različitim OS i koriste
različite tehnologije i programske jezike.
Internet
SOAP SOAP
čvor SOAP čvor
poruka
Internet
Header
Body
Telo sadrži
aktuelnu poruku
SOAP dokument
SOAP je protokol kojim su formalno definisane
standardizovane XML poruke za razmenu informacija u
raspodeljenim sistemima.
Konceptualno, SOAP poruka zamišljena je kao pismo.
Sastoji se od zaglavlja (engl. header) i tela (engl. body)
dokumenta, omotanih kovertom (engl. envelope)
U stvarnosti, SOAP poruka je XML dokument čiji je koreni
element nazvan „Envelope“, a njegova dva podelementa
„Header“ i „Body“.
Arhitektura SOAP-a
SOAP protokol se sastoji od tri dela:
•koverta (envelope) koja definše framework za opisivanje šta
je u poruci i kako to procesuirati,
•skup šifriranih pravila koja odeđuju kako su podatak i
komande predstavljene kao XML, i
•način komunikacije SOAP-a sa njegovim objektima, posebno
preko modela zahteva i odgovora.Treći deo je obično u obliku
HTTP zaglavlja (skup instrukcija na na početku poruke).
Zajedno ove komponente čine SOAP poruku.
Glavni cilj dizajniranja SOAP-a je jednostavnost i proširivost.
SOAP poruka
Format SOAP poruke
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
Primer
SOAP poruka uključena u HTTP zahtev
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceDetailed
xmlns:m="Some-URI">
<Symbol>DEF</Symbol>
<Company>DEF Corp</Company>
<Price>34.1</Price>
</m:GetLastTradePriceDetailed>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP poruka uključena u HTTP odgovor
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Header>
<t:Transaction
xmlns:t="some-URI"
xsi:type="xsd:int" mustUnderstand="1">
5
</t:Transaction>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse
xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP Envelope sadrži enconding style atribut
koji definiše korištena pravila serijalizacije u
dotičnoj SOAP poruci. Taj se atribut može
pojaviti u bilo kom elementu i prenosi se na sve
podređene elemente koji ne sadrže vlastiti
atribut.
SOAP Header je prvi podređeni element SOAP evenlope
elementa.
Svaki element može sadržavati atribut mustUnderstand
kojim se primaocu naznačuje da je obvezno procesiranje
zaglavlja (vrednost atributa =1).
SOAP poruka koja putuje do određene destinacije obično
na svom putu prolazi kroz skup posrednika. Za tu svrhu
postoji poseban atribut koji definiše kojim je sve
korisnicima namenjena poruka.
SOAP Body element je podređeni element SOAP evenlope
elementa koji se koristi za prenos parametara metoda i
poruka o greški.
Poziv udaljene procedure korišćenjem
SOAP i HTTP protokola
Korišćenje SOAP-a u klasičnom
web servisu
Razmena SOAP poruka
Postoje dva načina razmene SOAP poruka:
Razmena dokumenata: SOAP telo poruke sadrži
jedan ili više podelemenata koji mogu da poštuju bilo
koji format (specifičan za aplikaciju). Npr. SOAP telo
može sadržavati XML formatiranu narudžbenicu.
Poziv udaljene procedure; SOAP poruka identifikuje
ime operacije podržane u prijemnom čvoru i
uključuje parametre potrebne za njeno izvršenje (na
pr. zahtev za najnoviju cenu akcije).
Primer SOAP poruke
primer zahteva za SOAP poruku
<?xml version=“1.0″?>
<soap:Envelope xmlns:soap=“http://www.w3.org/2001/12/soap-
envelope„
soap:encodingStyle=“http://www.w3.org/2001/12/soap-encoding„>
<soap:Body xmlns:m=“cene“>
<m:VratiCenu>
<m:NazivArtikla>Čokolada</m:NazivArtikla >
</m:VratiCenu>
</soap:Body>
</soap:Envelope>
Ovo je poruka odgovora kojom udaljena aplikacija vraća traženu cenu
artikla čokolada.
<?xml version=“1.0″?>
<soap:Envelope xmlns:soap=http://www.w3.org/2001/12/soap-
envelope soap:encodingStyle=“http://www.w3.org/2001/12/soap-
encoding„>
<soap:Body xmlns:m=“cene“>
<m:VratiCenuOdgovor>
<m:Cena>121.78</m:Cena>
</m:VratiCenuOdgovor >
</soap:Body>
</soap:Envelope>
SOAP povezivanje
SOAP povezivanje se odnosi na protokol koji se koristi
za prenos SOAP poruka između SOAP čvorova. SOAP
metodologija dopušta da se između svakog para
čvorova na putanji može koristiti drugi protokol.
Primer:
HTTP zahtev HTTP odgovor (uspešno obrađen zahtev, kod 200)
<?xml version="1.0"?>
SOAP odgovor
<soap:Envelopexmlns:soap=“http://www.w3.org/2001/12/soap-envelope”
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
sabiranje.asmx
<%@ WebService Language="VB" Class="sabiranje" %>
Imports System
Imports System.Web
Imports System.Web.Services
Imports System.Xml.Serialization
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
Public Class sabiranje
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function ZBIR (ByVal x As Integer, ByVal y As Integer) As Integer
Return x + y
End Function
End Class
SOAP poruka od servisa sabiranje
POST /Projects/sabiranje.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/ZBIR"