vortragsfolien_notizen

Werbung
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 Server?
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 Service?
Was ist Apache Tomcat? Wofür benutzt man Apache Tomcat?

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 ein Web Service?
Was ist ein Servlet? Wofür benutzt man Servlets?

Wofür?
komplizierte Berechnungen, übers Internet abrufbar

Eine Java Klasse

Antwort wird dynamisch erstellt

Java Pendant zu CGI
Was
ist ist
JSP?
Wofür
benutzt
man JSP?
Was
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 ist
JSP?
Wofür
benutzt
man JSP?
Was
ein
Web
Service?
Beispiel Euroumrechner
JSP
Ersetzt die
Platzhalter
Betrag in
Euro:
Eingabe: 2.- DM
<%=betrag %>
z.B.: HTML-Formular
HTML-Ausgabe
Servlet
Betrag in
Euro:
1.02 €
Servlet führt
Berechnung durch
2 x 0.51129
JSP gibt HTMLAusgabe an den
Browser zurück
Servlet / JSP Beispiel
WasAnfrage
ist ein Web
HTML
METHODE
Service?
ZIEL
Eingabe Felder
Servlet / JSP Beispiel
WasAnfrage
ist ein Web
HTML
Service?
URL
Servlet / JSP Beispiel
Was Quellcode
ist ein Web
Servlet
Service?
Bibliotheken
Konstruktor
Servlet / JSP Beispiel
Was Quellcode
ist ein Web
Servlet
Service?
GET-Methode
POSTMethode
umständlich! (besser Rückgabe mit JSP)
Servlet / JSP Beispiel
WasAnfrage
ist ein Web
HTML
Service?
klick!
Servlet / JSP Beispiel
WasAnfrage
ist ein Web
HTML
Service?
Servlet
Was ist ein Web Service?
Was ist der Unterschied zwischen Servlet und JSP?
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
Wie hängen die folgenden Begriffe zusammen:
Application Server, Web Server, Servlet Container, Servlet, JSP?
Was ist ein Web Service?

Application Server
- stellt dem System Dienste zur Verfügung
...
Web Server
- Application Server für's Web
Glassfish
Servlet Container
Laufzeitumgebung zur
Ausführung von Java
JSP
Servlet
HTML
Web Service – 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;
}
}
Was ist ein Web Service?





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
Vorteile von Web Services

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
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
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!
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
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
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!
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
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
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
Was steht alles in einem WSDL-Dokument?
<wsdl:definitions name="EUR2USD" targetNamespace="http://server.eur/">
<wsdl:types>
Datentypen
<xsd:element name="getUSD" type="tns:getUSD"/>
<xsd:complexType name="getUSD">
<xsd:sequence>
<xsd:element name="arg0" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
Nachrichten
</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>
Was steht alles in einem WSDL-Dokument?
Port-Typ
<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>
Übertragungs
</wsdl:service>
protokolle
</wsdl:definitions>
Port
Dienst
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
Servlet Container
Applikation
Browser
Computer
Mensch
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
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
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
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 ...
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
Das Beispiel
Für die Realisierung eines Webservice mit CXF
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.
Beispiel: Server Interface
Die Signatur des Webserver Interface
Beispiel: Server Implememtierung
Die Implementierung des Webservice
Beispiel: Server Startup
Wie startet man den Webservice?
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.
Beispiel: Client
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
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 von
Datenelementen aus der Nachricht zu extrahieren und
die Datenstruktur wiederherzustellen
 Dies nennt man Demarshalling oder Unmarshalling
Herunterladen