software-projekt 2007

41
Software-Projekt 2007 Seminarvortrag „Programmieren und das Web“ Ki-Hyoun Kim Marcel Steffen Marek Steß Markus Koetter Sascha Haller Wei Chen

Upload: keira

Post on 30-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

Software-Projekt 2007. Seminarvortrag „Programmieren und das Web“. Ki-Hyoun Kim Marcel Steffen Marek Steß Markus Koetter Sascha Haller Wei Chen. Was ist ein Web Service?. Was ist ein Web Server?. Wozu? - Man möchte Informationen im Internet zur Verfügung stellen - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Software-Projekt 2007

Software-Projekt 2007Seminarvortrag „Programmieren und das Web“

Ki-Hyoun KimMarcel SteffenMarek SteßMarkus KoetterSascha HallerWei Chen

Page 2: Software-Projekt 2007

Was ist ein Web Service?

Wozu? - Man möchte Informationen im Internet zur Verfügung stellen - Man braucht keine Software (außer Browser) - Informationen für jeden abrufbar

Umgangssprachlich Software und Hardware

Eigentlicher Sinn: Software

Stellt über das HTTP-Protokoll Informationen (in Form von HTML) zur Verfügung

Mehr Informationen unter:http://www.aidex.de/software/webserver/index.html

Was ist ein Web Server?

Page 3: Software-Projekt 2007

Was ist ein Web Service?

Berühmtester, Java-fähiger Webserver

kostenlos (open source)

Laufzeitumgebung zur Ausführung von Java Code auf Webservern

In Java geschriebener Servlet Container

HTTP-Server / Apache-Webserver wird hinzugeschaltet

Was ist Apache Tomcat? Wofür benutzt man Apache Tomcat?

Page 4: Software-Projekt 2007

Was ist ein Web Service?

Wofür? komplizierte Berechnungen, übers Internet abrufbar

Eine Java Klasse

Antwort wird dynamisch erstellt

Java Pendant zu CGI

Was ist ein Servlet? Wofür benutzt man Servlets?

Page 5: Software-Projekt 2007

Was ist ein Web Service?

Wofür? Servlet-Ausgabe anschaulich gestalten?

Erzeugung von HTML-Template mit dynamischen Komponenten

„JSP“ - JavaServer Pages

eingebetteter Java Code in HTML

Java-Code wird ersetzt, HTML-Rückgabe an den Browser

Was ist JSP? Wofür benutzt man JSP?

Page 6: Software-Projekt 2007

Was ist ein Web Service? Was ist JSP? Wofür benutzt man JSP?

JSP

Betrag in Euro:

<%=betrag %>

Servlet

Eingabe: 2.- DM

HTML-Ausgabe

Betrag in Euro:

1.02 €

z.B.: HTML-Formular

Servlet führt Berechnung durch

2 x 0.51129

Ergebnis

Ersetzt die Platzhalter

JSP gibt HTML-Ausgabe an den Browser zurück

Beispiel Euroumrechner

Page 7: Software-Projekt 2007

Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage

ZIEL

Eingabe Felder

METHODE

Page 8: Software-Projekt 2007

Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage

URL

Page 9: Software-Projekt 2007

Was ist ein Web Service? Servlet / JSP Beispiel Servlet Quellcode

Bibliotheken

Konstruktor

Page 10: Software-Projekt 2007

Was ist ein Web Service? Servlet / JSP Beispiel Servlet Quellcode

GET-Methode

POST-Methode

umständlich! (besser Rückgabe mit JSP)

Page 11: Software-Projekt 2007

Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage

klick!

Page 12: Software-Projekt 2007

Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage

Servlet

Page 13: Software-Projekt 2007

Was ist ein Web Service?

Servlet

eigentliche Berechnung

Servlet = dynamisch / Controller Logik und Design in einem

JSP

JSP visuelle Ausgabe von Servlet Berechnung erleichtert die Ausgabe von HTML mithilfe von Platzhaltern

Trennung von Logik und Design

