Schnittstellen und Webservices

3,184 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,184
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
20
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Schnittstellen und Webservices

  1. 1. Digitale Bibliothek Jakob Voss Schnittstellen und Webservices Digitale Bibliothek WS 2007/2008 Fachhochschule Hannover Informationsmanagement (BA) 19. November 2007
  2. 2. 3 Ebenen einer Webseite <ul><li>Verhalten JavaScript </li></ul><ul><li>Darstellung CSS </li></ul><ul><li>Inhalt HTML </li></ul>
  3. 3. 4 Ebenen einer Webseite <ul><li>Verhalten JavaScript </li></ul><ul><li>Darstellung CSS </li></ul><ul><li>Inhalt HTML </li></ul><ul><li>Informationen APIs </li></ul>
  4. 4. APIs <ul><li>A pplication P rogramming I nterface </li></ul><ul><li>Daten rein, Daten raus </li></ul><ul><li>Nutzung von Dienstleistungen durch Programme </li></ul><ul><li>Anfrage und Rückgabe/Aktion (im Gegensatz zu Beispiel zu Microformats) </li></ul>
  5. 5. APIs Informationssystem Programm
  6. 6. Beispiel: unAPI <ul><li>Ziel </li></ul><ul><ul><li>Bereitstellung einzeln identifizierter Objekte </li></ul></ul><ul><li>Anfragesyntax </li></ul><ul><ul><li>HTTP-Request mit zwei Parametern </li></ul></ul><ul><ul><ul><li>id: Identifikator des Objektes </li></ul></ul></ul><ul><ul><ul><li>format : Gewünschtes Format </li></ul></ul></ul><ul><li>Antwortsyntax </li></ul><ul><ul><li>Formatliste in XML oder spezifisches Format </li></ul></ul>
  7. 7. Beispiel: unAPI <ul><li>UNAPI (keine Parameter) </li></ul><ul><li>Liste von allgemeinen Formaten </li></ul><ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><formats> </li></ul><ul><li><format name=&quot;text&quot; type=&quot;text/plain&quot; /> </li></ul><ul><li><format name=&quot;marcxml&quot; type=&quot;application/xml&quot; docs=&quot;http://www.loc.gov/standards/marcxml/&quot;/> </li></ul><ul><li></formats> </li></ul>
  8. 8. Beispiel: unAPI <ul><li>UNAPI?id= IDENTIFIER (kein Format) </li></ul><ul><li>Liste von Formaten für dieses Objekt </li></ul><ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><formats id=&quot; IDENTIFIER &quot;> </li></ul><ul><li><format name=&quot;text&quot; type=&quot;text/plain&quot; /> </li></ul><ul><li><format name=&quot;marcxml&quot; type=&quot;application/xml&quot; docs=&quot;http://www.loc.gov/standards/marcxml/&quot;/> </li></ul><ul><li></formats> </li></ul>
  9. 9. Beispiel: unAPI <ul><li>UNAPI?id= IDENTIFIER &format= FORMAT </li></ul><ul><li>Formatspezifisch (z.B. MARCXML-Format) </li></ul>
  10. 10. Weiteres Beispiel: SeeAlso <ul><li>Basiert auf unAPI und OpenSearch Suggestions </li></ul><ul><li>Query-Format: </li></ul><ul><ul><li>wie unAPI mit format=seealso&id=... </li></ul></ul><ul><li>Response-Format: </li></ul><ul><ul><li>OpenSearch Suggestions (JSON) </li></ul></ul><ul><ul><li>[&quot;..id..&quot;,[..titles..],[..descriptions..],[..urls..]] </li></ul></ul>
  11. 12. ?
  12. 13. SeeAlso Linkserver Links
  13. 14. JavaScript SeeAlso Linkserver Links
  14. 15. SeeAlso Linkserver ISBN Links JavaScript
  15. 16. (OpenSearch Suggestions) SeeAlso Linkserver ISBN JSON Links JavaScript
  16. 17. (OpenSearch Suggestions) SeeAlso Linkserver ISBN JSON Links
  17. 18. Weitere Beispiele für APIs <ul><li>Google API </li></ul><ul><li>Amazon API </li></ul><ul><li>thingISBN, ISBNdb ... </li></ul><ul><li>zeno API </li></ul><ul><li>OCLC Service Grid </li></ul><ul><li>... </li></ul>
  18. 19. Keine API da? <ul><li>Selber machen! (Scraping, Wraping...) </li></ul><ul><li>Vorteil </li></ul><ul><ul><li>Hacken macht Spaß und ist lehrreich </li></ul></ul><ul><li>Nachteil </li></ul><ul><ul><li>Keine Verlässlichkeit </li></ul></ul><ul><ul><li>Meist aufwändiger (aber nicht immer) </li></ul></ul><ul><ul><li>Jemand könnte sich beschweren </li></ul></ul><ul><li>Oft die einzige Möglichkeit </li></ul><ul><li>Tip: Firefox DownloadHelper -Plugin </li></ul>
  19. 20. Webservices <ul><li>Informatiker-Buzzword </li></ul><ul><li>Einfach: API über HTTP </li></ul><ul><li>Komplex: SOAP, XML-RPC, WSDL... </li></ul><ul><li>Meist ist XML im Spiel </li></ul>
  20. 21. Relevante Schnittstellen für Digitale Bibliotheken <ul><li>Suchen: Z39.50, SRU/SRW, OpenSearch... </li></ul><ul><li>Einsammeln/Verteilen: OAI, ATOM, RSS... </li></ul><ul><li>Kopieren: unAPI </li></ul><ul><li>Verlinken: SeeAlso </li></ul><ul><li>... </li></ul>
  21. 22. APIs für Suchmaschinen Crawler, Harvester, Import... Anfrage Ergebnis Anfrage Ergebnis Suchmaschine Informationsquellen Metasuchmaschine Suchmaschine Suchmaschine Suchmaschine Informationsquellen
  22. 23. APIs für Suchmaschinen <ul><li>A) Suche </li></ul><ul><ul><li>Z39.50, SRU/SRW </li></ul></ul><ul><ul><li>OpenSearch </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>B) Crawling, Harvesting, Syndication </li></ul><ul><ul><li>OAI-PMH, Sitemaps </li></ul></ul><ul><ul><li>Feeds (ATOM, RSS) </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>Suchprotokolle ggf. auch fürs Harvesting! </li></ul>
  23. 24. OAI-PMH <ul><li>Open Archives Initiative (OAI) </li></ul><ul><li>Protocol for Metadata Harvesting (PMH) </li></ul><ul><li>REST-API </li></ul><ul><ul><li>Anfrage: URL </li></ul></ul><ul><ul><li>Antwort: XML </li></ul></ul>
  24. 25. OAI-PMH <ul><li>Repository als Data Provider </li></ul><ul><li>Harvester sammelt Metadaten-Records </li></ul><ul><li>Bereitstellung von Dienstleistungen durch Service-Provider </li></ul><ul><ul><li>Beispiel: OAIster (http://www.oaister.org/) </li></ul></ul>
  25. 26. OAI-PMH <ul><li>Anfrage-Parameter </li></ul><ul><ul><li>verb (Identify, ListMetadataFormats, GetRecord, ListIdentifier, ListRecords) </li></ul></ul><ul><ul><li>identifier </li></ul></ul><ul><ul><li>metadataPrefix (oai_dc, ...) </li></ul></ul><ul><ul><li>from, until , set (Eingrenzung Datum/Menge) </li></ul></ul><ul><ul><li>resumptionToken (Ergebnisliste fortsetzen) </li></ul></ul><ul><li>Ausprobieren: OAI Repository Explorer http://re.cs.uct.ac.za/ </li></ul>
  26. 27. Search/Retrieve via URL (SRU) Search/Retrieve Web Service (SRW) <ul><li>Neuentwicklung der wichtigsten Z39.50-Funktionalität als Webservice </li></ul><ul><li>Suchabfrage von Datenbanken </li></ul><ul><li>verschiedene Operationen ( operation ) </li></ul><ul><ul><li>explain </li></ul></ul><ul><ul><li>searchRetrieve </li></ul></ul><ul><ul><li>scan </li></ul></ul>
  27. 28. SRU/SRW-searchRetrieve <ul><li>Request aus mehreren optionalen Parametern </li></ul><ul><li>version ist notwendig, query enthält die Anfrage in Common Query Language (CQL) </li></ul>
  28. 29. API-Programmbibliotheken <ul><li>Zugriff auf APIs mittels Programmiersprache </li></ul><ul><li>Beispiele: Z39.50-Client in PHP: </li></ul><ul><li>$con = yaz_connect ( &quot;z3950.loc.gov:7090/voyager&quot; ); </li></ul><ul><li>yaz_syntax ( $con, &quot;usmarc&quot; ); </li></ul><ul><li>yaz_range ( $con, 1, 10 ); </li></ul><ul><li>yaz_search ( $con, &quot;rpn&quot;, $query ); </li></ul><ul><li>yaz_wait (); </li></ul><ul><li>$hits = yaz_hits ( $con ); </li></ul><ul><li>for ($p = 1; $p <= 10; $p++) { </li></ul><ul><li>$rec = yaz_record ( $con, $p, &quot;string&quot; ); </li></ul><ul><li># ... </li></ul><ul><li>} </li></ul>
  29. 30. Spezifikation durch Standards <ul><li>Ohne etablierte Programmbibliothek: Standard genau lesen! </li></ul><ul><li>Vertrauen ist gut, Kontrolle ist besser. </li></ul><ul><ul><li>Z39.50: > 100 Seiten nicht frei verfügbar </li></ul></ul><ul><ul><li>OAI-PMH: ~ 30 Seiten http://www.openarchives.org/OAI/openarchivesprotocol.html </li></ul></ul><ul><ul><li>unAPI: 1 (+3) Seiten http://unapi.info/specs/ </li></ul></ul>
  30. 31. Serviceorientierte Architektur <ul><li>Eine monolithische Anwendung </li></ul><ul><li>Geht nicht, unsere Software kann das nicht </li></ul><ul><li>Viele lose gekoppelte Bausteine </li></ul><ul><li>Probier' es selber, hier sind die APIs! </li></ul>
  31. 32. Beispiele für kein SOA <ul><li>Handy, auf dem keine eigenen Klingeltöne geladen werden können </li></ul><ul><li>iPod, mit dem keine Musik ausgetauscht werden kann </li></ul><ul><li>Webseite, die Neuigkeiten nicht als Feed anbietet </li></ul><ul><li>Tendenziell alle zu großen kommerziellen Systeme (Monopole) </li></ul>
  32. 33. Herkömmliches Bibliothekssystem Suchindex Suchinterface Trefferanzeige Titelanzeige Katalogisierung Ausleihe Benachrichtigung Erwerbung Fernleihe u.v.a.m. Gespeicherte Suchen
  33. 34. Modulares Bibliothekssystem Suchinterface Trefferanzeige Titelanzeige Katalogisierung Suchindex Ausleihe Fernleihe Gespeicherte Suchen Erwerbung Benachrichtigung
  34. 35. Serviceorientiertes Bibliothekssystem Benachrichtigung Gespeicherte Suchen Katalogisierung Suchinterface Trefferanzeige Suchindex Erwerbung Ausleihe Fernleihe Titelanzeige Externe Anwendung Externe Anwendung Externe Anwendung
  35. 36. Service-Beispiel: Katalogisierungsclient
  36. 37. Bibliographische Daten ? Katalog
  37. 38. Bibliographische Daten Katalogisierungs- Webservice Katalog
  38. 39. Bibliographische Daten Katalogisierungs- Client Katalog Katalogisierungs- Webservice
  39. 40. Bibliographische Daten Katalogisierungs- Client Katalog OpenURL und weitere Formate Katalogisierungs- Webservice
  40. 41. Bibliographische Daten Katalogisierungs- Client Katalog COinS oder unAPI OpenURL und weitere Formate Katalogisierungs- Webservice
  41. 42. Zusammenfassung <ul><li>API: Klar spezifizierte Schnittstellen* </li></ul><ul><li>Webservices: APIs über HTTP (meist REST) </li></ul><ul><li>Verwendung von Programmbibliotheken </li></ul><ul><li>Relevant für digitale Bibliotheken </li></ul><ul><ul><li>Suchen: Z39.50, SRU/SRW, OpenSearch... </li></ul></ul><ul><ul><li>Einsammeln/Verteilen: OAI, ATOM, RSS... </li></ul></ul><ul><ul><li>Kopieren: unAPI, Verlinken: SeeAlso </li></ul></ul>* hoffentlich

×