Post on 03-Apr-2019
transcript
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 1
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
PROC SOAP,PROC HTTP
und der ganze REST
Webservices und SAS
KSFE – 08. März 2012
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH 2
Agenda
I. Kurze Einführung zu Webservices
II. Webservices und SAS
1. Webservices mit SAS konsumieren
2. Webservices mit SAS anbieten
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 2
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH 3
… ist IT‐Dienstleister für Business Intelligence und Datenanalyse
… gibt es seit über 20 Jahren
… ist einer von vier in Deutschland
… hat 45 Mitarbeiter, davon 20 von SAS zertifizierte IT‐Spezialisten und sieben Mitglieder von
… bietet umfassende Services für SAS‐Software an, von der Beratung über die Programmierung bis hin zu Schulung und Support
… ist Mitglied im KSFE ‐ Verein
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Kurze Einführung zu Webservices
4
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 3
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Webservice: Mehrere Versuche einer Definition
• "There are many things that might be called ‘Web services’ in the world at large" (W3C)
• "eine Software‐Anwendung, die mit einem Uniform ResourceIdentifier (URI) eindeutig identifizierbar ist und deren Schnittstelle als XML‐Artefakt definiert, beschrieben und gefunden werden kann" (Wikipedia)
• "a software system designed to support interoperable machine‐to‐machine interaction over a network" (W3C)
• "Da stellen wir uns mal ganz dumm und sagen: Ein Webservice, das ist ein großer, runder, schwarzer Raum – also eine Blackbox ‐ , die hat zwei Löcher, also Schnittstellen. In das eine geben wir die Anfragen rein, und aus dem anderen – das kommt später ‐ kommen die Ergebnisse wieder raus. Es steht alles bei Wikipedia was ich sage, nur nicht so schön!"(frei nach der Feuerzangenbowle)
5
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Transportprotokoll:
HTTP + …
Webservices: Das Grundprinzip
6
Client („Konsument“)
Server(„Anbieter“)
Internet / Intranet
Sendet Anfrage („Request“)
VerarbeitetAnfrage
Erzeugt Ergebnis („Response“)
Empfängt Ergebnis (und verarbeitet es
weiter)
… REST… SOAP
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 4
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Request unter der Lupe
7
SOAP
POSThttp://api.geonames.org/findNearbyPlaceName
<soapenv:Envelope><soapenv:Header /><soapenv:Body>
</soapenv:Body></soapenv:Envelope>
REST
GEThttp://api.geonames.org/findNearbyPlaceName?username=demo&lat=42&lng=42
<Coordinates><Lat>42</Lat><Lng>42</Lng><Username>Demo</Username>
</Coordinates>
Beispiel: Webservice geonames.org: Ermittle den Ort, der möglichst nahe an einer bestimmten geographischen Position (42°N, 42°E) liegt.*
* Hinweis: geonames.org bietet diesen Service nur auf Basis von REST an. Das Beispiel für SOAP
ist eine fiktive Übertragung dieses Webservices in ein SOAP-Szenario.
Parameter
URL
HTTP-Methode
HTTP-Methode
URL
SOAP-Message(XML)
SOAP-Envelope
und optionaler
Header
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Response unter der Lupe
8
SOAPContent-Type: text/xml
<soapenv:Envelope><soapenv:Header /><soapenv:Body>
</soapenv:Body></soapenv:Envelope>
RESTContent-Type: text/jsonoderContent-Type: text/xml
<geonames><geoname><name>Silauri
</name><countryName>Georgia
</countryName></geoname>
</geonames>
{"geonames" :["geoname" : {"name" : "Silauri","countryName" :
"Georgia"}
]}
Beispiel: Webservice geonames.org: Ermittle den Ort, der möglichst nahe an einer bestimmten geographischen Position (42°N, 42°E) liegt.*
* Hinweis: geonames.org bietet diesen Service nur auf Basis von REST an. Das Beispiel für SOAP
ist eine fiktive Übertragung dieses Webservices in ein SOAP-Szenario.
HTTP-Header
SOAP-Response(XML)
SOAP-Envelope
und optionaler
Header
HTTP-Header
Response:XMLoder
JSON
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 5
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Woher kennt man den Aufbau von Request und Response?
9
SOAP• Jeder SOAP-Webservice stellt eine Beschreibung seiner
angebotenen Services in Form einer WSDL-Datei (XML) bereit
• Es gibt Tools, die WSDL-Dateien parsen und daraus beispielhafte Requests und Responses erzeugen, die man als Vorlage nehmen kann (z.B. soapUI: http://www.soapui.org/)
REST• Ansätze zur standardisierten Beschreibung mit WADL
sind vorhanden, aber nicht durchgängig verbreitet• In der Regel muss man sich auf die Dokumentation
verlassen, die der Anbieter des Webservices bereitstellt
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Webservices: Die "Lingua Franca" (oder der "Babelfisch") der IT
• Universelle Einsetzbarkeit: Jedes System, das HTTP beherrscht, kann Webservices nutzen oder anbieten
• Entkopplung: Weder Client noch Server müssen Details (Betriebssystem, Datenbank, Middleware…) ihres Kommunikationspartners kennen
• Solange die Schnittstelle gleich bleibt, kann die Implementierung des Webservice jederzeit geändert werden, ohne dass der Konsument davon etwas merkt
• Für SAS: Universelle Zugriffsmöglichkeit auf jede andere Art von System, auch wenn SAS dafür noch keine eigene Schnittstelle anbietet
10
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 6
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Webservices und SAS
11
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Was haben Webservices mit SAS zu tun…? Ein kleiner Vorgriff.
SAS als Webservice‐Konsument: wenn im Rahmen eines SAS‐Programms Informationen benötigt werden, die woanders als Webservice angeboten werden.SOAP‐Schnittstellen: PROC SOAP, Data Step‐Funktionen, WSDL‐LibnameREST‐Schnittstelle: PROC HTTP
SAS als Webservice‐Anbieter:Wenn ein eigenes SAS‐Programm im Intranet (oder Internet) zur Verfügung gestellt werden sollSchnittstelle (SOAP/REST): Stored Processes
12
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 7
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
PROC SOAP – Funktionsweise
13
PROCSOAP
Request-Body (XML)
Response-Body (XML)
Request mit SOAP-Envelope
Response mit SOAP-Envelope
Webservice-Anbieter(SOAP)
XML‐Vorverarbeitung
Ausgangspunkt:SAS-Daten
XML‐Nachverarbeitung
Ziel: SAS-Daten
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
PROC SOAP ‐ Aufruf
FILENAME Request "C:\KSFE12\Request1.xml";FILENAME Response "C:\KSFE12\Response1.xml";
PROC SOAP IN = RequestOUT = ResponseURL = "http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl"SOAPACTION = "http://ws.cdyne.com/ResolveIP";
RUN;
14
• Zusätzlich können Benutzername und Passwort übergeben werden (auch aus Metadaten-Server)
• PROC SOAP basiert auf Java-Frameworks für Webservices (SAS 9.2: Apache Axis2; SAS 9.3: Spring); in SAS 9.3 deutlicher Performance-Gewinn
• Beispiel: Webservice zum Zuordnen von IP-Adressen zu einem geographischen Ort
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 8
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
PROC SOAP – XML‐Verarbeitung
Wie kommt man von seinen Daten zum XML‐Request, und wie zieht man aus der XML‐Response Ergebnisse?• SAS bietet eine Vielzahl von Tools für den XML‐Zugriff
– XML Libname‐Engine– XML‐Maps– PROC XSL– …
• Siehe Tutorial "XML mit SAS leicht gemacht" von Andreas Adlichhammer, KSFE 2011– http://www.analytical‐
software.de/de/wissensbibliothek/tutorials/xml‐sas/
• Welches dieser Tools ist nun gerade für Webservices zu empfehlen?
15
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Empfehlungen zum Verarbeiten von XML‐Responses
• Klare Antwort: Es kommt drauf an • Mit einer XML‐Map kommt man eigentlich fast immer ans
Ziel.• Bei einfachen XML‐Strukturen genügt evtl. auch ein XML‐
Libname ohne Angabe einer Map.– Hier gilt: einfach probieren!
• Wenn einem tatsächlich eine XML‐Struktur über den Weg läuft, die man mit einer Map nicht abdecken kann, kann man immer noch XSL verwenden– Bei Webservice‐Ergebnissen aber eher unwahrscheinlich
• Man kann natürlich auch immer noch die XML‐Response im Data Step parsen. Damit kann man garantiert jede XML‐Response verarbeiten– Viel Spaß
16
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 9
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Empfehlung zum Erzeugen von XML‐Requests:XML‐"Vorlagen" mit Macrovariablen und resolve‐Funktion
17
<ws:ResolveIP xmlns:ws='http://ws.cdyne.com/'><ws:ipAddress>&IP</ws:ipAddress>
</ws:ResolveIP>
<ws:ResolveIP xmlns:ws='http://ws.cdyne.com/'><ws:ipAddress>15.179.0.138</ws:ipAddress>
</ws:ResolveIP>
%LET IP = 15.179.0.138;FILENAME Template "..."FILENAME Request "..."
DATA _null_;INFILE Template;FILE Request;INPUT;Zeile = resolve( _Infile_ );PUT Zeile;
RUN;
XML-Vorlage
XML-Request
Data Step
Alternative: XML-Map; bei komplexen Requests manchmal sinnvoller
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Was gibt's noch außer PROC SOAP:Data Step‐Funktionen (SAS 9.3)
• Vor‐ und Nachverarbeitung der XML‐Dateien wie bei PROC SOAP
18
FILENAME Request1 "C:\KSFE12\Request1.xml";FILENAME Response1 "C:\KSFE12\Response1.xml";
DATA _NULL_;InFileRef = "Request1";OutFileRef = "Response1";URL = "http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl";SOAPAction = "http://ws.cdyne.com/ResolveIP";/* Aufruf */rc = SOAPWeb( InfileRef, URL, OutFileRef, SOAPAction );
RUN;
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 10
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Was gibt's noch außer PROC SOAP:WSDL‐Libnames
• "Preproduction" in SAS 9.2 – aber nicht wirklich brauchbar, da alles andere als stabil
• In SAS 9.3 nicht mehr unterstützt (laut SAS Online‐Doku)
19
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
PROC HTTP – Funktionsweise
20
PROCHTTP
Webservice-Anbieter(REST)
HTTP-Request
HTTP-Response
URL(Macro-Variable(n))
Ausgangspunkt:SAS-Daten
XML‐Nachverarbeitung
Aufbereitung Parameter
Response(XML) * * Anmerkung: Response kann
theoretisch auch andere Formate haben (HTML, JSON) – die Weiterverarbeitung von XML ist aber am besten in Base SAS integriert.
Ziel: SAS-Daten
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 11
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
PROC HTTP ‐ Aufruf
FILENAME Response "C:\KSFE12\Response1.xml";
PROC HTTP URL = 'http://api.geonames.org/findNearbyPlaceName?lat=42&lng=42&username=demo'
OUT = ResponseMETHOD = 'GET'
;RUN;
21
• Zusätzlich können Benutzername und Passwort übergeben werden (auch aus Metadaten-Server)
• Für POST-Anfragen kann mit dem Request auch eine komplette Datei mitgeschickt werden (über einen zweiten Fileref). Wichtig: In diesem Fall Content-Type über Option CT= angeben!
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Performance – PROC SOAP, PROC HTTP, Data Step
• Performance hängt von sehr vielen Faktoren ab: Netzwerk‐Geschwindigkeit, Performance des aufgerufenen Webservice und der von ihm angesprochenen Komponenten (Datenbank…)
• Einige Tendenzen sind aber dennoch feststellbar:– PROC SOAP ist in SAS 9.3 deutlich schneller als in SAS 9.2 (nach unseren Messergebnissen bis zu ca. 30 Prozent)
– PROC SOAP oder Data Step‐Funktionen machen keinen großen Unterschied
– Ein Aufruf eines REST‐Webservice ist wegen des schlankeren Protokolls in der Regel performanter als der Aufruf eines gleichwertigen SOAP‐Service.
22
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 12
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Webservices mit SAS 9.3 anbieten: SOAP
• Der Webservice hat die gleichen Eingabe‐Parameter wie der Stored Process
• Die Response des Webservice enthält die für den Stored Process definierten Ausgabeparameter – und nicht das, was der Stored Process ggf. nach _WEBOUT schreibt!
• Das Umsetzen der Stored Process‐Parameter von oder nach XML übernimmt SAS – es muss nicht selbst programmiert werden
23
SAS-Programm
StoredProcess
mitParametern
Deployment Deployment(Management
Console)SOAP-
Webservicemit Parametern
(/System/Services)
SASMetadatenServer
Client
http://<host>:<port>/SASBIWS/services/<Meta-Pfad>
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Webservices mit SAS 9.3 anbieten: REST
• Es ist nicht notwendig, den Stored Process explizit als Webservice zu deployen!• Ein einziger Stored Process unterstützt automatisch beide Schnittstellenformate,
XML und JSON• Wie bei SOAP enthält die Response des Webservice die für den Stored Process
definierten Ausgabeparameter – und nicht das, was der Stored Process ggf. nach _WEBOUT schreibt!
• Die Umsetzung der Parameter nach XML oder JSON erledigt SAS automatisch
24
SAS-Programm
StoredProcess
mitParametern
Deployment
Client 1:Benötigt
XMLhttp://<host>:<port>/SASBIWS//rest/storedProcesses/<Meta-Pfad>
SASMetadaten
Server
Client 2:Benötigt JSON
http://<host>:<port>/SASBIWS//json/storedProcesses/<Meta-Pfad>
Achtung: Meta-Pfad darf keine Leerzeichen enthalten!
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 13
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Fazit: Unendliche Weiten…
• Mit den SAS‐Prozeduren PROC SOAP und PROC HTTP (bzw. den entsprechenden Data Step‐Funktionen) ist es möglich, auf jeden SOAP‐ oder REST‐basierten Webservice zuzugreifen. Der Webservice muss nichts davon wissen, dass er gerade mit SAS kommuniziert.
• Somit sind Datenaustausch, Aufruf von Funktionen, ganz allgemein die Kommunikation mit jedem System, das Webservices unterstützt, möglich, ohne dass erst aufwändige Schnittstellen programmiert werden müssen
• Über die Webservice‐Anbindung des Stored Process Server kann auch umgekehrt jedes SAS‐Programm als Webservice bereitgestellt werden. So kann SAS‐Funktionalität in andere Systeme eingebunden werden, ohne erst neue Schnittstellen entwerfen zu müssen.
• Gerade die neue JSON/REST‐Schnittstelle zu Stored Processeseröffnet auch sehr komfortable Möglichkeiten des Datenaustausch zwischen SAS und Webfrontends
25
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH
Wenn Sie mehr wissen wollen…
• Word Wide Web Consortium: Web Services Architecture
• SAS Institute Inc.: SAS(R) 9.3 Functions and CALL Routines: Reference – SOAPWEB Function
• SAS Institute Inc.: Base SAS(R) 9.3 Procedures Guide – SOAP Procedure
• SAS Institute Inc.: Base SAS(R) 9.3 Procedures Guide – HTTP Procedure
• SAS Institute Inc.: SAS 9.3 BI Web Services Developer's Guide
• Andreas Adlichhammer: Vortrag auf der KSFE 2011 in Heidelberg – XML mit SAS leicht gemacht
26
16. KSFE in Leipzig, 8. und 9. März 2012Martin Haffner: PROC SOAP, PROC HTTP und der ganze REST
08.03.2012
HMS Analytical Software GmbHwww.analytical-software.de 14
Martin Haffner, Andreas Mangold, Bernhard Braun© 2012 HMS Analytical Software GmbH 27
Vielen Dank! Haben Sie Fragen?
Martin Haffner Andreas Mangold Bernhard Braun
Software‐Architekt Gründer und StudentGeschäftsführer (Duale Hochschule)
HMS Analytical Software GmbHRohrbacher Str. 26 • 69115 HeidelbergTelefon +49 6221 6051‐0
Martin.Haffner@analytical‐software.dewww.analytical‐software.de
Martin Haffner Andreas Mangold Bernhard Braun
Software‐Architekt Gründer und StudentGeschäftsführer (Duale Hochschule)
HMS Analytical Software GmbHRohrbacher Str. 26 • 69115 HeidelbergTelefon +49 6221 6051‐0
Martin.Haffner@analytical‐software.dewww.analytical‐software.de
Besuchen Sie uns auch auf unserem Messestand! Dort … … können Sie im Anschluss mit dem Referenten diskutieren… finden Sie Demos zu diesem Vortrag … können Sie sich über das Angebot von HMS informieren… gibt es Jobangebote … gibt es Informationen für Studenten zu Praktika und Abschlussarbeiten bei
HMS