Was ist der Unterschied zwischen Servlet und JSP?

Page 14: Software-Projekt 2007

Was ist ein Web Service?

Application Server - stellt dem System Dienste zur Verfügung

Wie hängen die folgenden Begriffe zusammen: Application Server, Web Server, Servlet Container, Servlet, JSP?

Web Server- Application Server für's Web

...

Glassfish

Servlet ContainerLaufzeitumgebung zur Ausführung von Java

Servlet

JSP

HTML

Page 15: Software-Projekt 2007

package eur.server;

public class EUR2USDImpl implements EUR2USD {

public double getUSD(double EUR) {return EUR * USDrate;

}

public double getEUR(double USD) {return USD * EURrate;

}

}

Web Service – Motivation

Page 16: Software-Projekt 2007

Unterstützt die direkte Interaktion mit anderen Software-Agenten

Verwendet XML-basierte Nachrichten → unabhängig von Betriebssystem und Programmiersprache

Nicht für menschliche Benutzer, sondern für Softwaresysteme

Der Austausch der Daten erfolgt über plattformunabhängige Protokolle, die auch kombiniert werden können

Erreichbar über eindeutige URI

Was ist ein Web Service?

Page 17: Software-Projekt 2007

Offene Standards → keine Lizenzkosten → alle benutzen es, alle kennen es

Nutzung von HTTP zur Datenübertragung → selten Probleme mit Firewalls

Nicht an HTTP gebunden, sondern auch mit Protokollen wie SMTP und FTP

Nutzung von Internet-Standards → unabhängig von Plattformen, Programmiersprachen und Protokollen

Geringe Einstiegsbarrieren

Vorteile von Web Services

Page 18: Software-Projekt 2007

Nachteile von Web Services

Verschlüsselung notwendig, da die Daten offen übers Internet übertragen werden Performance:

XML, Parsen und Dateigröße beeinflusst negativ Verwaltungsaufwand steigt bei verteilten Systemen Overhead ist erheblich

Programmiersprachen brauchen spezielle Bibliotheken (in Java z.B. JAX-WS)

Schnittstellen müssen genau definiert werden

Page 19: Software-Projekt 2007

SOAP – Motivation

package eur.server;

public class EUR2USDImpl implements EUR2USD {

public double getUSD(double EUR) {return EUR * USDrate;

}

public double getEUR(double USD) {return USD * EURrate;

}

}

Wie bekomme ich nun meine Umrechung von Dollar in Euro?

Ich muss meine Anfrage senden!

Page 20: Software-Projekt 2007

Was ist SOAP?

Ursprünglich für Simple Object Access Protocol

Protokollstandard des W3C

Netzwerkprotokoll für den Austausch von Daten

Unabhängig von Betriebssystemen, Programmiersprachen und Objektmodellen

Stützt sich auf Dienste anderer Standards: XML zur Repräsentation der Daten Bild- und andere Binärdateien, werden per MIME angehängt Internetprotokolle der Transport- und Anwendungsschicht

Page 21: Software-Projekt 2007

Wozu braucht ein Web Service SOAP?

SOAP spezifiziert eine Verpackung für den Transport von XML-Dokumenten, um Web Service aufzurufen oder Antwort zu empfangen

SOAP regelt, wie Daten zum Web Service abzubilden und zu interpretieren sind

Wird eingesetzt, wo der direkte Zugang fremder Systeme nicht sinnvoll ist

Page 22: Software-Projekt 2007

WSDL – Motivation

package eur.server;

public class EUR2USDImpl implements EUR2USD {

public double getUSD(double EUR) {return EUR * USDrate;

}

public double getEUR(double USD) {return USD * EURrate;

}

}

Und was bietet nun mein Web Service?

Mit WSDL kann ich es mir ansehen!

Page 23: Software-Projekt 2007

Was ist WSDL?

Web Services Description Language (WSDL)

XML-Spezifikation zur Beschreibung von Netzwerkdiensten (Web-Services)

Plattform-, Programmiersprachen- und Protokollunabhängig

