View page as slide show

Vorlesung 4

Webservices und Mashups

'Screenshot Quipe' von kantel

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

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

…und andere Portalseiten:

Screenshot iGoogle

Amazons aStore

Flickr Badge

'Flickr Badge' von kantel

Google Gadgets

Googles Alternative zu den Yahoo! Widgets. Können direkt in eine Webseite eingebaut werden. http://www.google.com/ig/directory?synd=open

'Google Gadgets' von kantel

eBay Relevance Ads

Werbung war natürlich die treibende Kraft bei den Linkgeneratoren

'eBay Relevance Ads' von kantel

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

I love 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
  • 'Anzeigen via RSS' von kantel

Beispiel in PHP (handgestrickt)

UserTalk

Das gleiche Beispiel in UserTalk…

'Webservices mit RSS' von kantel

mit »High-Level« RSS-Verben

Yahoo! Pipes

Screenshot 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

Ping an Technorati:

'Technorati-Ping' von kantel

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' von kantel

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)

'Beispiel einer REST-Anwendung' von kantel

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

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-Webservice' von kantel

Amazon Widgets

Es geht auch einfacher (mit JavaScript):

Ausgewählte APIs: eBay

  • Formate: XML-over-HTTPS POST (REST-ähnliches Protokoll) und SOAP

Programming eBay

PHP und Services_Ebay (Quelle, eine ausführliche Anleitung gibt es auch hier)

'Programming eBay with PHP' von kantel

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):

'flickr API, XML-RPC-Response' von kantel

Ausgewählte APIs: Google

'Daily Google' von kantel

  • 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

'Yahoo! News-Suche' von kantel

Yahoo! News Suche in Perl (1)

'Yahoo! News-Suche in Perl (1)' von kantel

Yahoo! News Suche in Perl (2)

Yahoo! Local REST-Response

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)

Mit Flickr und Google Earth durch das »deutsche Oxford«:

'Tutorial: Wir basteln uns ein Mashup (1)' von kantel

Wir basteln uns ein Mashup (2)

'Tutorial: Wir basteln uns ein Mashup (2)' von kantel

Wir basteln uns ein Mashup (3)

'Tutorial: Wir basteln uns ein Mashup (3)' von kantel

Wir basteln uns ein Mashup (4)

'Tutorial: Wir basteln uns ein Mashup (4)' von kantel

Wir basteln uns ein Mashup (5)

'Tutorial: Wir basteln uns ein Mashup (5)' von kantel

Wir basteln uns ein Mashup (Flickr-Bonus)

Auch »Notes« können Links enthalten:

'Tutorial: Wir basteln uns ein Mashup (6)' von kantel

Zum Schluß noch zwei schöne Mashup

Einmal den Yahoo! Trip Planner:

'Yahoo! Trip Planner' von kantel

Mashups 2

Adressensuche mit Google Maps:

Fragen?

?

Danke!

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

Navigation