Einführung in Web Services



Ähnliche Dokumente
SOA. Prof. Dr. Eduard Heindl Hochschule Furtwangen Wirtschaftsinformatik

Workflow, Business Process Management, 4.Teil

Verteilte Systeme: Übung 4

Wiederholung: Beginn

Web-Sevices : WSDL Entwicklung von Web-Anwendungen

Übersicht. Angewandte Informatik 2 - Tutorium 6. Teile einer WSDL-Datei. Was ist WSDL. Besprechung: Übungsblatt 5

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

Thema: Web Services. Was ist ein Web Service?

Mobile und Verteilte Datenbanken

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Autor: Peter Seemann Seminar: Softwarearchitekturen Betreuer: Benedikt Meurer

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Remote Method Invocation

Übungen zu Softwaretechnik

WSDL. Web Services Description Language. André Vorbach. André Vorbach

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

Implementierung von Web Services: Teil I: Einleitung / SOAP

Themen. Web Service - Clients. Kommunikation zw. Web Services

Webservices Ein Vortrag von:

SOAP Integrationstechnologie für verteilte Middlewarearchitekturen?

Definition Web Service

WebServices Zwischen Buzzword und Nutzen

Java RMI Remote Method Invocation

Java und XML 2. Java und XML

Einführung in Web Services. Seminararbeit

Zustandsgebundene Webservices

Man liest sich: POP3/IMAP

Java-Programmierung. Remote Method Invocation - RMI

Securing SOAP e-services

3-schichtige Informationssystem-Architektur

Auszug aus JAX-WS Folien

OP-LOG

E-Services mit der Web-Service-Architektur

XML und SOAP Einführung und Grundlagen

Web Services. Dr. Wolfgang Süß

Seminar E-Services WS 02/03 WSDL. Web Services Description Language. Moritz Kleine SES 02 - WSDL

Web-Applications mit SOAP und RSS. Vortrag 8, Jonas Mitschang,

Anwendungsprotokolle: HTTP, POP, SMTP

WebService in Java SE und EE

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

CORBA. Systemprogrammierung WS

Lokale Installation von DotNetNuke 4 ohne IIS

Gliederung. 1. Einleitung (1) 1. Einleitung (3) 1. Einleitung (2)

EasyWk DAS Schwimmwettkampfprogramm

Der lokale und verteilte Fall

Architektur von SOAP basierten Web Services

Grundlagen der Web-Entwicklung INF3172

VVA Webservice Online Lieferbarkeits-Abfrage

Leitfaden zur Nutzung von binder CryptShare

Übung: Verwendung von Java-Threads

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Java Enterprise Architekturen Willkommen in der Realität

Programmieren II. WebServices. Institut für Angewandte Informatik

Abschlusspräsentation Projekt Loan Broker mit BizTalk 2010

4D Server v12 64-bit Version BETA VERSION

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Themen. Web Services und SOA. Stefan Szalowski Daten- und Online-Kommunikation Web Services

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

Online-Publishing mit HTML und CSS für Einsteigerinnen

How-to: Webserver NAT. Securepoint Security System Version 2007nx

msm net ingenieurbüro meissner kompetent - kreativ - innovativ

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Seminarbericht Rechnernetze XML Web Services Schnittstelle zwischen den Welten.NET und Java

Objektorientierte Programmierung

Proseminar: Website-Management-Systeme

Inhalt I. Blick zurück II. Was sind WebServices? III. Rahmenwerk für edienstleistungen IV. Verwendete WebServices

Objektorientierte Programmierung. Kapitel 12: Interfaces

Containerformat Spezifikation

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

SOA mit.net: Vom Geschäftsprozess zur Lösung

ObjectBridge Java Edition

MSDE 2000 mit Service Pack 3a

Öffnen Sie den Internet-Browser Ihrer Wahl. Unabhängig von der eingestellten Startseite erscheint die folgende Seite in Ihrem Browserfenster:

Einführung in die Programmierung

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Eine Anwendung mit InstantRails 1.7

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Programmieren in Java

Multiuser Client/Server Systeme

2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen

Microsoft.NET. InfoPoint 8. Juni 2005 Stefan Bühler

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Java: Vererbung. Teil 3: super()

Zählen von Objekten einer bestimmten Klasse

Firewalls für Lexware Info Service konfigurieren

Guide DynDNS und Portforwarding

Clientkonfiguration für Hosted Exchange 2010

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back

SMS-API. Sloono Schnittstellenbeschreibung. Version 1.2 Stand

