close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

4. Web Services Was sind Web Services?

EinbettenHerunterladen
4. Web Services
Inhalt:
 Begriff und Eigenschaften von Web-Services
 Service-Orientierte Architektur und Komponenten
 Protokolle
 SOAP-PHP-Beispiel
 Cloud-Computing
Peter Sobe
Internettechnologien
1
Was sind Web Services?
Web Services stellen wohl definierte Dienste dar, die von WebApplikationen im Internet von den Dienste-Anbietern abgerufen
werden können. Es existieren bereits eine Anzahl von Anbietern,
wie z.B. Google, Amazon, Salesforce, Microsoft-Azure.
Definitionen:
Die Web Services Architecture Arbeitsgruppe vom W3C definiert
Web Services als
"ein durch eine URI (nach RFC2396) identifiziertes
Softwaresystem, dessen öffentliche Schnittstellen und
Protokollbindungen durch XML definiert und beschrieben sind."
Peter Sobe
Internettechnologien
2
Was sind Web Services?
Im Unternehmen Daimler-Chrysler wird meistens folgende
Definition verwendet:
"`A Web Service is a piece of server-side software that
provides a certain functionality (as a black box) and is
accessible through Internet protocols using XML/SOAP
messages with a described and published interface
(typically by means of WSDL).
Those interface descriptions should be registered in a
(global) registry such as UDDI."'
Peter Sobe
Internettechnologien
3
Service orientierte Software-Architektur (SOA)
Im Software-Engineering sieht man darin eine Entwicklungsrichtung, die so genannte Service Orientierte Architektur
(SOA).
Im Gegensatz zu bisherigen Entwicklungen bei WebApplikationen, wie die so genannte Middleware bei verteilten
Systemen, z.B. Unix-RPC, RMI, CORBA oder DCOM, aber auch
bei Browsern , HTML – Versionen usw. ist der Bereich Web
Services gegenwärtig noch durch eine relativ konstruktive und
offene Kooperation führender IT-Firmen (Microsoft / IBM / SUN/
Oracle / HP / SAP / Software AG / ... ) geprägt.
Die bislang definierten Entwürfe und Standards basieren generell
auf den Web-Basistechnologien (TCP/IP, http , XML) und sind
offen für alle Anwender
Peter Sobe
Internettechnologien
4
Komponenten in einer SOA
Bislang Middleware-Lösungen, oder auch an Sprachen
angebundene verteilte Softwarelösungen.
Es wurden nun Standards entwickelt, deren Architektur nicht mehr
von verwendeter Middleware abhängt.
Das Bild unten zeigt ein Anwendungsbeispiel mit
Hauptkomponenten
Quelle: S.Kühn,
Skript zur
Lehrveranstaltung
IKS
Peter Sobe
Internettechnologien
5
Komponenten in einer SOA
Webservice-Anbieter für WS (hier Flug buchen, Hotel buchen,
Auto buchen), die auf Rechnerknoten im Internet entsprechende
SOAP-Server jeweils für einen konkreten Service zur Verfügung
stellen. SOAP steht für Simple Object Access Protocol.
Nutzer für WS (hier Reise buchen)
Als Nutzer eines WS treten hier immer Programme, also
Software auf und keine Personen. Die Software kann natürlich
eine Web-Anwendung sein, die auf der serverseitigen
Skriptschicht einen entsprechenden SOAP-Client integriert hat.
Der SOAP-Client schickt dann seine Anforderungen (Daten in
XML-Dokument) an den SOAP-Server, der seine Antwortdaten
dann ebenfalls als XML-Dokument sendet. Diese Daten müssen
von der empfangenden Software verarbeitet werden.
Peter Sobe
Internettechnologien
6
Komponenten in einer SOA
Beschreibung des WS über WSDL.
WSDL steht für Web Service Description Language. Die
WSDL-Datei ist eine XML-Datei, die den Webservice mit seiner
Funktionsweise beschreibt. Sowohl der SOAP-Server als auch
der SOAP-Client können sich über eine URL auf diese
Beschreibung beziehen. Diese Variante muss nicht unbedingt
benutzt werden.
Es existieren für SOAP-Server und SOAP-Client die beiden
Arbeitsregime:
- non-WSDL-Mode und
- WSDL-Mode.
Im non-WSDL-Mode wird weder eine WSDL-Datei noch eine
WS-Registratur (UDDI) genutzt. In diesem Fall müssen alle
notwendigen Angaben im Client und Server vorhanden sein.
Peter Sobe
Internettechnologien
7
Komponenten in einer SOA
Protokoll zur Web-ServiceInteraktion:
 Pures HTTP mit Request und
