SOAP - Simple Object Access Protocol -
-
Upload
karly-dale -
Category
Documents
-
view
44 -
download
0
description
Transcript of SOAP - Simple Object Access Protocol -
SOAP-Simple Object Access Protocol-
Puşcaş Radu , 342 C5
Servicii Web
Ce sunt serviciile Web?
Ce rol are un serviciu Web?
Cum arată un serviciu Web?
Arhitecturi bazate pe servicii Web
Just-In-Time integration – integrarea dinamică a serviciilor, independent de platformă
Implementarea arhitecturiiLipsurile stivei
SOAP
Simple Object Access ProtocolProtocol standard pentru impachetarea mesajelor
comunicate de aplicaţiiOferă un înveliş în care informaţia este
transportatăSe bazează pe XMLOferă un set de reguli pentru transformarea
datelor folosite de aplicaţii in XML-uri
Mesaje XML
Oferă o cale accesibilă aplicaţiilor pentru a comunica între ele
Independete de platformaTipuri de mesaje – RPC şi EDIDefinirea unui XML
- <phoneNumber>(123) 456-7890</phoneNumber>- <phoneNumber>
<areaCode>123</areaCode><exchange>456</exchange><number>7890</number>
</phoneNumber>- <phoneNumber area="123" exchange="456" number="7890" />- <phone area="123">
<exchange>456</exchange><number>7890</number>
</phone>
Mesaje SOAP
Conţinutul unui mesaj SOAP Header
Blocuri de informaţie Body
Datele de trimis
In header sunt incluse informaţii despre rutare, autentificare, conext, livrare
In body, poate intra orice sub formade XML
Exemplu de mesaj SOAP
<s:Envelope xmlns:s="http://www.w3.org/2001/06/soap-envelope"> <s:Header> <m:transaction xmlns:m="soap-transaction" s:mustUnderstand="true"> <transactionID>1234</transactionID> </m:transaction> </s:Header> <s:Body> <n:purchaseOrder xmlns:n="urn:OrderService"> <from> <person>Christopher Robin</person> <dept>Accounting</dept> </from> <to> <person>Pooh Bear</person> <dept>Honey</dept> </to> <order> <quantity>1</quantity> <item>Pooh Stick</item></order> </n:purchaseOrder> </s:Body></s:Envelope>
SOAP faults
Un tip de mesajInformaţia conţinută:
fault code fault string fault actor fault details
Standard faults: VersionMismatch MustUnderstand Server Client
SOAP fault - exemplu
<s:Envelope xmlns:s="...">
<s:Header>
<f:Misunderstood qname="abc:transaction"
xmlns:="soap-transactions" />
</s:Header>
<s:Body>
<s:Fault>
<faultcode>MustUnderstand</faultcode>
<faultstring>
Header(s) not understood
</faultstring>
<faultactor>http://acme.com</faultactor>
</s:Fault>
</s:Body>
</s:Envelope>
Căi şi actori
Un mesaj SOAP poate trece prin mai mulţi intermediari pană să ajungă la destinaţie
Standardul SOAP nu defineşte o metodă pentru definirea unei căi către destinaţia finală
Atributul “actor”
SOAP routing protocol
Implementat de MicrosoftDefineşte un standard pentru header-ele block
pentru specificarea informaţiilor despre rutare<s:Header>
<m:path xmlns:m="http://schemas.xmlsoap.org/rp/" s:mustUnderstand="true">
<m:action>http://www.im.org/chat</m:action>
<m:to>http://D.com/some/endpoint</m:to>
<m:fwd>
<m:via>http://B.com</m:via>
<m:via>http://C.com</m:via>
</m:fwd>
<m:rev><m:via/></m:rev>
<m:from>mailto:[email protected]</m:from>
</m:path>
</S:Header>
Tipuri
Sunt definite 3 moduri pentru definirea unui tip:
1. Folosirea xsi:type pentru fiecare nod<person><name xsi:type="xsd:string">John Doe</name></person>
2. Referirea unui XML Schema care defineşte un anumit tip
<person xmlns="personschema.xsd"><name>John Doe</name></person>
3. Referirea unui XML Schema care defineşte un element particular in interiorul lui
<person xmlns="urn:some_namespace"><name>John Doe</name> </person>
SOAP in HTTP
HTTP e cel mai folosit protocol pentru transmiterea de mesaje SOAP
SOAP oferă tratament special pentru HTMLSe foloseşte modelul Request – Respond
POST /StockQuote HTTP/1.1
Content-Type: text/xml
Content-Length: nnnn
SOAPAction: "urn:StockQuote#GetQuote"
<s:Envelope
xmlns:s="http://www.w3.org/2001/06/soap-envelope">
...
</s:Envelope>
Avantaje şi dezavantaje
AvantajeSOAP este capabil sa fie folosit de mai multe
protocoale de transportOferind suport pentru HTTP, poate trece usor prin
firewall-uri/proxy fară a fi nevoie de modificarea protocolului
Dezavantaje Datorită formatului XML poate fi lent in cazul mesajelor
mari Datorită folosirii HTTP pentru transport in loc de WS-
Addressing sau ESB, rolurile sunt fixate in cadru comunicării