e-business - Patterns Stefan Brauch (sb058) -- Julian Stoltmann (js057)

3. Stored Procedures und PL/SQL

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Web Sockets mit HTML5. Quelle:

Web-Konzepte für das Internet der Dinge Ein Überblick

Client-Server mit Socket und API von Berkeley

Transkript:

Einführung in Web Services Seminar Web Services am 18.05.2004 von Can Okutan und Sascha Schnaufer Betreuer: Andreas Kamper

Agenda Einführung Aufbau von Mehrbenutzer-Anwendungen RMI Corba Warum Webservices? Webservice im Detail Architektur XML HTTP SOAP WSDL UDDI Webservice Minibeispiel in.net 2

Anwendungen mit gemeinsamer Datenbank Client 1 Client 2 Client 3 SQL-Statement Datenbank z.b. SQL Server User Interface und Logik bei jedem Client Clients greifen direkt über SQL-Statements auf die Datenbank zu Auf dem Server läuft nur die Datenbank Probleme: Eventuell hohe Netzwerkbelastung z.b. bei der Suche von Duplikaten Nur auf Datenbankebene können Daten zwischengespeichert werden Updates müssen auf allen Clients eingespielt werden 3

Three-Tiered Ansatz Quelle: Vorlesung Verteilte Objekte WS02 von Stefan Kuhlins 4

Logische Monolithen (Client / Server) Quelle: Vorlesung Verteilte Objekte WS02 von Stefan Kuhlins 5

Heterogenität Quelle: Vorlesung Verteilte Objekte WS02 von Stefan Kuhlins 6

Kommunikation zwischen Anwendungen/Schichten (1) Anwendung 1 Anwendung 2 User Interface Logik der Anwendung Datenmanagement Kommunikation über Netzwerk, aber wie genau? z.b. Eigene Implementation über TCP auf einem festgelegten Port Aufbau der Nachrichten definieren z.b. jeder Funktion eine Nummer zuordnen -> 1 = String getkundenname( String Kundennummer ) Aufbau des Anfragepaketes '1, K50015' Aufbau des Antwortpaketes '1, Müller' 7

Kommunikation zwischen Anwendungen/Schichten (2) Probleme: Extrem unflexibel Viel zu definieren Der gesamte Kommunikationscode muss selbst geschrieben werden Fehleranfällig 8

RMI ( Remote Method Invocation ) (1) Basiert auf der Java Virtual Machine (JVM) Einfache Entwicklung verteilter Java-Anwendungen Typprüfung Sicherheit (Security Manager) Natürliche Integration in die Sprache 9

RMI ( Remote Method Invocation ) (2) Client (z.b. Rechner mit dem User Interface) RMI Server (z.b. Rechner mit der Logik der Anwendung) Server: Erzeugen entfernte Objekte Warten auf Methodenaufrufe für die Objekte Client: Bekommen Referenzen auf entfernte Objekte Rufen Methoden für die entfernten Objekte auf RMI Steuert die Kommunikation 10

RMI ( Remote Method Invocation ) (3) Vorgehen: 1. Remote Java-Interface einer Klasse definieren 2. Interface implementieren 3. Server implementieren 4. Client implementieren 1. Remote Interface definieren: import java.rmi.*; public interface RMICounter extends Remote { void reset() throws RemoteException; void increment() throws RemoteException; int value() throws RemoteException; } 11

RMI ( Remote Method Invocation ) (4) 2. Interface implementieren: import java.rmi.*; import java.rmi.server.*; public class RMICounterImpl extends UnicastRemoteObject implements RMICounter { private int counter; public RMICounterImpl() throws RemoteException { super(); } public void reset() throws RemoteException { counter = 0; } public void increment() throws RemoteException { ++counter; } public int value() throws RemoteException { return counter; } } 12

RMI ( Remote Method Invocation ) (5) 3. Server implementieren import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; public class RMICounterServer { public static void main(string args[]) { try { LocateRegistry.createRegistry(1099); RMICounter mycount = new RMICounterImpl(); Naming.rebind("Counter", mycount); System.out.println("Server ready"); } catch(remoteexception x) { } catch(java.net.malformedurlexception x) { } } } 13

RMI ( Remote Method Invocation ) (6) 4. Client implementieren import java.rmi.*; import java.rmi.registry.*; import java.rmi.server.*; public class RMICounterClient { public static void main(string args[]) { try { RMICounter mycount = (RMICounter) Naming.lookup("rmi://" + args[0] + "/Counter"); mycount.reset(); mycount.increment(); System.out.println("Result = " + mycount.value()); } catch(notboundexception x) { } catch(java.net.malformedurlexception x) { } catch(remoteexception x) { } } } 14