Response mittel GET oder POST
 SOAP – Simple Object Access
Protocol
 REST – Representational State
Transfer
Peter Sobe
Internettechnologien
zählt eigentlich noch nicht zur
Web-Service-Schicht. Man
kann so aber schon WS
programmieren.
Großteil der SOA Anwendungen benutzen
SOAP.
Alternative zu SOAP.
Einfacher und kürzer,
favorisiert zustandslose
Dienste.
8
Komponenten in einer SOA
Register der Web-Services (UDDI)
UDDI- Universal Description, Discovery and Integration.
UDDI ist XML-basiert und auch standardisiert.
Webservice-Anbieter können hier ihre Dienste registrieren
(WSDL-Datei wird gespeichert), damit sie von potentiellen
Nutzern gefunden werden können. Im non-WSDL-Mode wird
diese Komponente nicht benötigt.
Quellen:
• http://www.w3.org/2000/xp/Group/
• http://www.uddi.org/
• http://www.w3.org/DesignIssues/Architecture
Peter Sobe
Internettechnologien
9
Protokolle zur Web-Service-Interaktion
Transport-Protokolle
XML over HTTP
SOAP
REST
HTTPS
HTTP
SSL
TCP
IP
Peter Sobe
Internettechnologien
10
XML über HTTP
XML über HTTP:
Der HTTP-Post-Request kann XML-Daten im Body transportieren.
Beispiel:
AJAX-Client ruft auf …
req.send( “xml=“+xmlstring );
AJAX-Client wertet Ergebnis
des Request aus …
AJAX-Server-Webseite
(PHP und SimpleXML) ruft auf …
$dom = new DOMDocument;
$dom->loadXML($_POST[xml]);
// danach wird $dom ausgewertet
// und ein neues Objekt $resultxml
// aufgebaut
$resultxml->saveXML();
var xmlobj = req.responseXML;
Peter Sobe
Internettechnologien
11
SOAP (1)
SOAP ist ein standardisiertes Protokoll, das über ein festgelegtes
XML-Dateiformat (Envelope-Element) die Daten (Anforderungen
an WS, Ergebnisdaten vom Server) zwischen Client und
Webservice-Server austauscht. Als Transportprotokoll wird dabei
im Internet http bzw. https benutzt.
Da der SOAP-Client in der serverseitigen Skriptschicht integriert
ist, müssen die jeweiligen SOAP-Implementierungen der benutzten
Skriptsprachen, wie PHP, Perl usw. beachtet werden.
Peter Sobe
Internettechnologien
12
Beispiel-Anwendung
Beispiel: Ein Thermometer-Service, der für verschiedene
angfragte Positionen Temperaturwerte für innen und außen
(inside/outside) zurückgibt.
Temperatursensor
„Nordseite“
Temperatursensor
„Suedseite“
Temperatursensor „Eingang“
Client / Service –
Interaktion:
Peter Sobe
Internettechnologien
13
SOAP-WSDL (1)
P.Sobe/R.Großmann
Internettechnologien
14
SOAP-WSDL (2)
Der prinzipielle Aufbau eines WSDL-Dokumentes
P.Sobe/R.Großmann
Internettechnologien
15
SOAP-WSDL (3)
WSDL:
<definitions name="TemperatureService"
targetNamespace="http://myhome.net/temperatureservice.wsdl" ...>
<types>
<schema targetNamespace="http://myhome.net/temperatureservice.xsd
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="TemperatureRequest">
<complexType>
<all> <element name="position" type="string"/> </all>
</complexType>
</element>
<element name="TemperatureResponse">
<complexType> <all>
<element name="inside" type="float"/>
<element name="outside" type="float"/>
</all> </complexType>
</element>
</schema>
</types>
Peter Sobe
Internettechnologien
16
SOAP-WSDL (4)
WSDL Fortsetzung:
<message name="inputmsg">
<part name="body" element="xsd1:TemperatureRequest"/>
</message>
<message name="outputmsg">
<part name="body" element="xsd1:TemperatureResponse"/>
</message>
<portType name="TemperPortType">
<operation name="GetTemperature">
<input message="tns:inputmsg">
<output message="tns:outputmsg">
</operation>
</portType>
Peter Sobe
Internettechnologien
17
SOAP-WSDL (5)
WSDL continued:
<binding name="TemperatureBinding" type="tns:TemperPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetTemperature">
<soap:operation soapAction="http://myhome.net/GetTemperature"/>
<input> <soap:body use="literal"/> </input>
<output> <soap:body use="literal"/> </output>
</binding>
<sevice name="TemperatureService">
<documentation> A thermometer at position returns
inside and outside value</documentation>
<port name="TemperPostType" binding="tns:TemeratureBinding">
<soap:address location="http://myhome.net/temperaturservice"\>
</port>
</service>
<\definitions>
Peter Sobe
Internettechnologien
18
SOAP-WSDL (6)
Peter Sobe
Internettechnologien
19
SOAP-WSDL (7)
Keine komplexen Interaktionsmuster
Peter Sobe
Internettechnologien
20
SOAP-Nachrichten (1)
Peter Sobe
Internettechnologien
21
SOAP-Nachrichten (2)
Request via SOAP (mit SOAP envelope)
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<TemperatureRequest xmlns="http://myhome.net/temperatureservice.xsd">
<Authorization>1D9F7DD3</Authorization>
<position> “Eingang" </position>
</TemperatureRequest>
</soap:Body>
</soap:Envelope>
Peter Sobe
Internettechnologien
22
SOAP – Nachrichten (3)
Response via SOAP (hier ohne SOAP envelope)
<TemperatureResponse
xmlns="hppt://myhome.net/temperatureservice.xsd">
<inside>23.1</inside>
<outside>17.6</outside>
<Signature>Iuv33HeZ73</Signature>
</TemperatureResponse>
Peter Sobe
Internettechnologien
23
REST (1)
REST - Representational state transfer
 Bei REST werden die Daten ohne eine zusätzliches Transportformat
