23
Konzeption und Implementierung einer und Anbindung Praktikumsbericht von Martin Spindler

Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler

Embed Size (px)

Citation preview

Page 1: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler

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

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

• 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
Page 5: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler

• 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

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

Schichten Prozesse

Page 8: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler

1.

Verteilte Prozesse• Stabilität

• Skalierbarkeit

• Performance steigt

Page 9: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler

• 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

• 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

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

<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

• „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

Klassen:

XmlRpcMethodCall

XmlRpcMethodResponse

XmlRpcSaxHandler

XmlRpcDecoder

XmlRpcEncoder

Page 15: Konzeption und Implementierung einer XML-RPC und SOAP Anbindung Praktikumsbericht von Martin Spindler

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

• 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

• 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

• 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

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

• 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

• 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

• 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