RMI ( Remote Method Invocation ) (7) Mit rmic RMICounterImpl werden Hilfsklassen generiert RMICounterImpl_Skel.class RMICounterImpl_Stub.class Vorteile: Relativ einfach zu implementieren Natürliche Integration in Java RMISecurityManager Nachteile: Ist von der Programmiersprache Java abhängig Relativ langsam und Fehleranfällig (gilt aber für alle Verteilten Systeme) 15

OMG/CORBA (1) Ähnliches System wie RMI Interface wird mit IDL spezifiziert module CounterApp { interface Counter { void reset(); void increment(); long value(); }; }; IDL ist von der benutzten Programmiersprache unabhängig Parallel zu RMI werden Hilfsklassen erzeugt (IDL Compiler) 16

OMG/CORBA (2) Der Object Request Broker (ORB) beschreibt den Mechanismus, der das hardwareunabhängige, betriebssystemunabhängige und programmiersprachenunabhängige Aufrufen von Diensten ermöglicht. 17

OMG/CORBA (3) Vorteil gegenüber RMI: Abstrakte Definition eines ORBs und deren Kommunikation untereinander über IIOP -> Unabhängig von einer Programmiersprache, da es für fast jede einen passenden ORB gibt Corba bietet weitere Dienste für verteilte Anwendungen RMI Objekte können mit einen Java ORB über das IIOP freigegeben werden. 18

Was bieten RMI und Corba nicht? Kein allgemeines, offenes, freies und verbreitetes Protokoll (sondern Eigenentwicklungen wie IIOP) Sind weniger dafür ausgelegt fremde Objekte zu integrieren (in Normalfall kennen sich die Partner) Lassen sich nicht gut in das Internet integrieren Es gibt keine Suchmaschine für RMI / Corba Dienste 19

Webservices Def: Ein Dienst, der mit Hilfe von XML auf der Basis von Internet-Netzwerkprotokollen erbracht wird. Sie bilden die drei wichtigsten Teile der Zusammenarbeit ab: Zusammenfinden Binden Datenaustausch Def: Webservices sind Methoden, die über ein Netzwerk auf entfernten Rechnern zur Verfügung stehen. 20

Architektur Web Services im engeren technischen Sinn meint automatisierte Kommunikation zwischen Applikationen übers Internet. Es werden also nicht HTML-Seiten zu einem Webbrowser geschickt, die von einem Menschen betrachtet werden, sondern Programme tauschen Daten und starten auf entfernten Rechnern Funktionen Webserver Mietwaagen Webservice Subscriber Browser Webserver Fluglinie Webservice Subscriber Webservice Webservice Publisher (Broker) Webserver Hotel Webservice Subscriber 21

Webservices Schema Publish Service Provider Bind Services Broker Find Service Client 22

System Modell Webservices ermöglichen zu können bedient man sich Standards. Die weltgrößten Softwarehersteller (Microsoft, IBM, ) haben sich auf Prozeduren und Protokolle für Web Services geeinigt, nämlich: SOAP (Simple Object Access Protocol) WSDL (Web Services Description Language) UDDI (Universal Description, Discovery, and Integration) 23

XML (Extensible Markup Language) Datenaustausch: Wird mit Hilfe von SOAP und HTTP durchgeführt. Zusammenfinden: Ein Webservice kann man automatisch via UDDI Finden. UDDI selbst basiert auf SOAP über HTTP. Binden: Für das Binden von Webservices dominiert der WSDL Standard. Hier kann man alle wichtigen Informationen ablegen, die man benötigt als Nutzer und Anbieter. Es beschreibt den Webservice formal. Während bisher bei verteilten Systemen die elektronische Kommunikation über Rechnergrenzen hinweg meistens per CORBA, RMI oder DCOM erfolgte, nutzen Web Services einfaches XML, meistens über HTTP. 24

HTML contra XML...ist die Technologie für Web Applicationen und Services! Seit Anfang 1998 offizieller Standard des W3C. XML statt HTML <p> <b> Herr Arnold Braun</b> <br> Kaiserallee: 5<br> Karlsruhe, D-76133</p> Herr Arnold Braun Kaiserallee:5 Karlsruhe, D-76133 25