(vgl. SOAP) via HTTP transportiert
 REST ist das favorisierte Transportprotokoll für s.g. RESTful Services
 “RESTful web services” sind zustandslos, d.h. Services speichern
nicht den Zustand des Clients





der Client kann aber nach jeder Interaktion in eine neuen
Zustand versetzt
Ressourcen können den Zustand ändern
Protokoll arbeitet stets nach gleichem Interaktionsmuster:
Request, Response, Ende
Jeder Request muss alle notwendigen Informationen beinhalten
Eine Authentifizierung wird bei jedem Request immer wieder neu benötigt.
Peter Sobe
Internettechnologien
24
REST (2)
REST -Fortsetzung
 RESTful ist ein „architectural constraint“, es muss nicht zwingend
eingehalten werden
 RESTful bezieht sich auf Ressourcen - diese Ressourcen werden
durch s.g. idempotente Operationen manipuliert
 Ressourcen-orientierte Operationen:
GET selektiere eine Ressource, Lesen und Rückgabe von Daten
POST Ändern einer Ressource
PUT Zufügen einer neuen Ressource
DELETE Löschen einer Ressource
Peter Sobe
Internettechnologien
25
REST (3)
Request via REST
GET http://myhome.net/temperatureservice?position=Eingang HTTP/1.1
Host: ...
Date: ...
Authorization: 1D9F7DD3
Response via REST/XML
<?xml version=1.0 encoding="UTF-8"?>
<temperatureresponsexmlns="http://myhome.net/temperatureservice.xsd">
<inside> 23.1 </inside>
<outside> 17.6</outside>
</temperatureresponse>
Peter Sobe
Internettechnologien
26
REST (4)
Idempotente Operationen … solche Operationen, die unabhängig wie
oft sie mit den gleichen Daten wiederholt werden, immer zu den gleichen
Ergebnissen führen.
REST-Operationen:
GET … holt eine Ressource,
muss ohne Seiteneffekte funktionieren,
kann im Cache gehalten werden.
POST … erzeugt eine neue Ressource,
potentiell unsicher
PUT … verändert eine existierende Ressource,
wird auch zum Erzeugen einer Ressource verwendet,
mehrfacher Aufruf hat gleiches Ergebnis
wie ein einmaliger Aufruf (idempotent)
DELETE … löscht eine Ressource,
mehrfacher Aufruf hat gleiches Ergebnis
wie ein einmaliger Aufruf (idempotent)
Peter Sobe
Internettechnologien
27
REST (5)
ressourcenorientierter Thermometer-Service:
GET /temperaturservice/
Host: myhome.net/
… liefert Werte aller Temperatursensoren
<temperatureresponse>
<position>
<id>Eingang</id>
<inside> 23.1 </inside>
<outside> 17.6</outside>
</position>
<position>
<id>Nordseite</id>
<inside> 22.0 </inside>
<outside> 15.1</outside>
</position>
…
</temperatureresponse>
Peter Sobe
Internettechnologien
28
REST (6)
Ressourcen-orientierter Thermometer-Service (Fortsetzung):
GET /temperaturservice/Eingang
Host: myhome.net/
… liefert Wert der Ressource „Eingang“
<temperatureresponse>
<position>
<id>Eingang</id>
<inside> 23.1 </inside>
<outside> 17.6</outside>
</position>
</temperatureresponse>
Peter Sobe
Internettechnologien
29
REST (7)
Ressourcen-orientierter Thermometer-Service (Fortsetzung):
DELETE /temperaturservice/Eingang
Host: myhome.net/
… löscht Ressource „Eingang“
GET /temperaturservice/Eingang
Host: myhome.net/
<temperatureresponse>
<position>
<id>Eingang</id>
<error> ressource does not exist </error>
</position>
</temperatureresponse>
Peter Sobe
Internettechnologien
30
REST (8)
Ressourcen-orientierter Thermometer-Service (Fortsetzung):
POST /temperaturservice/
Host: myhome.net/
<position>
<id/>
<desc>Dach, Sued</desc>
</position>
… erzeugt eine neue Ressource „Dach-Suedseite“
Antwort:
<position>
<id>Dach-Suedseite</id>
<desc>Dach, Sued</desc>
</position>
…
Danach kann Ressource mit GET /temperaturservice/Dach-Suedseite
abgefragt werden.
Peter Sobe
Internettechnologien
31
SOAP-PHP (1)
SOAP-PHP ist ein Modul, das innerhalb von PHP-Webseiten
verschiedene SOAP-Server und SOAP-Clients ermöglicht. Das
Zusammenstellen der SOAP-Envelope-Nachrichten ist dabei
automatisiert und wird in den Methoden der SOAP-PHP-Klassen
erledigt.
Diese Implementierung stützt sich auf folgende Klassen:
- SoapClient
- SoapServer
- SoapFault
- SoapHeader
- SoapParam
- SoapVar
Eine SOAP-PHP-Klassenbeschreibung findet man unter
www.php.net/manual/de/book.soap.php
P. Sobe/ R. Großmann
Internettechnologien
32
SOAP-PHP (2)
www.php.net/manual/de/book.soap.php
P. Sobe/ R. Grossmann
Internettechnologien
33
SOAP-PHP (3)
Ein SOAP-Beispiel im non-WSDL-Mode
 ein Minimalbeispiel, das schrittweise weiter ausgebaut werden kann.
 eine Demonstration der beiden wichtigsten Klassen SoapServer und
