Vorlesung 4
Webservices und Mashups
Inhalt (1)
- Was sind Webservices, was sind Mashups?
- Linkgeneratoren und Gagdets: Webservices für Arme
- Webservices mit RSS
- Methoden und Protokolle
Inhalt (2)
- Ausgewählte APIs
- Wir basteln uns ein Mashup
Was sind Webservices, was sind Mashups?
- Werbservices sind verteilte Funktionen/Prozeduren, die über Web-Techniken erreichbar sind.
- Mashups sind Clients, die aus diversen Webservices (und womöglich mit AJAX) eine Anwendung zusammenbauen.
The Beginning (nur zur Erinnerung)...
- Weblog API (Blogger)
- MetaWeblog API (Winer)
Blogger API
Screenshot von http://www.blogger.com/developers/api/1_docs/
MetaWeblog API
Linkgeneratoren und Gagdets
»Webservices für Arme«
www.flickr.com
This is a Flickr badge showing photos in a set called Wohnsitz Neukölln. Make your own badge here.
|
iGoogle
Amazons aStore
Flickr Badge
Google Gadgets
Googles Alternative zu den Yahoo! Widgets. Können direkt in eine Webseite eingebaut werden. http://www.google.com/ig/directory?synd=open
eBay Relevance Ads
Weitere Beispiele
- Weitere Beispiele für simple »Copy & Paste« Web Services
- HaloScan (externes Kommentarsystem für Webseiten)
- Das Einbinden von Videos von Videohostern: YouTube, Sevenload, Google Video (auch als Google Gadget), Yahoo! Video, etc.
Webservices mit RSS
- Einfache Webservices lassen sich auch mit RSS realisieren
- Es existieren bereits viele Tools zum Einbinden von RSS in Webseiten
- Auch hier war natürlich die Werbung Vorreiter
Beispiel in PHP (handgestrickt)
Quelle: http://planads.de/einbau.php
UserTalk
Yahoo! Pipes
Yahoo! Pipes (2)
Proto Mashup: Craigslist, Yahoo! Pipes & Maps, and Email
Webservices: Methoden und Protokolle
- XML-RPC
- SOAP
- REST
- JavaScript und JSON
XML-RPC
XML-RPC (2)
Aufruf in Python:
#!/usr/bin/python import xmlrpclib def pingWeblogsCom(weblogName, weblogURL): srv = xmlrpclib.Server("http://rpc.weblogs.com/RPC2") try: result = srv.weblogUpdates.ping(weblogName, weblogURL) if result["flerror"]: print "Error during Ping (Weblogs.com)" else: print "Ping to Weblogs.com succesful" except: print "Couldn't connect to Weblogs.com" pingWeblogsCom("Der Schockwellenreiter", "http://www.schockwellenreiter.de/")
SOAP
Beispiel: Kreditkartenvalidator (Quelle: Wikipedia)
SOAP: Nachteile
- Aufgeblähter Code (Faktor > 25 beim Request, Faktor > 100 beim Response)
- → viel Rechenzeit wird beim Generieren und Parsen verbraucht
The RESTful Way
- REST: REpresentational State Transfer
- Request: via URL (meist GET oder POST)
- Response: nicht definiert, meist wird XML verwendet, manchmal aber auch HTML oder Text pur
The RESTful Way (2)
Beispiel Warenkorb (Quelle)
The RESTful Way (3): Put
- Via PUT [URI] können mit REST aber auch neue Ressourcen einer Anwendung hinzugefügt werden.
- Um bei unserem Warenkorbbeispiel zu bleiben, können so neue Artikel im Katalog online via REST erstellt werden.
JavaScript
- Google Maps
- Viele Widgets (z.B. Amazon)
OpenStreetMap API (1)
OpenStreetMap API (1)
<div id="map" style="width:460px; height:400px;"> <script type="text/javascript" src="http://www.deinserver.de/ol/OpenLayers.js"></script> <script type="text/javascript" src="http://openstreetmap.org/openlayers/OpenStreetMap.js"> </script> <script type="text/javascript"> function Lon2Merc(lon) { return 20037508.34*lon/180; } function Lat2Merc(lat) { var PI = 3.14159265358979323846; lat = Math.log(Math.tan((90 + lat)*PI/360))/(PI/180); return 20037508.34*lat/180; } </script> <script type="text/javascript"> var lon = 13.426837921142578; var lat = 52.48142115832729; var zoom = 13; var map = new OpenLayers.Map("map", { controls: [ new OpenLayers.Control.KeyboardDefaults(), new OpenLayers.Control.MouseDefaults(), new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.PanZoomBar()], maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34), numZoomLevels: 18, maxResolution: 156543, units: 'meters', projection: "EPSG:41001"} ); var mapnik_layer = new OpenLayers.Layer.OSM.Mapnik("Mapnik"); var tah_layer = new OpenLayers.Layer.OSM.Osmarender("Tiles@Home"); map.addLayers([mapnik_layer, tah_layer]); var x = Lon2Merc(lon); var y = Lat2Merc(lat); map.setCenter(new OpenLayers.LonLat(x, y), zoom); </script> </div>
JSON
- JSON: JavaScript Object Notation
- Wird vielfach im Zusammenhang mit JavaScript und AJAX eingesetzt.
- Ist aber unabhängig von JavaScript, kann auch in anderen Script- und Programmiersprachen eingesetzt werden.
- Es existieren JSON-Implementierungen z.B. für Java, Perl, PHP, Python, Ruby und Smalltalk.
JSON-Beispiel: Kreditkarte
JSON: Vorteile
- Kompaktes Datenformat
- JSON-»Objekte«lassen sich sehr leicht in Dictionaries (Python) oder Hashes (Perl, PHP) überführen.
Cloud Computing
Dit janze Netz is eene Wolke
- Amazons Web Service (AWS) mit moderaten Kosten
- Googles AppEngine (frei wie Freibier)
- Y!OS (Yahoo!) ? (frei wie Freibier)
- Beliebig skalierbar
Ausgewählte APIs
- Amazon.com
- eBay
- Flickr
- Google (Google Maps kommt in einer späteren Vorlesung)
- Yahoo!
Amazon.com
- Amazon.com (AWS: Amazon Web Services)
- Unterstützt XML-RPC, SOAP und REST
- Amazon S3 (Simple Storage Service): SOAP oder REST statt (S)FTP
- Bildet zusammen mit Amazons Elastic Computing Cloud (EC2) und Amazons Simple DB Amazons Version für Cloud Computing
Amazon-Beispiel (Perl)
Simple Suche, REST-Style (Quelle)
Amazon Widgets
Ausgewählte APIs: eBay
- Formate: XML-over-HTTPS POST (REST-ähnliches Protokoll) und SOAP
Programming eBay
Ausgewählte APIs: Flickr
- Request-Formate: REST, XML-RPC, SOAP
- Response-Formate: REST, XML-RPC, SOAP, JSON und PHP (!)
Ausgewählte APIs: Flickr (2)
Programming Flickr with Python and REST
Programming Flickr with Python and XML-RPC
Programming Flickr with Python and XML-RPC (2)
XML-RPC Response (Quelle):
Ausgewählte APIs: Google
- Formate: SOAP (aufgekündigt), AJAX (intern GWT)
- diverse APIs, z.B. für AdSense, AdWords, Google Base Date, Blogger Data, Google Caledar Data, Google Gadgets, GMail…
- exzellente Dokumentation
- Die Google Maps und Googel Earth APIs (JavaScript und KML) werden in einer späteren Vorlesung behandelt
Google, SOAP und PHP
Googles AppEngine (1)
Googles AppEngine (2)
- Googles Version des Cloud Computing
- Im Gegensatz zum AWS frei (wie Freibier)
- Python und Django
Ausgewählte APIs: Yahoo
- Format: REST mit XML-Response
- Großes Developer Network
- Ebenfalls exzellente Dokumentation
- Leider sehr auf amerikanische Verhältnisse zugeschnitten
Yahoo! News Suche in Perl (1)
Yahoo! News Suche in Perl (2)
Yahoo! Local REST-Response
Gleiche Quelle: http://www.oreillynet.com/pub/a/network/2005/02/28/yahoo.html
Y!OS 1.0
- Y!OS steht für »Yahoo! Open Strategie
- Eine Art Betriebssystem für das Web 2.0
- Kompenenten: Yahoo! Applikation Platform (YAP), Yahoo! Social Platform (YSP) und Yahoo! Query Language (YQL)
- Frei wie Freibier
Und nicht vergessen:
Wenn keine API zur Verfügung steht, hilft immer noch das gute, alte Scraping.
Wir basteln uns ein Mashup (von Hand)
Wir basteln uns ein Mashup (2)
Wir basteln uns ein Mashup (3)
Wir basteln uns ein Mashup (4)
Wir basteln uns ein Mashup (5)
Wir basteln uns ein Mashup (Flickr-Bonus)
Zum Schluß noch zwei schöne Mashup
Einmal den Yahoo! Trip Planner:
Mashups 2
Adressensuche mit Google Maps:
Fragen?
Danke!
- Danke für Ihre Aufmerksamkeit!
Literatur
- Jeff Barr: Amazon Web Services. Building Applications with the Amazon API, San Francisco, CA (Sybex) 2004
- Paul Bausch: Amazon Hacks, Sebastopol, CA (O'Reilly) 2003
- Paul Bausch: Yahoo! Hacks, Sebastopol, CA (O'Reilly) 2005
- Tara Calishain und Rael Dornfest: Google Hacks, Sebastopol, CA (O'Reilly) 2003
- Denny Carl, Jörn Clausen, Marco Hassler und Anatol Zund: Mashups programmieren. Grundlagen, Konzepte, Beispiele, Köln (O'Reilly) 2008
- Kevin Hemenway und Tara Calishain: Spidering Hacks, Sebastopol, CA (O'Reilly) 2003
- Will Iverson: Real World Web Services, Sebastopol, CA (O'Reilly) 2004
- David A. Karp: eBay Hacks, Sebastopol, CA (O'Reilly) 2nd. Ed. 2005
- Jason Levitt: The web developer's guide to amazon e-commerce service. Developing web applications using Amazons Web Services and PHP, Austin, TX (J9T Publications) 2005
- Randy J. Ray und Pavel Kulchenko: Programming Web Services with Perl, Sebastopol CA (O'Reilly) 2002
- Leonard Richardson und Sam Ruby: RESTful Web Services, Sebastopol, CA (O'Reilly) 2007
- Francis Shanahan: Amazon.com Mashups, Indiana, IN (Wiley) 2007
- James Snell, Doug Tidwell und Pavel Kulchenko: Programming Web Services with SOAP, Sebastopol, CA (O'Reilly) 2002
- David Wilkinson: Flickr Mashups, Indianapolis, IN (Wiley) 2007
Zuletzt angesehen: » Fluidium » South Side Playboys » Stanza » NetLogo » Shakura S'Aida » Amazon EC2 » Sonnabend, den 9. Januar 2010 » Python » JavaFX » Vorlesung 4