Definiert Operationen, Parameter und Rückgabewerte, die von außen zugänglich sind

Page 24: Software-Projekt 2007

Welche Informationen stehen in einem WSDL Dokument?

Datentypen (types): Definiert Datentypen die für Informationsaustausch verwendet werden

Nachricht (message): Beschreibt die Nachricht, die zwischen dem Client und dem

Server übertragen wird. Eindeutiger Name Kann mehrere Nachrichtenelemente enthalten In den part Elementen der Nachrichten werden die Parameter übergeben

Port-Typ (portType): Art des Nachrichtenaustauschs wird definiert

Anbindung (binding): Beschreibt wie die Nachricht zum Server kommt

Page 25: Software-Projekt 2007

Welche Informationen stehen in einem WSDL Dokument?

Port (port): Beinhaltet spezifischen Endpunkt (Adresse), wo der Service zu erreichen ist

Dienst (service): Definiert den eigentlichen Web Service

Exceptions werden geworfen

Page 26: Software-Projekt 2007

Was steht alles in einem WSDL-Dokument?

<wsdl:definitions name="EUR2USD" targetNamespace="http://server.eur/"><wsdl:types>

<xsd:element name="getUSD" type="tns:getUSD"/><xsd:complexType name="getUSD">

<xsd:sequence><xsd:element name="arg0" type="xsd:double"/>

</xsd:sequence></xsd:complexType>

</wsdl:types><wsdl:message name="getEURResponse">

<wsdl:part element="tns:getEURResponse" name="result"> </wsdl:part>

</wsdl:message>−<wsdl:message name="getEUR">

<wsdl:part element="tns:getEUR" name="parameters"> </wsdl:part>

</wsdl:message>

Datentypen

Nachrichten

Page 27: Software-Projekt 2007

Was steht alles in einem WSDL-Dokument?

<wsdl:portType name="EUR2USD“><wsdl:operation name="getUSD">

<wsdl:input message="tns:getUSD" name="getUSD"> </wsdl:input>

<wsdl:output message="tns:getUSDResponse" name="getUSDResponse"> </wsdl:output>

</wsdl:operation></wsdl:portType>

<wsdl:binding name="EUR2USDSoapBinding" type="tns:EUR2USD"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:service name="EUR2USD“>

<wsdl:port binding="tns:EUR2USDSoapBinding" name="EUR2USDImplPort"><soap:address location="http://localhost:9000/EUR2USD"/>

</wsdl:port></wsdl:service>

</wsdl:definitions>

Port-Typ

Dienst

Port

Übertragungsprotokolle

Page 28: Software-Projekt 2007

Was unterscheidet einen WS von einem Servlet Container?

Zugriff auf Servlets über HTTP Zugriff auf Webservices über SOAP

Ein Servlet kann nicht direkt aufgerufen werden (nur über Browser) Ein Web Service kann direkt aus Applikation angesprochen werden

Bei einem Servlet kann man nicht direkt sehen, welche Parameter angenommen werden können Ein Web Service wird mit WSDL exakt beschrieben

Web Service

Applikation

Computer

Servlet Container

Browser

Mensch

Page 29: Software-Projekt 2007

Was ist JAX-WS?

Ist eine Java-API zum Erstellen von Web-Services

•eingeführt in Java Enterprise Edition 5

Mein Java-Programm sollen alle benutzen können!

→ Ich bette in mein Java-Programm JAX-WS ein → Web Service

Wie kann man jetzt darauf zugreifen?

→ Client braucht Programm, dass meine Web Service-Methoden aufruft

Page 30: Software-Projekt 2007

Was ist JAX-WS?

•Vorgehen:

Für Web Service wird ein Java-Interface definiert, welches in einer Klasse implementiert wird→ Klasse enthält Logik des Web Service

Clientseite: Adressierung des Web Services über URI und Erzeugung eines lokalen Proxy-Objekts, das auch die Schnittstelle des Web Services implementiert