XML Das selbe Beispiel in XML: <address> <name> <title>herr</titel> <first-name>arnold</first-name> <last-name>braun </last-name> </name> <street> Kaiserallee: 5 </street> <city>karlsruhe </city> <state>d- </state> <zipcode>76133 </zipcode> </address> XML wurde entwickelt, um Daten zu beschreiben. (XSL, DTD) HTML dagegen wurde entwickelt, um Daten darzustellen. 26

Vor- und Nachteile Vorteil von XML: 1. liegt in der Fähigkeit zum Datenaustausch: Wichtig beim Business-to-Business, da verschiedene Firmen nicht mit gleichen Anwendungen arbeiten und so die gegenseitige Kommunikation erschweren. 2. Methodenaufrufe werden von verschiedene Applikationen (Anwendungen und Programme) über dasselbe Protokoll (HTTP) mit Hilfe von SOAP übertragen. Nachteil von XML 1. Es ist noch nicht problemlos von allen Browsern zu lesen. 27

HTTP (Hypertext Transfer Protocol) Internet hauptsächlich aus HTTP Verbindungen bestehend HTTP- Übertragungsprotokolle einfach aufgebaut. Einfache Struktur bzw. Aufbau: Es werden einfache Stringwerte übertragen. Die meisten HTTP-Port (Port 80 Standard Port) frei geschaltet. SOAP kann mit verschiedenen Transportprotokollen verwendet werden, meistens wird HTTP gewählt. Die Standard-Internetprotokolle erleichtern den Betrieb auch über Firewalls hinweg, was mit CORBA, RMI und DCOM schwieriger zu realisieren. Kommunikation mit Web Services erfolgt durch die Firewalls hindurch 28

SOAP (Simple Object Access Protocol) Schlankes auf XML basierendes Protokoll zum Informationsaustausch in einer dezentralen Umgebung. Es ist ein plattformunabhängiges Protokoll, welches dazu dient, Anwendungen über das Web oder Hypertext Transfer Protocol (HTTP) kommunizieren zu lassen. SOAP dient also zum Austausch von komplexen Datenobjekten zwischen verschiedenen Programmen. SOAP Nachrichten werden durch Standards codiert und gesendet. Das Besondere an SOAP Web Services ist die allgemeine Akzeptanz, Kommunikation ist sogar zwischen den beiden konträren Plattformen Sun / Java und Microsoft /.NET möglich. 29

Nachrichten über SOAP Die wichtigsten Vorteile von SOAP sind: allgemein akzeptierte Standardisierung, Plattformunabhängigkeit, Offenheit, Robustheit und Skalierbarkeit. Der gravierendste Nachteil ist: mehr Overhead und dadurch etwas geringere Performance wegen des verwendeten Datendarstellungsprotokolls XML. Anwendung XML Anwendung Einheitliche Schnittstelle über SOAP 30

Problem der Darstellung(1) Beispiel: Viele Darstellungen einer Telefonnummer <phonennumber>(123) 456-7890 </phonennumber> <phonennumber> <areacode>123</areacode> <exchange>456</exchange> <number>7890 </number> </phonennumber> <phonennumber area = 123 exchange= 456 number= 7890 /> 31

Problem der Darstellung(2) Folgerung: Es reicht nicht zu sagen, dass Server und Client XML für den Nachrichtenaustausch verwenden. Folgendes muss definiert sein: SOAP stellt diese Konventionen zur Verfügung!!! 32

Bestandteile von SOAP Bestandteile: Envelope- umschließt Header und Body Header- enthält zusätzliche Informationen (optional) Body-Prozeduraufrufe und deren Rückgaben SOAP dient zur Basiskommunikation mit Web Services kann aber keine Informationen bzgl. Der Nachrichten geben. 33

Beispiel: SOAP Nachrichtenaustausch Beispiel Onlineshop: Ein Kunde möchte in einem Onlineshop Artikel bestellen. Der Onlineshop ist in einen Applikationsserver realisiert. Dieser Applikationsserver: Funktionsparameter werden codiert und an Webservice geschickt! (1) überprüft über den SOAP Web Service des Servers A, ob die angegebene Adresse gültig ist, (4)erfragt beim SOAP-Dienst D tagesaktuelle Währungsumrechnungskurse, um den Endpreis korrekt berechnen zu können und (2)ermittelt über den SOAP-Dienst C die für das jeweilige Land zu berechnenden Steuern (Umsatzsteuer, Luxussteuer,...), (5)zeigt dem Benutzer alle Ergebnisse gesammelt im Webbrowser an. (3)verifiziert über den SOAP-Dienst die Kreditkartennummer, 34

