XML-RPC & SOAP
Sven Heß & Fabio CapreraSystemprogrammierung SS 08
Sven HeßFabio Caprera Systemprogrammierung SS 08
Inhalt
XML-RPCÜberblickEntstehungKonzeptFehlerbehandlungVor- und Nachteile
SOAPÜberblickEntstehungKonzeptFehlerbehandlungVor- und Nachteile
Live-DemoAusblick
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Überblick
Extensible Markup LanguageRemote Procedure CallProtokoll zur Übertragung von DatenDatentransport über HTTPDarstellung der Daten in XML
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Entstehung
Entwicklung von Dave WinerFirma UserLand Software (1992)Web CMS: FrontierXML-RPC (1998)
Kontakt mit Microsoft Gemeinschaft entwickelte Implementationen
Dave Winer
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Übertragung
Sender Empfänger
Antwort
Anfrage
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Übertragung
Nachrichten-ÜbermittlungHTTP-POST RequestHTTP Response
RequestMethodenaufrufParameter
ResponseRückgabewert
Parameter und Rückgabewerte sind Datentypen
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Übertragung
Request: HTTP + XMLPOST/xmlrpc HTTP/1.0User-Agent: Mozilla/5.0 Host: 192.168.1.20Content-Type: text/xmlContent-length: 150
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Übertragung
Beispiel einer XML-Nachricht – AnfragePOST/xmlrpc HTTP/1.0User-Agent: Mozilla/5.0Host: 192.168.1.20Content-Type: text/xmlContent-length: 150
<?xml version=“1.0“?><methodCall>
<methodName>Ausgabe</methodName><params>
<param><value><string>Hallo</string></value>
</param></params>
</methodCall>
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Übertragung
Response: HTTP + XMLHTTP/1.0 200 OKDate: Tue, 20 Jun 2008 11:30:10 GMTServer: Apache/1.3.29Connection: closeContent-Type: text/xmlContent-length: 150
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Übertragung
Beispiel einer XML-Nachricht – AntwortHTTP/1.0 200 OKDate: Tue, 20 Jun 2008 11:30:10 GMTServer: Apache/1.3.29Connection: closeContent-Type: text/xmlContent-length: 150
<?xml version=“1.0“?><methodResponse>
<params><param>
<value><string>Welt</string></value></param>
</params></methodResponse>
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Inhalt
DatentypenInteger <int>4</int>Double <double>1.5</double>String <string>Hallo</string>Boolean <boolean>1</boolean>Datum <dateTime.iso8601>
20080520T11:30:10</dateTime.iso8601>
Base64 <base64>WE1MLVJQQw==
</base64>ArrayStruktur
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Inhalt
Beispiel eines Arrays<value><array>
<data><value><string>Hallo</string></value><value><double>1.5</double></value><value><int>10</int></value><value><boolean>1</boolean></value>
</data></array>
</value>
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Inhalt
Mehrdimensionale Arrays<value><array>
<data><value><string>Hallo</string></value><value><double>1.5</double></value><value>
<array><data><value><string>FH Wiesbaden</string></value><value><int>2</int></value>
</data></array>
</value></data>
</array></value>
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Inhalt
Struktur: Schlüssel-Wert Paare<value><struct>
<member><name>Vorname</name> <value><string>Max</string></value>
</member><member>
<name>Alter</name><value><int>25</int></value>
</member></struct>
</value>
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Konzept / Inhalt
Struktur: Verschachtelung möglich<value><struct>
<member><name>Array</name> <value>
<array><data> <value><string>FH Wiesbaden</string></value><value><double>2.5</double></value>
</data></array>
</value></member>
</struct></value>
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Fehlerbehandlung
Fehlerbeispieleunbekannte Methodeungültige Parameter
Fehler als XML Antwortfault-Tag
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Fehlerbehandlung
Fehlernachricht<?xml version=“1.0“ ?><methodResponse>
<fault><value>
<struct><member>
<name>faultCode</name><value><int>2</int></value>
</member><member><name>faultString</name><value><string>Too many parameters.</string></value>
</member></struct>
</value></fault>
</methodResponse>
Sven HeßFabio Caprera Systemprogrammierung SS 08
XML-RPC / Vor- und Nachteile
VorteilLeichte ImplementierbarkeitSimple
NachteilFeste DatentypenGebunden am Transportprotokoll(HTTP)
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Überblick
Protokoll zur Übertragung von DatenEinfache NachrichtenRPC Prinzip (Request - Response)
Client-Server-ModellXML-NachrichtenEntwickelt von MicrosoftAbgeleitet von XML-RPCVersion 1.2 (W3C Empfehlung von 2003)SOAP = SOAP kein Akronym!(Simple Object Access Protocol)
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Entstehung
Microsofts EroberungDave Winer an Bord holenXML-RPC veröffentlichen
Im Namen von Dave Winer (ohne MS)XML-RPC SOAPVerbündete suchen
IBMSAP AGLotus…
SOAP beim W3C einreichen (2000)
Standardisiertes Protokoll: SOAP 1.1Rekommandation: SOAP 1.2 (2003)
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept
AufbauÜbertragungInhalt
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept
AufbauÜbertragungInhalt
Sven HeßFabio Caprera Systemprogrammierung SS 08
Transport-Protokoll (z.B. HTTP)Transport-Protokoll (z.B. HTTP)
SOAP Envelope
SOAP / Konzept / Aufbau
SOAP EnvelopeSOAP HeaderSOAP Body(Transport-Protokoll)
SOAP Envelope
SOAP HeaderSOAP Header
SOAP BodySOAP Body
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Aufbau
SOAP EnvelopeWurzelelementNamespaces / Encoding
SOAP HeaderBeliebige XML-Informationen
Authentifizierung, Transaktionen, ...SOAP Attribute
mustUnderstand : booleanrelay : booleanrole : anyURI
SOAP EnvelopeSOAP Envelope
SOAP HeaderSOAP Header
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Aufbau
SOAP BodyNutzdaten (Payload)Beliebige XML-InhalteFehlernachricht
SOAP BodySOAP Body
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Aufbau<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<!- SOAP Header --><env:Header>
<login:Security xmlns:login=”http://beispielserver.de/login”env:mustUnderstand=”1”>
<login:username>Max Mustermann</login:username><login:password>ster08mu</login:password>
</login:Security></env:Header>
<!- SOAP Body --> <env:Body><text>Hallo Welt</text>
</env:Body>
</env:Envelope>
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Aufbau<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<!- SOAP Header --><env:Header><login:Security xmlns:login=”http://beispielserver.de/login”
env:mustUnderstand="1"><login:username>Max Mustermann</login:username><login:password>ster08mu</login:password>
</login:Security></env:Header>
<!- SOAP Body --> <env:Body><text>Hallo Welt</text>
</env:Body>
</env:Envelope>
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Aufbau<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<!- SOAP Header --><env:Header><login:Security xmlns:login="http://beispielserver.de/login"
env:mustUnderstand="1"><login:username>Max Mustermann</login:username><login:password>ster08mu</login:password>
</login:Security></env:Header>
<!- SOAP Body --> <env:Body><text>Hallo Welt</text>
</env:Body></env:Envelope>
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept
AufbauÜbertragungInhalt
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Übertragung
Transportprotokoll undefiniertVorteil: flexibel, unabhängig
Verbreitet: HTTPRequest / Response enthaltenHTTP Codes verwendbarFirewall: Port 80 meist offenVerschlüsselung: HTTPS
Alternativen: FTP, SMTP, POP3, ...
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Übertragung
EinfacheNachricht (EDI)
asynchron
RPCAnfrage /AntwortsynchronVorteil:HTTP (Request / Response)
Sender Empfänger
Sender Empfänger
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Übertragung
RPC - Anfrage (Request)<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:ns1="http://localhost/websites/sysprog/soap-php/"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!- SOAP Header --><!- SOAP Body -->
<env:Body><ns1:translateFromGerman>
<param0 xsi:type="xsd:string">hund</param0></ns1:translateFromGerman>
</env:Body></env:Envelope>
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Übertragung
RPC - Antwort (Response)<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:ns1="http://localhost/websites/sysprog/soap-php/"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!- SOAP Header --><!- SOAP Body -->
<env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:translateFromGermanResponse>
<rpc:result>return</rpc:result><return xsi:type="xsd:string">dog</return>
</ns1:translateFromGermanResponse></env:Body>
</env:Envelope>
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Übertragung
Message Path (1)Direkt
Sender Empfänger
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Übertragung
Message Path (2)Indirekt
Sender(inital sender)
Empfänger(ultimate receiver)
Intermediär 1 Intermediär m
Node 1 Node 2 Node n-1 Node n
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Übertragung
Message Path (2)Intermediäre
Header-Blöcke verarbeitenZ.B. Authentifizierung
Header AttributeRole : anyURI
next, none, ultimateReceiver, ...
Relay : booleanmustUnderstand : boolean
Intermediär m
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Übertragung
Message Path (2)Routing Mechanismus nicht definiertZusätzl. Protokoll notwendig
Microsoft: WebService Routing Protocol
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept
AufbauÜbertragungInhalt
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Inhalt
SOAP Encoding
Regeln für Serialisierung der DatenEnthält gängigste DatentypenIndividuelles Encoding möglich
encodingStyle : anyURI
xmlns:env="http://www.w3.org/2003/05/soap-envelope"xmlns:enc="http://www.w3.org/2003/05/soap-encoding"
encodingStyle="http://www.anwendung.de/mein_encoding"
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Inhalt
DatentypenstringintfloatbooleananyURIarray...
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Konzept / Inhalt
Beispiel: int, string
Beispiel: array
<name xsi:type="xsd:string">Max Muster</name><alter xsi:type="xsd:int">35</alter>
<numbers enc:itemType="xs:int" enc:arraySize="2"><number>3</number><number>5</number>
</numbers>
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Fehlerbehandlung
Fault-BlockInnerhalb SOAP BodyBesitzt mehrere Elemente
CodeReason(Detail)(Node)(Role)
V1.2 ungleich V1.1
SOAP BodySOAP Body
SOAP Fault
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Fehlerbehandlung
Code - FehlercodesValue
SenderReceiverDataEncodingUnknownVersionMismatchMustUnderstand
Subcode - anwendungsspezifischValue
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Fehlerbehandlung
Reason - FehlerbegründungText
Detail - Zusatzinfos der AnwendungNode - SOAP KnotenRole - Funktion des Knotens
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Fehlerbehandlung<env:Body><env:Fault>
<env:Code><env:Value>env:Sender</env:Value><env:Subcode><env:Value>rpc:BadArguments</env:Value>
</env:Subcode></env:Code><env:Reason>
<env:Text xml:lang="en-US">Processing error</env:Text><env:Text xml:lang="de-DE">Bearb. Fehler</env:Text>
</env:Reason><env:Detail>
<message>Invalid card number</message></env:Detail>
</env:Fault></env:Body>
Quelle: www.w3.org
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Fehlerbehandlung
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>
<soap:Fault><faultcode>soap:Server</faultcode><faultstring>Processing error</faultstring><detail>
<message>Invalid card number</message></detail>
</soap:Fault></soap:Body>
</soap:Envelope>
SOAP Fault V1.1
Sven HeßFabio Caprera Systemprogrammierung SS 08
SOAP / Vor- und Nachteile
VorteilStandardisiertPlattform-unabhängigFlexibelBreite Unterstützung
NachteilAufgeblähter CodeHoher Rechenaufwand
Sven HeßFabio Caprera Systemprogrammierung SS 08
Inhalt
MotivationXML-RPC
ÜberblickEntstehungKonzeptFehlerbehandlungVor- und Nachteile
SOAPÜberblickEntstehungKonzeptFehlerbehandlungVor- und Nachteile
Live-DemoAusblick
Sven HeßFabio Caprera Systemprogrammierung SS 08
Ausblick
XML-RPCWenige ImplementationenKaum erweitert (Stand 1999)
SOAPAnerkannter StandardBeliebt für WebServicesViele Implementationen / Erweiterungen
SOAP Attachments
Geeignet für kleine Projekte
Zukunftssicheres Protokoll
Sven HeßFabio Caprera Systemprogrammierung SS 08
Quellen
XML-RPC Home Pagewww.xmlrpc.com
wikipedia.de - Wikipedia, die freie Enzyklopädiehttp://de.wikipedia.org/wiki/XML-RPC
http://de.wikipedia.org/wiki/SoapWorld Wide Web Consortium - Web Standards
http://www.w3.org/TR/soap12-part1/Understanding SOAP (2000)
Kennard Scribner, Mark C. Stiver – SAMSWeb Services: Die Standards (2004)
Tobias Hauser, Ulrich M. Löwer – Galileo Computing
Sven HeßFabio Caprera Systemprogrammierung SS 08
Vielen Dank für die Aufmerksamkeit
Fragen?
KontaktSven Heß Fabio [email protected] [email protected]
Projekt-Homepagehttp://sysprog.fc-home.com