SOAP
SOAP (Simple Object Access Protocol) je komunikacijski protokol, neovisan o platformi, baziran na XMLu koji se koristi za razmjenu informacije između aplikacije preko HTTP protokola. Razvijen je kako bi se omogućila jednostavna komunikaciju tekstualnim sadržajem preko HTTP komunikacijskog protokola koji je prilagođen upravo razmjeni tekstualnih sadržaja. Protokol je neovisan o programskom jeziku, platformi i jednostavno proširiv.
Povijest
Dosadašnje aplikacije za međusobnu udaljenu komunikaciju koristile su pozive udaljenih procedura (Remote Procedure Calls - RPC) poput DCOMa i CORBAe. Međutim HTTP protokol nije namijenjen prijenosu binarnih podataka, a takav način prijenosa uzrokuje brojne sigurnosne probleme, kao i probleme kompatibilnosti. Normalno ponašanje proxy poslužitelja je da iz sigurnosnih razloga blokira takvu vrstu prometa.
Bolji način komunikacije preko HTTP protokola je prijenos tekstualnih podataka pošto je HTTP protokol namijenjen takvoj vrsti prijenosa i podržan je o strane gotovo svih internetskih poslužitelja i preglednika.
SOAP protokol omogućuje komunikaciju između aplikacija na različitim operacijskim sustavima, na različitih platformama i pisanih u različitim programskim jezicima.
U svibnju 2000. godine velike računalne kompanije (AserLand, Ariba, Commerce One, Compaq, Developmentor, HP, IBM, IONA, Lotus, Microsoft i SAP AG predložili su W3Cu SOAP Internet protokol za koji su se nadali da će promijeniti i uvelike unaprijediti razvoj klijentskih aplikacija koje će biti povezane s aplikacijama ne poslužiteljima koristeći Internet HTTP protokol i XML.
W3C je taj opis protokola objavio kao preporuku SOAP verzije 1.1. W3C nastavlja s razvojem preporuke SOAP verzije 1.2.
Princip rada SOAP protokola
SOAP protokol omogućuje komunikaciju između aplikacija koje rade na različitim operacijskim sustavima i različitim tehnologijama. Jedini uvjet koji moraju zadovoljiti je da u komunikaciji mogu koristiti HTTP protokol.
Aplikacije razmjenjuju poruke dogovorenog formata. Poruke su formatirane kao XML dokumenti pa je njihova obrada i provjera jednostavna i može ih provoditi bilo koji program namijenjen radu s XML dokumentima.
SOAP klijent kreira XML dokument koji sadrži odgovarajući zahtjev. Taj dokument formatiran je u skladu sa SOAP specifikacijom. Dokument dolazi do SOAP poslužitelja koji obrađuje pristigle zahtjeve i na osnovu pristiglih zahtjeva pokreće odgovarajuću aplikaciju. Po završenoj obradi SOAP poslužitelj, korištenjem SOAP protokola vraća poruku odgovora SOAP klijentu.
SOAP poruka
SOAP poruka je XML dokument zadanog formata koji mora zadovoljavati nekoliko pravila:
- SOAP poruka mora biti ispravno formatirani XML dokument i koristiti SOAP omotnicu i SOAP XML prostor imena;
- SOAP poruka ne smije sadržavati DTD referencu niti posebne naredbe za procesiranje XML dokumenta.
SOAP poruka sastoji se od nekoliko elemenata:
- obavezna omotnica (Envelope) koja identificira XML dokument kao SOAP poruku. Omotnica koristi xmlns:soap područje imena (namespace) i uvijek mora imati vrijednost http://www.w3.org/2001/12/soap-envelope koja definira omotnicu kao SOAP omotnicu.
- neobavezno zaglavlje (header) koji nosi odgovarajuće informacije zaglavlja. U zaglavlju se nalaze informacije o primjeni poruke, identifikatoru prijenosa te podaci o pošiljatelju i primatelju poruke. Format i sadržaj podataka ovisi o vrsti SOAP poruke. Ako se ovaj element koristi unutar SOAP poruke, mora biti neposredno podređen Envelope elementu.
- obavezno tijelo poruke (body) s podacima o pozivu i odgovoru te porukama o grešci koje su se dogodile tijekom obrade poruka.
- dio poruke s porukama o greškama (fault). Ovaj dio ugnježđen je unutar tijela poruke (Body elementa) i nije obavezan. Ako se tijekom komunikacije dogodila nekakva greška, informacije o nastalim greškama bilježe se unutar Fault elementa. Kodovi grešaka propisani su preporukom SOAP protokola.
Primjer SOAP poruke
SOAP zahtjev
Ovo je poruka zahtjeva kojom se od udaljene aplikacije zahtjeva informacija o cijeni artikla na stanju za artikal čekić.
<?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="cijene"> <m:VratiCijenu> <m:NazivArtikla>Čekić</m:NazivArtikla > </m:VratiCijenu> </soap:Body> </soap:Envelope>
SOAP odgovor
Ovo je poruka odgovora kojom udaljena aplikacija vraća traženu cijenu artikla čekić.
<?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="cijene"> <m:VratiCijenuOdgovor> <m:Cijena>21.78</m:Cijena> </m:VratiCijenuOdgovor > </soap:Body> </soap:Envelope>