1 / 41

Software-Projekt 2007

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

keira
Télécharger la présentation

Software-Projekt 2007

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage METHODE ZIEL Eingabe Felder

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

  9. Was ist ein Web Service? Servlet / JSP Beispiel Servlet Quellcode Bibliotheken Konstruktor

  10. Was ist ein Web Service? Servlet / JSP Beispiel Servlet Quellcode GET-Methode POST-Methode umständlich! (besser Rückgabe mit JSP)‏

  11. Was ist ein Web Service? Servlet / JSP Beispiel HTML Anfrage klick!

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

  13. 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

  14. 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

  15. 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; } }

  16. 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

  17. 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

  18. 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

  19. 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!

  20. 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

  21. 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

  22. 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!

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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 ...

  33. 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

  34. 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.

  35. Beispiel: Server Interface • Die Signatur des Webserver Interface

  36. Beispiel: Server Implememtierung • Die Implementierung des Webservice

  37. Beispiel: Server Startup Wie startet man den Webservice?

  38. 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.

  39. Beispiel: Client

  40. 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

  41. 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

More Related