Web Services

Werbung
Praktikum aus
Softwareentwicklung 2
Web Services
Java Praktikum – SS 2010 – [email protected]
1
Praktikum aus
Softwareentwicklung 2
Web Services
•
Einführung
–
•
JAX-RPC
–
•
Definition, Eigenschaften, Anwendungen....
Überblick, Architektur...
JAX
–
Übersicht, Architektur…
Java Praktikum – SS 2010 – [email protected]
2
Praktikum aus
Softwareentwicklung 2
Web Services Einführung
Definition
•
„...eine über das Internet zugängliche ProgrammierSchnittstelle, basierend auf Internet-Technologien„
•
„Mittels HTTP Adresse eindeutig identifizierbar.“
•
„Gemeinsame Nutzung von Programmfunktionen über
Rechnergrenzen.“
Java Praktikum – SS 2010 – [email protected]
3
Praktikum aus
Softwareentwicklung 2
Web Services Einführung
Anwendungsbeispiele (B2B)
•
Lagerbestand von Händler abfragen
–
–
•
Buchen von Flügen
–
•
•
ISBN
Artikelbezeichnung
Reisebüros bieten aktuelle Flüge verschiedener
Gesellschaften (zentral)
Abfragen an Suchmaschinen
Collaboration Plattformen
–
–
Hersteller/Zulieferer...
http://www.covisint.com/
Java Praktikum – SS 2010 – [email protected]
4
Praktikum aus
Softwareentwicklung 2
Web Services Einführung
Kommunikation
Lose Kopplung:
HTTP - zustandsloses Kommunikationsprotokoll
XML - "neutrales" Beschreibungs- und Nachrichtenformat
Java Praktikum – SS 2010 – [email protected]
5
Praktikum aus
Softwareentwicklung 2
Web Services Einführung
Basistechnologien
Z.B. ein .NET-Programm
Z.B. eine Java-Web App.
Stellt HTTP Verbindung her
HTTP-Listener
DOM, SAX
DOM, SAX
HTTP:
XML:
TCP/IP, UDP
SOAP, WSDL
Eine Komponente, die
Anwendungsfunktionalität
bereit stellt
Java Praktikum – SS 2010 – [email protected]
6
Praktikum aus
Softwareentwicklung 2
Web Services Einführung
Service Orientierte Architektur (SOA)
Java Praktikum – SS 2010 – [email protected]
7
Praktikum aus
Softwareentwicklung 2
Architektur
Technologie Stack
UDDI – Universal Description, Discovery and Integration
WSDL – Webservice Description Language
SOAP – Simple Object Access Protocoll
Java Praktikum – SS 2010 – [email protected]
8
Praktikum aus
Softwareentwicklung 2
Web Services Einführung
Links
•
Apache
–
–
•
IBM
–
•
http://msdn.microsoft.com/webservices
Sun Microsystems
–
•
http://www-106.ibm.com/developerworks/webservices
Microsoft
–
•
http://ws.apache.org/axis/java/index.html
http://ws.apache.org/axis2/
http://java.sun.com/webservices
W3C
–
http://www.w3.org/2002/ws
Java Praktikum – SS 2010 – [email protected]
9
Praktikum aus
Softwareentwicklung 2
Web Services
•
Einführung
–
•
JAX-RPC
–
•
Definition, Eigenschaften, Anwendungen....
Übersicht, Architektur….
JAX
–
Überblick, Architektur....
Java Praktikum – SS 2010 – [email protected]
10
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Übersicht
•
•
•
Java API for XML based RPC
RPC = Remote Procedure Call
Programmierschnittstelle
–
–
für die Entwicklung von Web Services
für die Entwicklung von Web Service Clients
Java Praktikum – SS 2010 – [email protected]
11
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Vorfahren und Verwandte
•
•
•
•
RPC – Remote Procedure Call
–
Sun RPC (NFS - Nework File System)
–
C/C++
IIOP – Internet Inter-ORB Protocol
–
CORBA - Common Object Request Broker Architecture
–
Ziel ist Sprachunabhängigkeit
–
OMG Standard http://www.omg.org/
DCOM – Distributed Component Object Model
–
Objektorientiertes RPC-System von Microsoft, COM Erweiterung
–
.NET Remoting und Enterprise Services ab MS Vista integriert
RMI – Remote Method Invocation
–
100% Java, Serialisierung (fast) beliebiger Objekte
Java Praktikum – SS 2010 – [email protected]
12
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Client/Server Schnittstelle
•
•
•
•
Protokoll basiert auf SOAP
API “versteckt” hohe Komplexität
Ein Service X implementiert ein Interface welches ein oder
mehrere Remote Prozeduren des Services beschreibt
Client verwendet Stub Objekt zum Aufrufen von Methoden
des Service Objekts Tie
Java Praktikum – SS 2010 – [email protected]
13
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Client/Server Schichten
Java Praktikum – SS 2010 – [email protected]
14
Praktikum aus
Softwareentwicklung 2
JAX-RPC
WSDL
•
Web Service Description Language
–
•
•
Service Beschreibung in XML
Server stellt WSDL zur Verfügung
Client Tool „versteht“ WSDL
–
Generiert Client API (Java, .NET, C++)
Java Praktikum – SS 2010 – [email protected]
15
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Service: Java/WSDL Mapping
Java Praktikum – SS 2010 – [email protected]
16
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Daten: Type Mappings
Java Praktikum – SS 2010 – [email protected]
17
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Entwicklungsschritte
Entwicklung des Webservices
•
1.
2.
3.
Implementierung:
Codierung des „service endpoint interface“
Build (otpional): Generierung, Übersetzung und
Verpackung der Dateien welche für den Service
benötigt werden – kann auch zur Laufzeit
erfoglen, wie bei Axis via Reflection
Deploy: abhängig von Distribution (JAR, WAR,
deployment descriptor…)
Java Praktikum – SS 2010 – [email protected]
18
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Arten von Clients
•
3 Arten von Webservice Clients
–
–
–
Static stub: die Stub-Klasse wird vor der Laufzeit erzeugt.
Die Stub Klasse wird als statischer Proxy verwendet
Dynamic proxy: die Stub-Klasse wird zur Laufzeit erzeugt
und kann auch als dynamischer Proxy bezeichnet werden
Dynamic invocation interface (DII): mit diesen Interface
können Remote Procedures auch dann aufgerufen werden,
wenn die Signatur oder der Service bis zur Laufzeit nicht
bekannt sind. Diese Clients sind kompliziert zu entwickeln
und man benötigt genau Kenntnisse von WSDL Dokumenten
Java Praktikum – SS 2010 – [email protected]
19
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Alernative REST
REpresentational State Transfer
RESTful Web Services
Service Requests
•
•
•
HTTP (GET, POST)
Kein WSDL - keine Methoden und Typ Informationen
Dokument Format nicht definiert: XML, JSON...
Clients APIs können nicht generiert werden
–
–
–
–
●
Yahoo Web Services
●
http://developer.yahoo.com/answers/
Java Praktikum – SS 2010 – [email protected]
20
Praktikum aus
Softwareentwicklung 2
JAX-RPC
Java Implementierungen
•
•
•
•
Apache Axis
–
Axis 1
–
Axis 2
Sun JAX-WS
–
https://jax-ws.dev.java.net/
–
NetBeans
–
Ab Java 6 integriert
XFire
–
http://xfire.codehaus.org/
–
MyEclipse
Alle basieren auf JAX-RPC
Java Praktikum – SS 2010 – [email protected]
21
Praktikum aus
Softwareentwicklung 2
Web Services
•
Einführung
–
•
JAX-RPC
–
•
Definition, Eigenschaften, Anwendungen....
Übersicht, Architektur…
JAX
–
Überblick, Architektur....
Java Praktikum – SS 2010 – [email protected]
22
Praktikum aus
Softwareentwicklung 2
JAX
Überblick
•
•
JAX – Java API‘s for XML
Unterteilung in 2 Arten:
–
Prozedur-orientiert
•
•
–
JAX-RPC – Java API for XML-based RPC
JAXR – Java API for XML Registries
Dokumenten-orientiert
•
•
•
JAXP – Java API für XML Processing
JAXB – Java Architecture for XML Binding
SAAJ – SOAP with Attachments API for Java (SAAJ ist eine
Implementation von JAXM – Java API for XML Messaging
Java Praktikum – SS 2010 – [email protected]
23
Praktikum aus
Softwareentwicklung 2
JAX
Architektur
Java Praktikum – SS 2010 – [email protected]
24
Praktikum aus
Softwareentwicklung 2
JAX
JAXP
•
JAXP – Java API für XML Processing
–
–
–
SAX API– Simple API for XML
DOM API – Document Object Model
XSLT API – XML Transformations
•
•
XML Stylesheet Language (XSL) bestimmt wie die XML
Daten angezeigt werden
XSLT benutzt die Formatangaben von XSL für die
Transformation
Java Praktikum – SS 2010 – [email protected]
25
Praktikum aus
Softwareentwicklung 2
JAX
JAXB – Bind Process
Java Praktikum – SS 2010 – [email protected]
26
Praktikum aus
Softwareentwicklung 2
JAX
JAXR - Registries
•
•
•
•
•
Java API for XML Registries
Registries sind Verzeichnisse von Services
Generische API zum Abfragen/Bearbeiten von
Registries, die JAXR Provider bereitstellen
Unterstützt Vereinigungsmenge der Konzepte
komplementärer Ansätze (z.B. UDDI, ebXML)
Package: javax.xml.registry
Java Praktikum – SS 2010 – [email protected]
27
Praktikum aus
Softwareentwicklung 2
JAX
JAXR - Architketur
Java Praktikum – SS 2010 – [email protected]
28
Praktikum aus
Softwareentwicklung 2
JAX
SOAP
•
•
•
•
•
•
•
Simple Object Access Protocol
Lightweight Message Protokoll
Getypter Datenaustausch zwischen Applikationen
Nachrichtenstruktur wird in XML definiert
Besonders geeignet für RPC Funktionalität
Lose Kopplung
Transport Binding über darunterliegendes Transport
Protokoll - HTTP
Java Praktikum – SS 2010 – [email protected]
29
Praktikum aus
Softwareentwicklung 2
JAX
SOAP
Java Praktikum – SS 2010 – [email protected]
30
Praktikum aus
Softwareentwicklung 2
JAX
SOAP
•
•
•
Spezifikation SOAP
W3C Spezifikation: http://www.w3.org
Umfasst:
–
–
–
–
SOAP envelope – Struktur eine SOAP Nachricht
SOAP encoding – deserialisierungs Regeln
SOAP binding Framework – Binding an ein
bestimmtes Transport Protokoll
SOAP RPC
Java Praktikum – SS 2010 – [email protected]
31
Praktikum aus
Softwareentwicklung 2
Ende der 8. Übung
Java Praktikum – SS 2010 – [email protected]
32
Herunterladen