SOAP Simple Object Access Protocol Teleu Ștefănuț Sorin – 341C5
Cuprins Ce este SOAP? Caracteristici Structura unui mesaj SOAP SOAP REQUEST SOAP RESPONSE SOAP FAULT SOAP și HTTP Avantaje și Dezavantaje Concluzii
SOAP Simple Object Access Protocol
Ce este soap? Protocol de comunicație între aplicații. Are la baza XML. Este bazat pe trimiterea de mesaje prin HTTP. Ușor și extensibil. Independent de platformă. Independent de limbaj.
Caracteristici Extensibil Neutralitate Independență Framework-ul SOAP permite ca unele trăsături ca securitatea sau routarea să fie adăugate mai târziu ca extensii. Neutralitate SOAP poate fi folosit peste orice protocol de transport cum ar fi TCP, HTTP, SMTP. Independență SOAP accepta orice model de programare.
Structura unui mesaj Soap SOAP Envelope SOAP Header Header block SOAP Body Message Body Envelope (obligatoriu) Identifică documentul XML ca mesaj SOAP Header (opțional) Determină cum ar trebui procesat mesajul Adaugă opțiuni mesajului SOAP cum ar fi autentificare, managementul tranzacției, plăți, routarea mesajului, etc. Body (obligatoriu) Conține informația propriu-zisă a mesajlui.
Exemplu simplu c = Add(n1, n2) <Envelope> <Header> <transId>345</transId> </Header> <Body> <Add> <n1>3</n1> <n2>4</n2> </Add> </Body> </Envelope> c = Add(n1, n2)
SOAP Request <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:transId xmlns:t=“http://a.com/trans”>345</t:transId> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:Add xmlns:m=“http://a.com/Calculator”> <n1>3</n1> <n2>4</n2> </m:Add> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Soap request (2) Specifică mesajul prin namespace-ul SOAP care descrie SOAP envelope. <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/”> ...etc... </SOAP-ENV:Envelope> Stabilește tipul de codare ce va fi folosit pentru mesaj
Soap request (3) Declară transId Definește metoda ...etc... <SOAP-ENV:Header> <t:transId xmlns:t=“http://a.com/trans”>1234</t:transId> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:Add xmlns:m=“http://a.com/Calculator”> <n1>3</n1> <n1>4</n2> </m:Add> </SOAP-ENV:Body> Declară transId Definește metoda
Soap response <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:transId xmlns:t=“http://a.com/trans”>345</t:transId> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:AddResponse xmlns:m=“http://a.com/Calculator”> <result>7</result> </m:AddResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Soap response (2) <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:transId xmlns:t=“http://a.com/trans”>345</t:transId> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:AddResponse xmlns:m=“http://a.com/Calculator”> <result>7</result> </m:AddResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Response folosește de obicei nume de metode cu “Response” în ele.
Soap fault Folosit pentru a transporta erori sau diverse informații de stare în cadrul unui mesaj SOAP. Apare în cadrul secțiunii Body a mesajului. Definește următoarele: Faultcode (obligatoriu) Algorithmic mecanic pentru identificarea fault-ului. Definit în specificațiile SOAP. Faultstring (obligatoriu) Explicație translatată într-un format ce poate fi citit de om a fault-ului.
Soap fault (2) Faultactor (opțional) Detail Informații despre ce a provocat fault-ul. Detail Informații despre erorile legate doar de elementul Body. Dacă nu este prezent, atunci fault-ul nu are legatură cu elementul Body.
Exemplu soap fault <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/”> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Internal Application Error</faultstring> <detail xmlns:f=“http://www.a.com/CalculatorFault”> <f:errorCode>794634</f:errorCode> <f:errorMsg>Divide by zero</f:errorMsg> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Soap și http HTTP e cel mai folosit protocol pentru transmiterea de mesaje SOAP. SOAP oferă tratament special pentru HTML. Foloseşte modelul Request – Respond. POST /Add HTTP/1.1 Host: www.a.com Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” > .... </SOAP-ENV:Envelope>
Avantaje și dezavantaje Flexibil datorită proprietăților XML. SOAP este capabil să fie folosit de mai multe protocoale de transport. Oferind suport pentru HTTP, poate trece ușor prin firewall-uri/proxy-uri fară a fi nevoie de modificarea protocolului. Dezavantaje Datorită formatului XML poate fi lent în cazul mesajelor mari. Datorită folosirii HTTP pentru transport in loc de WS-Addressing sau ESB, rolurile sunt fixate în cadru comunicării.
Concluzii SOAP e un protocol de comunicație. SOAP = HTTP + XML. Independent de platformă și limbaj. Capabil să treacă de firewall-uri. Elemente: Envelope Header Body Fault
întrebări?