ASP.NET Web Services
Download
Report
Transcript ASP.NET Web Services
Softwareentwicklung mit .NET
Teil 4
ASP.NET
Web Services
Dr. Ralph Zeller
1
Was ist ein Web Service?
Ein Web Service ist eine Komponente, die
ihre Methoden über Standard Web
Protokolle wie SOAP zur Verfügung stellt
2
Web Services Beispiele
Günstigster Online Buchhändler
•
•
Input ist ISBN Nummer
Web Service durchsucht Web Seiten und gibt
Link auf günstigsten Händler zurück
Lieferverfolgung bei Buchbestellung
•
•
•
Buchhändler liefert über
Paketservice aus
Status wird über die Seite
des Buchhändlers abgefragt
Web Service holt Statusinformationen des Paketservices
3
SOAP
Simple Object Access Protocol
Mechanismus zum Austausch von
strukturierter und typisierter Information
zwischen Kommunikationsendpunkten im
Internet auf Basis von XML
HTTP, SMTP, ... als Transportprotokoll
XML zur Datenkapselung
Spezifikation enthält
•
•
SOAP Envelope (für Framework)
SOAP Encoding (optional, für plattformübergreifendes Marshaling von Daten/Objekten)
4
SOAP Beispiel
POST /FService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Rueckzahlungsrate"
<?xml version="1.0"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">
<soap:Body>
<Rueckzahlungsrate xmlns="http://tempuri.org/">
<strKapital>string</strKapital>
<strZinssatz>string</strZinssatz>
<strMonate>string</strMonate>
</Rueckzahlungsrate>
</soap:Body>
</soap:Envelope>
5
WS Ausführungsmodell
Web Services basieren auf ASP.NET
Web Client
IIS
ASP.NET
Applikationen
.NET
Framework
Betriebssystem
6
Web Service Prog.modell
Erstellen Sie eine .asmx Datei, die eine Klasse
mit den Methoden enthält, die Sie zur
Verfügung stellen möchten
Das Hinzufügen des Attributs WebMethod zu
einer Public-Methode macht sie automatisch
zu einem Web Service
ASP.NET macht den "Rest"
•
•
Erzeugen der Service-Beschreibung als
WSDL-Datei (Web Service Description Language)
Compile on demand
7
Code & Syntax
WebService Direktive
•
Einstellungen für den ASP.NET Compiler
<%@ WebService Language=value Class=value %>
WebMethod Attribut
Code Deklaration Syntax
•
•
Outline
<%@ WebService Class="MyClass.MyWebService" %>
Inline (in C#)
<%@ WebService Language="C#" Class="MathService" %>
using System.Web.Services;
public class MathService : WebService {
[ WebMethod ]
...
8
Beispiel .asmx Datei
<%@ WebService Language="C#" Class="MathService" %>
using System;
using System.Web.Services;
public class MathService : WebService
{
[WebMethod]
public int Subtract(int a, int b)
{
return a - b;
}
public int Subtract_vs(int a, int b)
{
return b - a;
}
}
9
Web Service
Beispiel 1: FinanzServices
10
Testen des Web Services
Aufruf über URL
•
http://localhost/Fservice.asmx
Rückgabe ist eine Testseite für Web Service
11
Web Service aufrufen
Aufruf über URL
•
HTTP Request
Protokolle
•
•
•
HTTP-GET
• Methodenname und Parameter in der URL
HTTP-POST
• Methodenname und Parameter im HTTP Header
HTTP-SOAP
• Adresse und Parameter in XML Format
12
Aufruf über GET & POST
http://server/appl/service.asmx/method?param=value
Standard HTTP-GET
•
•
•
Methodenname = steht im Pfad
Argumente = URL query string
• Mehrere Parameter möglich
• Nur primitive .NET Datentypen möglich
Rückgabe ist ein XML Dokument
• alle .NET Datentypen möglich
HTTP-POST
•
•
Ähnlich GET
Argumente stehen im HTTP Header
13
Aufruf über SOAP
XML Grammatik für
•
Unterstützt alle Standard .NET Datentypen
und Klassen als value
•
Methodenname, Parameter und Rückgabewerte
Zusätzlich: Klassen, Structs, Datasets
Marshalling von Klassen und Structs
•
Serialisierung in XML Format
14
WS Aufrufoptionen
Beispiel 2: FService.asmx testen
15
Web Service erforschen
Aufruf ohne Methodennamen und
Parameter
•
HTML Beschreibung des Web Service,
Methoden, Parameter und Protokolle
Aufruf mit Parameter “?WSDL”
•
•
•
Formale Beschreibung des Web Service als
WSDL Datei
Format ist XML
Input für WebServiceUtil.exe (Beta1) bzw.
WSDL.exe (Beta2)
16
WSDL
Web Services Description Language
Öffentliche Beschreibung eines Web
Services in XML
•
WSDL Vertrag
Grundelemente von WSDL
•
•
•
•
•
Services, die mehrere Ports beinhalten
Über Ports werden Messages geschickt
Jeder Port enthält Adress- und Bindinginfos
Binding spezifiziert das Datenformat und
Protokolldetails
PortTypes definiert die Befehle, die über einen
Port geschickt werden können
17
WSDL
Abstrakte Darstellung der WSDL Elemente
service_1
port_C
port_B
service_2
message
port_D
port_A
message
port
type
18
Beispiel WSDL Datei
<definitions name="serviceName">
<import namespace="http://namespacePath"
location="http://path/fileName.wsdl">
<portType name="portNameType">
<operation name="opName">
<input message="msgNameInput" />
<output message="msgNameOutput" />
</operation>
</portType>
<binding name="bindingName">
<soap:operation soapAction="http://..." />
</binding>
<service name="serviceName">
<port name="portName" binding="bindingName">
<soap:address location="http://..." />
</port>
</service>
</definitions>
19
Web Service Clients
Applikationsmodell
Web Service
Entwickler
Web Applikation
Entwickler
Web Server 1
.asmx
Service App
.aspx
Web Server 2
Proxy
Web Form
Service App
20
WS Clients entwickeln
Proxy Klasse generieren
•
•
WebServiceUtil.exe in Beta1
WSDL.exe in Beta2
Input
•
•
•
WSDL Datei
Sprache (C#, VB, JScript)
Protokoll (GET, POST, SOAP)
Output
•
Source Datei mit Proxy Klasse und Code für
Aufruf und Marshalling
21
Web Forms Client
Beispiel 3: Hypothekar Rechner
22
Win Forms Client
Beispiel 4: Hypothekar Rechner
23
WS veröffentlichen
.disco File
•
•
•
Wird durch GET Parameter ?disco generiert
http://localhost/Fservice.asmx?disco
enthält Link auf SDL File eines Web Services
XML Format
<?xml version="1.0"?>
<discovery xmlns="http://schemas.xmlsoap.org/disco/">
<contractRef ref="http://localhost/FService.asmx?sdl"
docRef="http://localhost/FService.asmx"
xmlns="http://schemas.xmlsoap.org/disco/scl/"/>
</discovery>
UDDI
•
Globales Verzeichnis für Web Services
24
UDDI
Universal Discovery, Description and
Integration
Globale Datenbank über Unternehmungen
Wer bietet was an?
Von 30+ Unternehmen getragen
•
•
IBM, Ariba, Microsoft
betreiben EINE verteilte Datenbank
SAP, Oracle, Sun, etc.
http://www.uddi.org
25
UDDI Benutzung
Daten in XML beschrieben
•
•
•
White pages (Name, Kontakt)
Yellow pages (Welche Branche)
Green pages (Binding Information – Wie kann
Kunde Unternehmen integrieren?
URL, Telefon, Web Services etc.)
Zugriff auf Registry via Web / SOAP
Ermöglicht strukturierte Suche und Integration!
•
•
•
Menschen können suchen
Software kann suchen
Dynamische Integration (von z.B.: Web Services)
26
UDDI Beispiel
1.
DoAll hat Web-Shop + Web Services (Produktkatalog)
2.
DoAll ist in UDDI Registry eingetragen
3.
Marketplace + Search Engines kontaktieren UDDI
4.
Konsument besucht Marketplace
•
•
•
Sucht nach Produkten (z.B.: Sägeblatt von DoAll)
Marketplace versteht Web Service von DoAll
Produktkatalog wird von Marketplace dynamisch dargestellt
Dynamische Integration verschiedener Systeme
http://www.doall.com, http://www.bcentral.com
27
Fragen?
Uff...
28