410 likes | 506 Views
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
E N D
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 • - 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 ein Web Service? Was ist JSP? Wofür benutzt man JSP? • 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 ein Web Service? Was ist JSP? Wofür benutzt man JSP? Beispiel Euroumrechner JSP Betrag in Euro: <%=betrag %> Ersetzt die Platzhalter Eingabe: 2.- DM Ergebnis Servlet z.B.: HTML-Formular HTML-Ausgabe Betrag in Euro: 1.02 € Servlet führt Berechnung durch 2 x 0.51129 JSP gibt HTML-Ausgabe an den Browser zurück
Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage METHODE ZIEL Eingabe Felder
Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage URL
Was ist ein Web Service? Servlet / JSP Beispiel Servlet Quellcode Bibliotheken Konstruktor
Was ist ein Web Service? Servlet / JSP Beispiel Servlet Quellcode GET-Methode POST-Methode umständlich! (besser Rückgabe mit JSP)
Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage klick!
Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage Servlet
Was ist der Unterschied zwischen Servlet und JSP? 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
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 ContainerLaufzeitumgebung zur Ausführung von Java JSP HTML Servlet
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> • <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
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> • </wsdl:service> • </wsdl:definitions> Übertragungsprotokolle 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 Applikation Computer Servlet Container Browser 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.
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