Client führt Methodenaufrufe auf dem Proxy-Objekt aus,als wäre der Web-Service lokal verfügbar

Das JAX-WS Runtime System schickt dann die Aufrufe des Proxy-Objekts an den Web Service weiter dieser führt die Operationen aus und schickt das Ergebnis an den Client zurück

Page 31: Software-Projekt 2007

Apache CXF

Ein WebService Framework

Warum Apache CXF?

→ Umfangreiche API um Services und Clients in verschiedenen Sprachen und mit verschiedenen Protokollen zu realisieren

→ sehr einfach zu nutzen, der http Server (Jetty) ist embedded, keine Tomcat/Apache Basteleien erforderlich, keine XML Situps

Page 32: Software-Projekt 2007

Apache CXF

Was bietet Apache CXF?

Integration von- Bindings für SOAP, REST/HTTP- Data bindings: JAXB 2.0, Aegis.- Formats: XML, JSON- Transports: HTTP, Servlet, JMS, and Jabber transports

Unterstützung von vielen verschiedenen Standards- JAX-WS 2.0 Client/Server programming model- XML messaging API- Support for JavaScript and ECMAScript 4 XML (E4X) –

both client and server- ... viele mehr ...

Page 33: Software-Projekt 2007

Wann CXF?

Client/Server Kommunikation um spezifische Daten zu übertragen (RPC)- WS-JAX bietet sich an- CXF benutzt WS-JAX zum erzeugen und parsen von SOAP

Server Backend für Clientzugriffe auf eine Ressource

- Service Methoden die auf dem Server implementiert werden, können von allen Clients (unabhängig von der Programmiersprache)

genutzt werden- Clients haben keinen direkten Zugriff auf die Ressource- Anfragen können gefiltert werden

Prototyping- Entwurf von Diensten mit CXF, da es einfach und schnell geht

Page 34: Software-Projekt 2007

Das Beispiel

Im Rahmen des Beispiels werden wir:- einen Server implementieren der auf Port 9000 auf anfragen wartet- der die Methode „String sayHi(String)“ implementiert- diese Methode wird von Remote erreichbar sein

desweiteren werden wir einen Client implementieren, - der zu dem Server verbindet- die sayHi Methode des Servers mit dem Argument Hi aufruft.

Für die Realisierung eines Webservice mit CXF

Page 35: Software-Projekt 2007

Beispiel: Server Interface

Die Signatur des Webserver Interface

Page 36: Software-Projekt 2007

Beispiel: Server Implememtierung

Die Implementierung des Webservice

Page 37: Software-Projekt 2007

Beispiel: Server Startup

Wie startet man den Webservice?

Page 38: Software-Projekt 2007

Zwischenstand

* Der Server wartet nun auf localhost:9000 auf Anfragen.

* Die Anfragen werden von Jetty – einem Java embedded Webserver angenommen

* gültige Anfragen werden an unseren HelloWorld Webservice weitergeleitet

Wir brauchen einen Client um Anfragen stellen zu können.

Page 39: Software-Projekt 2007

Beispiel: Client

Page 40: Software-Projekt 2007

Marshalling im Web Service

Wie verschicke ich ein kompliziertes Objekt?

→ Wie packe ich das in SOAP?

→ Ich muss es marshaln

Objekte werden in das XML Format und wieder zurück in Objekte umgewandelt

Bildlich ausgedrückt: Das Objekt wird in XML “eingefroren”, bis es wieder zu einem Objekt “aufgetaut” wird

Page 41: Software-Projekt 2007

Marshalling im Web Service

•Was ist darunter zu Verstehen?

Ist das Entgegennehmen und Umwandeln einer Menge von strukturierten Datenelementen bzw. elementaren Werten in ein Format, mit dem man diese Menge in einer Nachticht an einem Empfänger schicken kan

Die Empfängerseite ist in der Lage, die Menge vonDatenelementen aus der Nachricht zu extrahieren und die Datenstruktur wiederherzustellen

Dies nennt man Demarshalling oder Unmarshalling