WSDL (Web Services Description Language) für eine erfolgreiche Interaktion mit Web Services WSDL (Web Services Description Language, http://www.w3.org/tr/wsdl) ist ein XML-Derivat zur Beschreibung der Schnittstellen von Web Services. Nachrichtenstrom-Formate und Funktionsaufrufe werden definiert. Programmiersprachen-unabhängige XML- Version. Nimmt Befehle in Form von Funktionsparametern als SOAP- Dateien entgegen und kann diese weiterleiten oder eine entsprechende Antwort zurücksenden. Beschreibt die Operationen, welche Webservices ausführen WSDL erlaubt: Programmiersprachen-spezifischen Code zu erzeugen, der die Funktionen, welche eine WSDL- Datei beschreibt, in SOAP- basierte Aufrufe übersetzt. 35

WSDL- Dokumentenstruktur Ein Dokument besteht aus mehreren Definitionen Definition können unterteilt werden in: Abstrakte Definitionen Konkrete Definitionen types binding messages porttype services Gibt bekannt, wie eine Interaktion über ein spezifisches Protokoll mit SOAP durchgeführt werden soll. 36

UDDI (Universal Description, Discovery, and Integration) UDDI ist ein webbasiertes Informationssystem für Web Services. Es bietet ein Verzeichnis von Adress- und Produktdaten sowie von Anwendungsprogrammierschnittstellen (WSDL- Dateien). Entwickelung u.a. von Ariba, IBM und Microsoft. Zu finden unter http://www.uddi.org. Ist selbst ein Web Service, der als Verzeichnis zum Veröffentlichen und Auffinden anderer Web Services fungiert. Datenbank auf XML basierend. 37

UDDI bei IBM Stark vereinfacht!!! Add a new Business Add a new Service Name Service for? Adresse (Description) Description Add a new technical Model URL der WSDL- Datei eintragen 38

Gliederung bei UDDI Datenbank wurde eingeteilt in: Business: Wenn man nach Firmennamen sucht Services: Wenn man nach dem Namen eines Dienstes sucht. Technical Model: technische Beschreibung des Webservice (speziell wenn ein Webservice über eine WSDL Datei definiert ist.) SUCHEN??? 39

Beispiel Beispiel für die Suche eines Webservices per UDDI, die Untersuchung der Schnittstelle per WSDL und die Benutzung per SOAP. 40

Webservice Beispiel: Aufbau Webservice Client Anwendung TCPMonitor (127.0.0.1:80) Netzwerk Webservice Server Anwendung (192.168.XX.XX:80) Rechner 1 Rechner 2 gesamte Kommunikation wird als Text übertragen. TCPMonitor wird dazwischen geschalten und loggt die Übertragung (ist Teil des Axis Projekts) 41

Webservice Beispiel: TCPMonitor 42

Webservice Beispiel: Server (1) using System;... namespace Praktikum { [WebService(Namespace="http://Seminar_SS04/",Description="Webservice für Präsentationszwecke im Seminar Webservices SS04")] public class SeminarService : System.Web.Services.WebService { private int count = 0;... [WebMethod] public void increment() { count++; } } } [WebMethod] public int countvalue() { return count; } 43

Webservice Beispiel: Server (2) Webpage Von Visual Studio.NET erstellte Webpage Bietet eine Beschreibung des Webservices und seiner Funktionen 44

Webservice Beispiel: Server (3) Webpage Von Visual Studio.NET erstellte Webpage für eine Methode mit Testfunktion (per HTTP Post) 45

Webservice Beispiel: Client (1) using System;... namespace PraktikumWinApp { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button button1; private WebReferenceNeu.SeminarService swebs = new WebReferenceNeu.SeminarService();... } } private void button1_click(object sender, System.EventArgs e) { swebs.increment(); MessageBox.Show("count=" + swebs.countvalue().tostring(),"info"); swebs.increment(); MessageBox.Show("count=" + swebs.countvalue().tostring(),"info"); } 46

Webservice Beispiel: Client (2) Nach 1 x swebs.increment(); Nach 2 x swebs.increment(); Webservice Funktionen werden oft als Klassen in die Programmiersprache eingebunden, stellen aber kein eigentliches Objekt dar (kein Zustand, ohne spezielle Implementierungen) 47

