Protokol pro snadný přístup k objektů, DEFINICE

SOAP (Simple Object Access Protocol jednoduchý protokol pro přístup k objektům) je protokol na bázi XML, který definuje ...


SOAP (Simple Object Access Protocol jednoduchý protokol pro přístup k objektům)
je protokol na bázi XML, který definuje rámec pro předávání zpráv mezi
individuálními systémy prostřednictvím Internetu. Tento protokol je typicky
využíván pro volání a provádění procedur na dálku. SOAP byl původně koncipován
pro použití jako nadstavba nad HTTP, což mělo umožnit jeho snadné začlenění do
webových aplikací, ale jiné transportní protokoly, jako např. SMTP, lze využít
rovněž.

Představte si, že budujete internetovou aplikaci pro poskytování služeb.
Zákazníci budou s aplikací pracovat tak, že jí budou poskytovat informace. Vaše
servery zpracují data a vrátí výsledky zpět zákazníkům. Jaký je nejlepší způsob
pro zadání dat do systému a jejich následné zpětné získání?
Mohli byste například postavit na míru šitou aplikaci typu klient/server a
požadovat od vašich zákazníků, aby při přístupu k ní používali klientský
software. Ale pokud provozujete obchod prostřednictvím Internetu, budete muset
postavit klienta, který by běžel na všech myslitelných klientských platformách,
jako jsou Windows, Macintosh, UNIX, Linux atd. To by znamenalo spoustu práce s
psaním klientského softwaru.
A co tedy raději použít Web? To by šlo, ale stále ještě budete vázáni typem
prohlížeče, stále ještě budete muset vybudovat infrastrukturu k zasílání a
přijímání vstupů a výstupů a formátovat data a datové pakety pro přenos. V
případě komplikované aplikace můžete sáhnout po jazyce Java nebo ActiveX, ale
pak nejspíše skončíte s tím, že budete ztrácet uživatele v důsledku problémů se
šířkou pásma a s bezpečností.

Nalezené řešení
Je tedy zapotřebí mít k dispozici jednoduchý protokol, který usnadňuje
paketování aplikačních dat a jejich posílání tam a zpět přes Web, přičemž k
tomu využívá značky (tags) jazyka XML. Tím se zajistí, že jak vysílající, tak i
přijímající systém bude moci snadno interpretovat obsah jakékoli zprávy. A tím,
že využijete http jakožto transportní protokol, zajistíte, že nebude třeba
vytvářet nové díry skrze firewally.
Tato filozofie velmi dobře vystihuje koncepci a fungování protokolu SOAP. Jde o
jednoduchý protokol, který umožňuje, aby uzly dálkově aktivovaly aplikační
objekty a přijímaly výsledná data. SOAP představuje nejmenší společný
jmenovatel pro aplikace, aby mohly posílat zprávy. Klient může zaslat zprávu,
která aktivuje nějaký program určitého objektu, a server může vrátit výsledky
po proběhnutí tohoto programu.
SOAP je skutečně velmi jednoduchý. Zprávy nejsou ničím jiným než XML dokumenty,
které mohou obsahovat instrukce protokolu SOAP. Ačkoli alespoň teoreticky může
SOAP být svázán s jakýmkoli transportním aplikačním protokolem, bývá daleko
nejčastěji používán společně s HTTP.
Kennard Scribner, spoluautor knihy "Understanding SOAP: The Authoritative
Solution" (Macmillan, USA, 2000), vysvětluje, že SOAP pracuje tak, že
konvertuje určité informace, jako například argumenty dat a transakční
identifikátory, do formátu XML.
Data jsou poté zabalena do http nebo jiného transportního protokolu a poslána
na místo určení, což bývá obvykle nějaký server. Tento server extrahuje data
SOAP, provede požadované zpracování a vrátí zpracované výsledky ve formě SOAP
odpovědi.

Varování
Scribner říká, že "SOAP funguje jako volací protokol procedur na dálku, podobně
jako to v případě jazyka Java činí protokol Remote Method Invocation nebo u
CORBA (Common Object Request Broker Architecture) General Inter-ORB Protocol".
Dále říká, že díky tomu, že jsou HTTP a XML tak široce implementovány a
užívány, SOAP je "pravděpodobně nejsnáze škálovatelný protokol pro dálkové
volání procedur, který byl až dosud vymyšlen". Ale současně varuje, že "SOAP
není konstruován k tomu, aby pracoval jako úplná objektová architektura".
SOAP nenahrazuje ani Remote Method Invocation protokol v Javě, ani Distributed
Component Object Model a CORBA. Poskytuje pouze rámec pro použití kteréhokoli z
uvedených modelů. SOAP není úplným řešením: neumí zacházet s aktivací objektů a
neumí nic ohledně bezpečnosti. Scribner konstatuje, že "architekti, kteří SOAP
vymysleli, zcela zřejmě věřili, že tyto programové doplňky si uděláte sami,
přičemž tento kód přidáte jako další nástavbovou vrstvu nad samotný SOAP spíše,
než že byste tento kód montovali přímo do vlastního protokolu".

Speciální vlastnosti
Co je na protokolu SOAP speciálního? Pomocí protokolu SOAP mohou vývojáři
uvádět do provozu webové služby tak rychle, jak rychle dokáží budovat SOAP
zprávy pro programová volání existujících aplikací a potom zabudovat tyto
aplikace do jednoduchých webových stránek. Avšak vývojáři mohou rovněž použít
volání SOAP protokolem v dedikovaných aplikacích a mohou též stavět aplikace,
které lze realizovat na webových stránkách jiných subjektů, čímž se ušetří
časově a finančně náročný vývoj.
Mark Stiver, spoluautor publikace Understanding SOAP, říká, že přesně toto je
cíl firmy Microsoft v souvislosti s projektem Microsoft.Net. Stiver vysvětluje,
že "toto je oblast, kde SOAP opravdu exceluje. Nechává vývojářům dostatečný
prostor k tomu, aby se mohli rozumně rozhodovat jak budovat aplikace, aniž by
se museli nějak příliš zabývat otázkami kompatibility".

Vzorek žádosti v protokolu SOAP
Následující příklad uvádí SOAP-žádost nazvanou GetLastTradePrice, která
umožňuje klientovi požádat o sdělení nejnovější ceny určité akcie na burze.
POST/StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-length: nnnn
SOAPAction: "SomeURI"
xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/ "
SOAP-ENV:encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/ ">

DIS
Prvních pět řádek představuje část HTTP hlavičky a indikuje typ zprávy (POST),
hostitele, typ obsahu a délku i akční hlavičku SOAP, která poskytuje informaci
o intencích soapové žádosti. Vlastní zpráva SOAP je XML dokument představený
soapovou obálkou a následovaný vlastním XML prvkem, který specifikuje prostor
názvu v SOAP a atributy, pokud existují. Soapová obálka může obsahovat hlavičku
(v našem příkladě tam žádná není), následovanou tělem soapové zprávy. V našem
příkladě tělo specifikuje žádost GetLastTradePrice a symbol specifické akcie,
jejíž cena je požadována. Přichází odpověď
Reakce na tuto žádost SOAP by mohla vypadat následovně:
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/ "
SOAP-ENV:encodingStyle=" http://schemas.xmlsoap.org/soap/encoding/"/ >
34,5
První tři řádky opět představují část hlavičky HTTP a vlastní soapová zpráva
sestává z obálky, která obsahuje reakci na původní žádost, označenou labelem
GetLastTradePriceResponse, a obsahuje vrácenou číselnou hodnotu, v našem
případě 34,5.

0 2744 / pen









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.