SoapClient mit ihren wichtigsten Methoden
Funktionen des Servers:
1. auf die Client-Anforderung "Start" soll der Server die Antwort
"Der WS arbeitet!" senden
2. auf die Client-Anforderung "Ende" soll der Server die Antwort
"Der WS beendet den Dienst!" senden
Für den SOAP-Server muss eine Instanz der Klasse SoapServer
erzeugt werden:
SoapServer( mixed $wsdl [, array $options ] )
Der Konstruktor erlaubt das Erzeugen eines SoapServer-Objekts in
WSDL- oder nicht
P. Sobe/ R. Grossmann
Internettechnologien
34
SOAP-PHP (4)
SoapServer( mixed $wsdl [, array $options ] )
Der Konstruktor gibt ein Handle (Zeiger) des Objektes zurück.
Parameter:
wsdl: Wenn der WSDL-Modus verwendet werden soll, muss der
Parameter auf eine WSDL-Datei verweisen. Ansonsten wird
NULL gesetzt und die uri in Options angegeben.
options: Im non-WSDL-Mode muss die uri verwendet werden.
“uri“ ist die Bezeichung für ein Element des assoziativen
Arrays, dessen Wert auf den Namensraum verweist.
Das PHP-Skript unseres Beispiels muss deshalb die Anweisung
enthalten:
$server = new SoapServer(NULL,
array("uri" => "http://localhost/SOAP/" ));
P. Sobe/ R. Grossmann
Internettechnologien
35
SOAP-PHP (5)
Außerdem muss eine Funktion definiert werden, die die Daten für eine
Antwort des Servers bereitstellt. Unter Benutzung eines assoziativen
arrays für die Antworttexte könnte das wie folgt aussehen:
$Anwort = array("Start" => "Der WS arbeitet!",
"Ende" => "Der WS beendet den Dienst!");
Die Funktion für die Antworttexte sei "Kontakt":
function Kontakt($befehl){global $Antwort; return $Antwort[$befehl];};
Über den Parameter $befehl wird die Anforderung des Clients
übergeben.
Der SOAP-Server muss mit Hilfe der Methode addFunction() die
gewünschte Funktion registieren und durch Aufruf der Methode handle()
die Bearbeitung einer Anforderung auslösen, also:
$server-> addFunction("Kontakt");
$server-> handle();
P. Sobe/ R. Grossmann
Internettechnologien
36
SOAP-PHP (6)
Gesamter Quelltext des SOAP-Servers (server1-1.php):
<?php
//globales assoziatives Array mit den Antworten
$Antwort = array(
"Start" => "Der WS arbeitet!", "Ende" => "Der WS beendet den Dienst!“);
function Kontakt($befehl)
{ global $Antwort;
return $Antwort[$befehl];
}
/*SOAP Server Konstruktor im non-WSDL-Mode, 1.Param. NULL,
die uri des Nutzernamespaces muss angegeben werden */
$server = new SoapServer(NULL,array('uri' =>
"http://localhost/SOAP/"));
$server->addFunction("Kontakt");
$server->handle();
?>
P. Sobe/ R. Grossmann
Internettechnologien
37
SOAP-PHP (7)
Entwicklung des SOAP-Clients
Für den Client muss eine Instanz der Klasse SoapClient erzeugt werden:
SoapClient ( mixed $wsdl [, array $options ] )
Der Konstruktor erlaubt das Erzeugen eines SoapClient-Objekts in
WSDL- oder nicht-WSDL-Modus. Der Konstruktor gibt ein Handle (Zeiger)
des Objektes zurück.
Parameter:
wsdl: Im WSDL-Modus muss die URI auf eine WSDL-Datei verweisen.
Sonst muss er auf NULL gesetzt werden, und mindestens die
Optionen location und uri verwendet werden.
options: Im non-WSDL-Mode müssen folgende beiden Optionen
verwendet werden. Die Option location enthält den URL des
angesprochenen Webservices. Die Option uri enthält den
Zielnamensraum des SOAP-Services.
P. Sobe/ R. Grossmann
Internettechnologien
38
SOAP-PHP (8)
SoapClient ( mixed $wsdl [, array $options ] )
Beachte:
Sollen die SoapClient-Methoden
__getLastRequest(),
__getLastResonse(),
__getLastRequestHeaders() oder
__getLastResonseHeaders()
zur Ausgabe der http-Header bzw.
der XML-Dokumente (Envelope) für die SOAP-Datenübertragung
aufgerufen werden, so muss unbedingt die Option trace mit dem
Wert 1 angegeben werden!
P. Sobe/ R. Grossmann
Internettechnologien
39
SOAP-PHP (9)
Das PHP-Skript unseres Beispiels muss deshalb die Anweisung
$client = new SoapClient(NULL,
array("location" => "http://localhost/SOAP/server1-1.php"
"uri" => "urn:D1"));
enthalten. Sever1-1.php ist der Dateiname unseres SOAP-Servers. D1 ist
die von uns festgelegte Bezeichnung für den Namensraum.
Mit der Methode __soapCall() kann jetzt eine Funktion des SOAP-Servers
aufgerufen werden. Dabei sind unbedingt der Name der Funktion und die
für die Funktion notwendigen Argumente anzugeben.
Möglicherweise können auch noch Optionen, wie uri oder soapaction
angegeben werden.
P. Sobe/ R. Grossmann
Internettechnologien
40
SOAP-PHP (10)
Ein einzelner Rückkehrwert wird entsprechend seinem Typ
zurückgegeben. Werden mehrere Werte durch die Funktion erzeugt, wird
ein assoziatives array zurückgegeben. Die Werte können dann über print
oder echo zur Clientseite ausgegeben werden.
public mixed __soapCall ( string $function_name , array $arguments [,
array $options [, mixed $input_headers [, array &$output_headers ]]] )
Das PHP-Skript unseres Beispiels (client1-1s.php) muss deshalb die
Anweisung
print ($client-> __SoapCall("Kontakt", array("befehl" => "Start")));
enthalten. "Kontakt" ist der Funktionsname unseres SOAP-Servers.
"Start" ist eine der beiden möglichen Anforderungen, die dem Parameter
$befehl der Funktion "Kontakt" als Argument übergeben werden muss.
P. Sobe/ R. Grossmann
Internettechnologien
41
SOAP-PHP (11)
Quelltext des SOAP-Clients
(client1-1s.php):
Erster Parameter NULL bewirkt non-WSDLMode,
Im zweiten Parameter wird ein assoziatives
Array angegeben: die URL des Servers und
Namespace D1
<?php
$client = new SoapClient(NULL,
array( "location" => "http://localhost/SOAP/server1-1.php",
"uri"
=> "urn:D1"));
Erster Parameter: Name der SOAPOperation
Zweiter Parameter: Name der Parameter
und deren Werte in einem assoziativen Array
print($client->__soapCall( "Kontakt", array("befehl" => "Start" ) ). "\n");
?>
Die Methode __soapCall() gibt den Antwortwert "Der WS
arbeitet!" als Rückkehrwert an die print-Funktion von PHP weiter.
P. Sobe/ R. Grossmann
Internettechnologien
42
SOAP-PHP (12)
Aufruf des SOAP-Clients zur Nutzung des Web Service
Es kann jetzt ein Browser gestartet werden, der die Datei unseres SOAPClients (client1-1s.php - mit der Anforderung "Start" an der Server) über
http aufruft.
Bild: Über http wurde der SOAP-Client aktiviert, der den WS kontaktiert
Der SOAP-Client stellt eine Anforderung "Start" an der WS (SOAPServer server1-1.php). Der WS antwortet mit "Der WS arbeitet!".
P. Sobe/ R. Grossmann
Internettechnologien
43
SOAP-PHP:
Zugriff auf übertragene XML-Dokumente (1)
Das SOAP-Protokoll kodiert die eigentliche Nutzdaten, sowohl der
Anforderung als auch der Antwort, als wohldefinierte XML-Dokumente.
Die Klasse SoapClient stellt vier Methoden bereit, die den Zugriff auf
übertragene XML-Dokumente sowie die http-Header ermöglichen.
Methode
__getLastRequest
__getLastResponse
__getLastRequestHeaders
__getLastResponseHeaders
Beschreibung
XML-Dokument der Anforderung
XML-Dokument der Antwort
http – Header der Anforderung
http – Header der Antwort
Bei Aufruf dieser Methoden muss der SOAP-Client als Objekt mit der
Option trace = 1 erzeugt werden.
P. Sobe/ R. Grossmann
Internettechnologien
44
SOAP-PHP:
Zugriff auf übertragene XML-Dokumente (2)
$client = new SoapClient(NULL,
array( "location" => "http://localhost/SOAP/server1-1.php",
"uri"
=> "urn:D1", "style" => SOAP_RPC,
"use"
=> SOAP_ENCODED, "trace" => 1 ));
print($client->__soapCall("Kontakt", array("befehl" => "Start"),
array( "uri" => "urn:D1", "soapaction" => "urn:D1#Kontakt")). "\n");
print "<pre>\n";
print "Anforderung:\n".htmlspecialchars($client->__getLastRequest())."\n";
print "Antwort:\n".htmlspecialchars( $client->__getLastResponse() )."\n";
print "</pre>";
print "<pre>\n";
print "Anforderung-Header:\n".
htmlspecialchars( $client->__getLastRequestHeaders() ) ."\n";
print "Antwort-Header:\n".
htmlspecialchars( $client->__getLastResponseHeaders() )."\n";
print
"</pre>";
P. Sobe/ R. Grossmann
Internettechnologien
45
?>
SOAP-PHP:
Zugriff auf übertragene XML-Dokumente
XML-Anforderung als Ausgabe (nachträglich formatiert):
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="urn:D1" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:Kontakt>
<param0 xsi:type="xsd:string">Start</param0>
</ns1:Kontakt>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML-Antwort, Anforderungs- und Antwort-Header als Demonstration …
P. Sobe/ R. Grossmann
Internettechnologien
46
SOAP-PHP: SoapFault-Object
Man kann im SOAP-Client das SoapFault-Element auswerten. Das
Auslösen der Anforderung mit der __soapCall-Methode muss dann in
einer try {…} catch(…){…} – Anweisung erfolgen. In unserem Beispiel
haben wir deshalb die folgende Skriptpassage aufgenommen:
try { echo "\n<pre>";
print($client->__soapCall("Kontakt", array("befehl" => "Start")).
"\n</pre>\n");
} catch (SoapFault $exception) {
echo "\n</pre>";echo"<h3>Fehler</h3>"; echo "\n<pre>\n";
echo $exception; echo "\n\n</pre>";
}
Tritt jetzt ein Fehler auf, so wird der Inhalt eines Fehlerelementes als
Zeichenkette auf die Variable $exception übernommen und ausgegeben.
Der Client nutzt, wie bisher den SOAP-Server.
P. Sobe/ R. Grossmann
Internettechnologien
47
SOAP-PHP: weitere Objekte
SoapHeader – Eine Klasse für Objekte, die die Header der
SOAP-XML- Nachrichten überscheiben können.
Die Methode der Klasse Soap-Client dazu ist
bool SoapClient::__setSoapHeaders ([ mixed $soapheaders ] )
SoapParam – Objekte, die Parameter für SoapClient::__Call()
aufnehmen können, z.B. $param = new SoapParam(“Start“,$befehl);
SoapVar – eine Klasse, die zur Übergabe einer Variable oder eines
Objekts dient
P. Sobe/ R. Grossmann
Internettechnologien
48
Cloud-Computing (1)
Definition von Gartner…
David W. Cearley and David Mitchell Smith:
Key Attributes Distinguish Cloud Computing Services, March 2009:
Cloud computing is a style of computing where scalable
and elastic IT-enabled capabilities are delivered as a service to external
customers using Internet technologies.
Cloud computing is positioning itself as a promising platform for delivering
infrastructure (IaaS), platform (PaaS), and software (SaaS) as services.
P. Sobe
Internettechnologien
49
Cloud-Computing (2)
Kern-Technologien:
 Virtualisierung (processor, network, storage)
 Service-orientierte Architektur
 Ortsunabhängige und gut erprobte Interfaces (Web-browser, Web
Services)
 Automatisierte Operation (Self-X wird angestrebt)
P. Sobe
Internettechnologien
50
Cloud-Computing (3)
Service Paradigmen
 Hardware as a Service
 Infrastructure as a Service - low level virtualized resources
(storage, network, virtual machines)
 Software as a Service
 Data as a Service
 Zusammenfassung in
Platform as a Service
P. Sobe
Internettechnologien
51
Cloud-Computing (4)
Hardware as a Service
 Term was coined possibly at 2006 as result of rapid advances in
hardware virtualization
 Users can buy IT hardware: ranging from single (virtualized) hosts,
disks to entire data centers
 Concept: dynamically create virtual machines and allow customer to
log-in and to do computations, data processing etc.
 Combination with virtualized storage (disk images) and snapshots of
virtual machines
P. Sobe
Internettechnologien
52
Cloud-Computing (5)
Hardware-as-a-Service ergibt als Kombination verschiedener
virtualisierter Hardware-Komponenten eine Platform-as-a-Service:
 Mehrere virtualisierte Rechner (Prozessoren, Hauptspeicher)
 Speicherressourcen (virtuelle Disks)
 Virtuelle Netze (VPNs)
Vergleich:
Eigene Infrastruktur
P. Sobe
Virtualisierte Infrastruktur
Bereitstellung
Internettechnologien
53
Beispiele für Cloud-Computing-Systeme
Amazon Cloud (EC2, S3 with protocols SOAP, REST, BitTorrent,
and Mechanical Turk API)
Google Cloud
- Google Apps: Email, Office, for companies ca. 50 Eur/person,
classical "'Software as a Service"' approach
- google app engine - deployment of web applications within Cloud
Microsoft Azure - Platform as a Service, execution platform
Salesforce - enterprise management, comparable to SAP
Eucalyptus - Interface similar to Amazon EC2, S3, integrated into
Ubuntu-Linux-Distribution
P. Sobe
Internettechnologien
54
Beispiele für Cloud-Computing-Systeme
Most infrastructures are operated by a company that owns both the
cloud platform development and the operation platform
→ public use, but closed-platform clouds
On-premises cloud:
System allows an installation on your own infrastructure
Example: Eucalyptus (open source)
Microsoft announced to release On-premises Cloud
platform in 2010
P. Sobe
Internettechnologien
55
Amazon Web Services
General Concept
Several services:
 Compute resources (VMs)
 Storage (block storage, object storage, data base)
 Network and content delivery infrastructure
Services can be deployed in a stand-alone way, e.g. a pure computing
application with VMs
Services can be applied in an integrated way, e.g. VMs connected via a
network service and a content delivery platform for web access
P. Sobe
Internettechnologien
56
Amazon Web Services – Storage, REST
AWS Simple Storage S3 - Cloud Storage
REST, Sample Request creates a bucket named „htw":
PUT / HTTP/1.1
Host: htw.s3.amazonaws.com
Content-Length: 0
Date: Wed, 01 Mar 2009 12:00:00 GMT
Authorization: AWS 15B4D3461F177624206A:xQE0di...
Response:
HTTP/1.1 200 OK
x-amz-id-2: YgIPIfBiKa2bj0KMg95r/0zo3emzU4...
x-amz-request-id: 236A8905248E5A01
Date: Wed, 01 Mar 2009 12:00:00 GMT
Location: /htw
Content-Length: 0
Connection: close
Server: AmazonS3
P. Sobe
Internettechnologien
57
Amazon Web Services – Storage, SOAP
SOAP; Sample request to create a bucket named „HTW".
<CreateBucket xmlns="http://doc.s3.amazonaws.com/2006-03-01">
<Bucket>basoti</Bucket>
<AWSAccessKeyId>1D9FVRAYCP1VJEXAMPLE=</AWSAccessKeyId>
<Timestamp>2006-03-01T12:00:00.183Z</Timestamp>
<Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature>
</CreateBucket>
Sample Response
<CreateBucketResponse xmlns="http://s3.amazonaws.com/doc/2006-03-01">
<CreateBucketResponse>
<Bucket>basoti</Bucket>
</CreateBucketResponse>
</CreateBucketResponse>
P. Sobe
Internettechnologien
58
Amazon Web Services
S3 Client Konsole
P. Sobe
Internettechnologien
59
Amazon Web Services
AWS Anwendungsbeispiel
Quelle:
aws.amazon.com
P. Sobe
Internettechnologien
60
Document
Kategorie
Technik
Seitenansichten
4
Dateigröße
702 KB
Tags
1/--Seiten
melden