Web Services Flashcards
Was ist ein Web Service?
- Zentraler Begriff der Dienstleistung: Komponente bietet Dienst an
-aktiver Vorgang beim Erbringen einer Dienstleistung
-Ausführung einer Funktion - Zugang zu Web-Services über das Web: Nutzung standardisierter Protokolle und Konzepte, z.B. HTTP und XML
- Keine allgemeingültige Definition von Web-Services
Web-Services Architecture Group beim W3C:
…ein durch eine URI identifiziertes Softwaresystem, dessen öffentliche
Schnittstellen und Protokollbindungen durch XML definiert …sind … - Aktuelle Bindung: Dienst der via HTTP, REST und JSON realisiert ist
Motivation von Web Services:
-Vision vom Markt der Komponenten bzw. jetzt Web-Services: Unabhängige Softwarefirmen verkaufen Web-Services-Software, Web-Services sind nicht ortsgebunden (Kann aus der Entfernung zugegriffen werden, Benötigt in der Regel keine Installation von Software für den Nutzer)
-Web als einfache Schnittstelle: Verknüpfung verschiedener Webschnittstellen früher nur manuell
(Weitergabe von Daten über Eingabe im Web-Browser),
Automatische Verknüpfung wünschenswert/notwendig
(z.B. Webseite zum Authentisieren von Kreditkarten + Webseite zum Einkauf von Produkten)
-Rückrat für Cloud Computing: Basisdienste werden oft in verschiednen Ausprägungen unterstützt
(z.B.: Amazon S3 unterstützt SOAP und REST)
URI Definition & Sichtweisen
- Uniform Resource Identifier (URI): eindeutige Referenzierbarkeit von Ressourcen (Dokumente, Mailadressen, Mailboxen, Webseiten, Telefone,
Namensdienste, Objekte …), einheitliches Schema zur Referenzierung (erweiterbares, lesbares und maschinenlesbares Format) - klassische Sichtweise: Aufteilung in Uniform Resource Locator (URL) und Unfiromf Resource Name (URN)
- heutige Sichtweise: alles ist eine URI
HTTP
=Hypertext Transfer Protocol (HTTP)
- Basierend auf TCP/IP (verbindungsorientiert)
- Anfrage-Antwort-Interaktion (Request-Reply): Client sendet Anfragenachricht (Request), Server sendet Antwortnachricht (Response)
Nachrichtenaufbau HTTP
= Textbasiertes Protokoll: Einfache Analysierbarkeit (ohne zusätzliche Werkzeuge)
- Anfrage: Request-Methode: Anfragetyp, Methodenauswahl (z.B. GET /robots.txt HTTP/1.0), Request-Header - Zusatzinformationen zur Anfrage
(z.B. User-Agent: OperMoz und Host: www.fau.de)
-Leerzeile
-Optionaler Datenbereich (Body): Inhalt beschrieben durch bestimmten Request-Header (Content-Type), MIME-Type (Multi-Purpose Internet Mail Extension) [Body]
- Antwort: HTTP-Response: Status der Antwort, (z.B. HTTP/1.0 200 OK), Response-Header: Zusatzinformationen zur Antwort
-Leerzeile
-optionaler Datenbereich (Body)
-Daten:
Beliebig (orientiert an MIME-Types)
z.B. application/pdf
Mehrere Einzelteile durch Multipart-Typen
z.B. multipart/mixed
Methoden HTTP
Definierte Methoden: GET: Anfrage nach Daten HEAD: Hole Response-Header ohne Datenanhang (sonst wie GET) PUT: Speichere Daten POST: Schicke Daten OPTIONS: Hole Serverinformationen
Verbindung über TCP/IP
Heute:
- Wiederverwendung der Verbindung für mehrere Anfragen an den gleichen Server
- Zusätzlich ist Pipelining möglich (HTTP/1.1): Mehrere Anfragen hintereinander (über eine Verbindung), Antworten kommen in gleicher Reihenfolge später
Was ist Extensible Markup Language (XML)?
-Auszeichnungssprache (Markup Language) zur Darstellung hierarchisch strukturierter Daten in Form von Textdaten
-Ermöglicht z.B. den plattform- und implementationsunabhängigen Austausch von Daten zwischen Computersystemen eingesetzt: Grundlage für Web-Services
-Vom World Wide Web Consortium (W3C) herausgegebene
XML-Spezifikation
-Metasprache auf deren Basis durch die strukturelle und inhaltliche
Einschränkungen anwendungsspezifische Sprachen definiert werden können
Aufbau eines XML Dokuments
Jedes XML-Dokument ist aus drei Teilen aufgebaut:
- XML-Header: enthält XML-Version und Zeichensatz
- Verarbeitungsanweisungen und XML-Elemente (Daten)
- Elemente können hierarchisch verschachtelt sein
- Anmerkung: XML ist „case-sensitive“
XML Wohlgeformtheit
Formale Voraussetzung für korrekte XML-Dokumente:
-jedes Start-Tag hat zugehöriges Ende-Tag
-Elemente dürfen geschachtelt werden, aber nicht überlappen
-genau ein Wurzelelement
-Attributwerte in Anführungszeichen
-keine zwei Attribute gleichen Namens in einem Element
-Kommentare und Verarbeitungsanweisungen nicht innerhalb eines
Tags
–> Wohlgeformtheit sorgt für Baumstruktur!
XML Gültigkeit
- Konkrete Strukturüberprüfung für ein korrektes XML-Dokument - ist das Dokument gültig/valide (Validierung)
- Überprüfung der Anordnung von Elementen und Attributen(z.B. XML-Dokument zur Beschreibung einer Word-Datei unterscheidet sich in der Struktur von XML-Dokumenten zur Beschreibung von Webseiten)
- Festlegung der Dokumentstruktur: DTD (Document Type Definition), XML-Schema, Beide Arten der Dokumentstruktur-Definition können im Dokument oder außerhalb des Dokuments stehen. (Außerhalb ist in der Regel aber sinnvoller)
XML Namensraum
Problem: Verknüpfung von XML-Dokumentausschnitten verschiedener Struktur in einem neuen XML-Dokument
–> Problem: Elementnamen nicht eindeutig!
Lösung: XML-Namensräume
-Jedes Element in einem XML-Dokument kann
Namensraumzuordnung haben
- Default: keine Namensraumzuordnung
- Identifikation des Namensraums durch URI
– der lediglich bezeichnenden Charakter hat!
Syntax für Namensraumzuordnung: In einem Element Nutzung des reservierten Attributs xmlns, Attributwert ist Namensraum-URI
Wikipedia: XML-Namensräume (englisch „XML namespaces“) werden benutzt, um Elemente und Attribute in einem XML-Dokument eindeutig zu identifizieren und um in einem einzelnen Dokument mehrere XML-Sprachen mischen zu können. Ihre Funktionsweise ist mit Vorwahlen bei Telefonnummern zu vergleichen
XML Schema
Funktion: Strukturbeschreibung von XML-Dokument-Klassen (XML-Anwendung), Grundlage zur Validierung von XML-Dokumenten - Syntaxprüfung, Löst DTD (Dokumententypdefinition) ab
XML-Schema:
- XML-Anwendung zur Beschreibung von XML-Anwendungen
- XML-Schema-Definition ist ein XML-Dokument
- XML-Schema-Instanz ist ein XML-Dokument das gültig/valide ist bzgl. einer XML-Schema-Definition
Wikipedia: XML Schema, abgekürzt XSD, ist eine Empfehlung des W3C zum Definieren von Strukturen für XML-Dokumente. Anders als bei den klassischen XML-DTDs wird die Struktur in Form eines XML-Dokuments beschrieben. Darüber hinaus wird eine große Anzahl von Datentypen unterstützt
XML-RPC
XML-RPC ist eine Definition zum Methoden- oder auch Funktionsaufruf durch verteilte Systeme.
Einfacher/primitiver Fernaufruf:
- Basierend auf XML-Nachrichten
- Limitierte Menge von primitiven Datentypen
- Unterstützung von arrays und structs
- HTTP als Trägerprotokoll
- Von nahezu allen aktuellen Programmiersprachen unterstützt
- JSON-RPC als gängige Alternative verfügbar
XML Struktur einer Anfragenachricht
XML-RPC Anfragen werden durch Methodennamen und Parameter beschrieben
HTTP Request
HTTP Body: Anfrage
HTTP Response
HTTP Body: Antwort
XML Datentypen
Primitive Datentypen:
- int oder i4 – 32 Bit, ganze Zahl
- double – Fließkommazahl
- string – Zeichenkette
- boolean – 0 oder 1
- dateTime.iso8601 – Datum noch ISO 8601
- base64 – Binärdaten (Base64)
komplexe Datentypen:
- arrays, können verschiedene Datentypen enthalten
- struct, sowas wie ein (ungeordneter) Hash
Fehlerbehandlung: Fehlermeldungen werden durch den fault-Tag im Rückgabewert eines Aufrufs signalisiert
SOAP - SImple Object Access Protocol
= Standard Kommunikationsprotokoll für Web-Services
- Nachrichtenbasierte Übertragung
- Übertragung vom Sender über Zwischenstationen zum Empfänger
- Aus mehreren Nachrichten komplexere Kommunikationsparadigmen zusammensetzbar: Request-Reply-Protokolle (z.B. entfernter Aufruf ), Multicast-Protokolle (z.B. mehrere Empfänger und/oder mehrere Antworten), mehrere Antworten auf einen Request, SOAP ist eine XML-Anwendung
- SOAP-Nachrichten sind XML-Dokumente
- SOAP-Nachrichten werden mittels Trägerprotokoll transportiert (z.B. HTTP, E-Mail, TCP/IP)
Bestandteile von SOAP
- Definition des Nachrichtenumschlags (Envelope): Beschreibung des Nachrichteninhalts und dessen Verarbeitung
- Definition von Codierungsregeln für anwendungsspezifische Datentypen (Encoding Rules): Umsetzung der Datentypen in XML (z.B. über XML-Schema-Datentypen)
- Choreographie für komplexe Interaktionen: Konventionen für die Nachrichten entfernter Aufrufe
- Abbildung auf ein Trägerprotokoll: Regeln zur Abbildung auf HTTP und E-Mail
SOAP Umschlag
= SOAP-Umschlag (Envelope) ist eine XML-Datei
-SOAP-Tags werden über XML-Namensräume von
anwendungsspezifischen Tags getrennt
-Interner Aufbau des Umschlags: Envelope mit Header und Body:
optionaler Kopf (Tag: Header):
-enthält Anwendungsdaten (beliebig viele Elemente)
-hauptsächlich für Zwischenknoten bei der Übertragung
-für Kontextinformationen
-Zwischenknoten kann Kopf-Komponenten verändern
– (Daten entfernen, hinzufügen, ändern)
-Adressat der Kopfelemente wird über Attribute angegeben
Rumpf (Tag: Body)
- enthält eigentliche Nachricht für den Empfänger
- beliebig viele Elemente
SOAP Codierungsregeln
Abbildungsregeln für Body- und Header-Daten in ein XML-Dokument:
-festgelegt durch freies Attribut soap:encodingStyle (im
Umschlagnamensraum) bei einem Body- oder Header-Element: Wert ist eine URI, welche die Abbildungsregel charakterisiert
-Attribut gilt für aktuelles und alle eingebetteten Elemente
Mögliche URI-Werte
- leere URI: keine Angabe zur Abbildungsregel
- anwendungsspezifische URI (z.B. zur Kennzeichnung eines bestimmten XML-Formats)
- SOAP-Encoding: für aktuelle Version SOAP 1.2: Rückgriff auf XML-Schema, Definition der Abbildung komplexer Datenstrukturen
SOAP Fehlernachrichten
= Mitteilung von Aufruffehlern: im Body-Element gibt es genau ein Fault-Element
-Fehlercodes:
VersionMismatch: Elemente passen nicht zur SOAP-Version
MustUnderstand: obligatorisches Element wurde nicht verstanden
DataEncodingUnknown: unbekannte Codierung für Datenelemente
Sender: Absender hat Fehler verursacht
Receiver: Empfänger kann Nachricht nicht bearbeiten, Fehler liegt beim Empfänger
- Verfeinerung der Fehlercodes durch untergeordnete Fehlercodes: Element Subcode im Code-Element
- HTTP-Fehlermeldung gelten nicht für SOAP-Verarbeitung
Request-Reply Nachrichten SOAP
-Aufrufnachricht (Request): Aufruf ist eine Struktur: Name der aufgerufenen Methode ist Name des Elements, alle in und inout Parameter sind Komponenten der Struktur
-Antwortnachricht (Reply): Antwort ist eine Struktur:
Name der Methode plus angehängtes Response ist Name des Tags, alle out- und inout-Parameter sind Komponenten der Struktur
-rpc ist spezieller Namensraum von SOAP für RPCs
- Spezifische Fehlermeldungen
env: Server – Ressourcenproblem
env: DataEncodingUnkown – Kodierung der Daten unbekannt
rpc: ProcedureNotPresent – Methode nicht verfügbar
rpc: BadArguments – Falsche Parameter
WSDL
= Web-Services Description Language (Version 2.0): Schnittstellenbeschreibung für Web-Services
-Beschreibung von
Typen (Types) – definieren XML-Elemente für Nachrichten
Schnittstellen (Interfaces) – definieren Operationen (Operations) und Fehlermeldungen (Faults)
Bindungen (Bindings) – definieren Abbildung auf ein Protokoll, z.B. SOAP über HTTP
Dienste (Services) – definieren konkrete Web-Service-Instanzen
Wikipedia: Die Web Services Description Language ist eine plattform-, programmiersprachen- und protokollunabhängige Beschreibungssprache für Netzwerkdienste zum Austausch von Nachrichten auf Basis von XML.
WSDL Schnittstellen
Verschiedene Kommunikationsmuster (Message Exchange Pattern)
-z.B. in-out: eine einkommende Nachricht, eine ausgehende Nachricht
-z.B. in-only: nur einkommende Nachricht acht Muster vordefiniert, weitere definierbar (in-only, robust in-only,
out-only, …)
Stil der Nachrichtenübertragung (Style)
- definiert Einschränkungen über dem Nachrichtenaufbau
- z.B. für SOAP RPC
Sicherheit
-freies Attribute wsdlx:safe definiert, ob Aufrufer evtl.
Verpflichtungen eingeht im Beispiel: Konto wird belastet d.h. nicht sicher
-Vererbung von Schnittstellen ist möglich