konzeption und implementierung einer xml-rpc und soap anbindung praktikumsbericht von martin...
TRANSCRIPT
![Page 1: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/1.jpg)
Konzeption und Implementierung einer und
Anbindung
Praktikumsbericht von Martin Spindler
![Page 2: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/2.jpg)
1. Einleitung- SKYRIX Software AG
- Die SKYRiX Groupware
- Motivation
2. XML-RPC- Spezifikation- XML-RPC Anbindung an Objective-C
3. SOAP: Kurzer Überblick
4. Ausblick und weiterführende Arbeiten
5. Zusammenfassung
![Page 3: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/3.jpg)
• MDlink GmbH
• Nov. 2000: SKYRIX Software AG
• ca. 17 Mitarbeiter
• davon ein Drittel Studenten
• Produkt: SKYRiX Groupware
![Page 4: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/4.jpg)
![Page 5: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/5.jpg)
• Unterstützung von Skriptsprachen Automatisieren von Operationen
• Unterstützung von Hochsprachen native Clients
• Nutzen fremder Services
Standardisierte Schnittstellen:
![Page 6: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/6.jpg)
–
Schichten
• verschiedene Abstraktionsstufen• gutes Software Design• unabhängige Libraries• Trennung von UI und Model
![Page 7: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/7.jpg)
–
Schichten Prozesse
![Page 8: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/8.jpg)
1.
Verteilte Prozesse• Stabilität
• Skalierbarkeit
• Performance steigt
![Page 9: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/9.jpg)
• RPC Remote Procedure Call• Aufruf von Funktionen auf entfernten Rechnern• Funktion = Name + Parameter + Resultat
![Page 10: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/10.jpg)
• RPC über XML und HTTP• Unterstützt von vielen Programmiersprachen• Spezifikation: http://www.xmlrpc.com
![Page 11: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/11.jpg)
Call: add(3,5)
<methodCall> <methodName>add</methodName> <params> <param> <value><int>3</int></value> <param> <param> <value><int>5</int></value> <param> </params></methodCall>
<methodResponse> <params> <param> <value><int>8</int></value> <param> </params></methodResponse>
Response: 8
![Page 12: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/12.jpg)
<i4> oder <int> 4 Byte Integer -42
<boolean> Wahr oder Falsch 1
<string> ASCII String Hello World
<double> Fließkommazahl -23.52341
<dateTime.iso8601> Datum / Zeit 19980717T14:08:55
<base64> Binäre Daten eW9lYWQgdGhpcyE=
<array> <data> <value><int>3</int></value> <value>...</value> ... </data></array>
<struct> <member> <name>person_id</name> <value><int>3</int></value> </member> ...</struct>
Skalare Typen:
Komplexe Typen:
![Page 13: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/13.jpg)
• „Haussprache“ von SKYRiX• Objektorientiert (SMALLTALK für C)• Dynamisch bindende und typisierende Sprache• Beliebige Klassen können während Laufzeit instanziert werden• Syntax: [object messageWith:paramter1 and:parameter2]
![Page 14: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/14.jpg)
Klassen:
XmlRpcMethodCall
XmlRpcMethodResponse
XmlRpcSaxHandler
XmlRpcDecoder
XmlRpcEncoder
![Page 15: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/15.jpg)
XmlRpcMethodCall XmlRpcMethodResponse -initWithName:parameters:
-initWithXmlRpcString:
-paramters
-methodName
-xmlRpcString
-initWithResult:
-initWithXmlRpcString:
-result
-xmlRpcString
![Page 16: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/16.jpg)
• XmlRpcMethodCall bzw. XmlRpcMethodResponse XML Dokumente
• Beispiel: Person-Klasse mit verschiedenen Attributen
- (void)encodeWithXmlRpcCoder:(XmlRpcEnoder *)_coder {
[_coder encodeString:[self firstname] forKey:@”firstname”];
[_coder encodeDate:[self birthday] forKey:@”birthday”];
[_coder encodeData:[self image] forKey:@”image”];
[_coder encodeObject:[self address] forKey:@”address”];
}
<value NSObjectClass=“Person“> <struct>...</struct></value>
Ergebnis:
![Page 17: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/17.jpg)
• Parsen von XML Dokumenten mit SAX:– SAX = Simple API for XML
– Ereignisbasierte Callbacks z.B. “Tag geht auf”, “Tag schliesst sich”,…
• XmlRpcSaxHandler– Ergebnis: XmlRpcMethodCall bzw. XmlRpcMethodResponse
– ABER: nur standard XML-RPC Typen!!!
– ALLERDINGS: Zuordnung NSObjectClass Attribut zu Values
![Page 18: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/18.jpg)
• XML Dokument XmlRpcMethodCall bzw. XmlRpcMethodResponse
• Mit korrekten Klassen!!!
• Verwendung des XmlRpcSaxHandlers
• Funktionsweise:1. Instanzieren der Klasse anhand des NSObjectClass Attributes
2. Initialisieren dieser Klasse durch Aufruf von –initWithXmlRpcCoder:
- (id)initWithXmlRpcCoder:(XmlRpcDecoder *)_coder {
if ((self = [super init])) {
[self setFirstname:[_coder decodeStringForKey:@”firstname”]];
[self setBirthday: [_coder decodeDateForKey:@”birthday”]];
[self setImage: [_coder decodeDataForKey:@”image”]];
[self setAddress: [_coder decodeObjectForKey:@”address”]];
}
return self;
}
![Page 19: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/19.jpg)
XmlRpcClient *client = nil;
NSString *location = @“http://xmlrpc.test.com/Calculator“;id result = nil;
client = [[XmlRpcClient alloc] initWithLocation:location];
result = [client invokeMethodName:@“add“ param:[NSNumber numberWithInt:3]
param:[NSNumber numberWithInt:5]];
// result enthält das Ergebnis
[client release];
![Page 20: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/20.jpg)
• Prinzipiell wie XML-RPC, aber komplizierter• XML Schema beliebige Datentypen
spezielle Koder-Methoden fallen weg• WSDL Service Beschreibung (IDL)• Standard durch W3C• Stark Propagiert durch Microsoft, IBM,...• Einsatz in .NET, SUN ONE, ...
![Page 21: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/21.jpg)
• Bisherige Fortschritte bei SOAP Implementierung:– XML Schema Unterstützung: XmlSchemaClassGenerator,
Encoding/Decoding
– WSDLAnalyzer
– Noch nicht stabil, aber bereits erste Verbindungen mit .NET, GOOGLE,...
– XmlRpc-SOAP-PROXY
![Page 22: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/22.jpg)
• RPC = Remote Prozedure Call
• Wesentliche XML basierte RPCs: und • libXmlRpc bietet XML-RPC Anbindung an Objective-C
• Unterstützung von beliebigen Typen ist gewährleistet.
• SOAP könnte Prozesskommunikation von SKYRiX ersetzen.
![Page 23: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler](https://reader036.vdocuments.pub/reader036/viewer/2022062318/55204d6649795902118bb8e6/html5/thumbnails/23.jpg)