Webservice Beispiel: Kommunikation SOAP Anfrage (1) POST /Praktikum/PraktikumService.asmx HTTP/1.1 VsDebuggerCausalityData: AwAAAMaH7L4RZ0FLgZQo1hqStKAAAAAAAAAA User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;...) Content-Type: text/xml; charset=utf-8 SOAPAction: "http://seminar_ss04/getkundennr" Content-Length: 334 Expect: 100-continue Host: 192.168.73.128 <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <soap:body> <getkundennr xmlns="http://seminar_ss04/"> <kundenname>mã¼ller</kundenname> </getkundennr> </soap:body> </soap:envelope HTTP SOAP 48

Webservice Beispiel: Kommunikation SOAP Antwort (2) HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Wed, 12 May 2004 16:45:13 GMT HTTP/1.1 200 OK / Server: Microsoft-IIS/5.0 /Date: Wed, 12 May... X-AspNet-Version: 1.1.4322 / VsDebuggerCausalityData:... Cache-Control: private, max-age=0 Content-Type: text/xml; charset=utf-8 Content-Length: 370 <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <soap:body> <getkundennrresponse xmlns="http://seminar_ss04/"> <getkundennrresult>mã¼llerk50001</getkundennrresult> </getkundennrresponse> </soap:body> </soap:envelope 49

Webservice Beispiel: Kommunikation HTTP Post Anfrage: POST /Praktikum/PraktikumService.asmx/getKundenNr HTTP/1.1 Host: 127.0.0.1 Content-Type: application/x-www-form-urlencoded Content-Length: length kundenname=string Antwort: HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <string xmlns="http://seminar_ss04/">string</string> 50

Webservice Beispiel: WSDL (1) Namespace <?xml version="1.0" encoding="utf-8"?> <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/xmlschema" xmlns:s0="http://seminar_ss04/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textmatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetnamespace="http://seminar_ss04/ xmlns="http://schemas.xmlsoap.org/wsdl/"> 51

Webservice Beispiel: WSDL (2) Types (XML Schema) <types> <s:schema elementformdefault="qualified" targetnamespace="http://seminar_ss04/"> <s:element name="getkundennr"> <s:complextype> <s:sequence> <s:element minoccurs="0" maxoccurs="1" name="kundenname" type="s:string" /> </s:sequence> </s:complextype> </s:element> <s:element name="getkundennrresponse"> <s:complextype> <s:sequence> <s:element minoccurs="0" maxoccurs="1" </s:sequence> </s:complextype> </s:element> </s:schema> </types> Parameter Rückgabewert name="getkundennrresult" type="s:string" /> xmlns:s="http://www.w3.org/2001/xmlschema" 52

Webservice Beispiel: WSDL (3) Message + PortType Messages: Nachrichteninhalt <message name="getkundennrsoapin"> <part name="parameters" element="s0:getkundennr" /> </message> <message name="getkundennrsoapout"> <part name="parameters" element="s0:getkundennrresponse" /> </message> Vorgänge (hier Request Response) : <porttype name="seminarservicesoap"> Vorgangsinhalt <operation name="getkundennr"> <input message="s0:getkundennrsoapin" /> <output message="s0:getkundennrsoapout" /> </operation> </porttype> xmlns:s0="http://seminar_ss04/" 53

Webservice Beispiel: WSDL (4) binding (SOAP binding) Transportart PortType <binding name="seminarservicesoap" type="s0:seminarservicesoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> <operation name="getkundennr"> <soap:operation soapaction="http://seminar_ss04/getkundennr" style="document /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding> Methode Vorgaben für die SOAP Nachrichten xmlns:s0="http://seminar_ss04/" 54

Webservice Beispiel: WSDL (5) service <service name="seminarservice"> <documentation>seminar Webservices SS04</documentation> Binding zugewiesen <port name="seminarservicesoap" binding="s0:seminarservicesoap"> <soap:address location="http://127.0.0.1/...service.asmx" /> </port> </service> </definitions> Webservice wird das 55

Schlussbetrachtung Vorteile: Flexibel Automatisierbar (WSDL, UDDI ) Benutzte Standards haben sich bewährt (z.b. HTTP) werden kontinuierlich weiterentwickelt (bei XML: XPath, XQuery, XLink) bieten viele Features (Typensystem von XML Schema, HTTPS ) sind verbreitet und schon implementiert (XML Parser) Kann eine Brücke zwischen.net und Java sein Firewall freundlich Nachteile: Parsen von XML Dokumenten ist relativ langsam Viel Overhead Firewall freundlich Verbreitung öffentlicher und kostenloser Webservices 56