Post on 05-Apr-2015
transcript
1
Softwareentwicklung mit .NETTeil 5
ASP.NETWeb Services
Dr. Ralph Zeller
2
Was ist ein Web Service? Ein Web Service ist eine Komponente, die
ihre Methoden über Standard Web Protokolle wie SOAP zur Verfügung stellt
3
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 überPaketservice aus
• Status wird über die Seite des Buchhändlers abgefragt
• Web Service holt Status-informationen des Paket-services
4
SOAPSimple Object Access Protocol
Mechanismus zum Austausch von strukturierter und typisierter Information zwischen Kommunikationsendpunkten im Internet auf Basis von XML
HTTP als Transportprotokoll
XML zur Datenkapselung
Spezifikation enthält• SOAP Envelope (für Framework)
• SOAP Encoding (optional, für plattform-übergreifendes Marshaling von Daten/Objekten)
5
SOAP BeispielPOST /FService.asmx HTTP/1.1Host: localhostContent-Type: text/xml; charset=utf-8Content-Length: lengthSOAPAction: "http://tempuri.org/Rueckzahlungsrate"
<?xml version="1.0"? encoding="utf-8"?><soap:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/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>
POST /FService.asmx HTTP/1.1Host: localhostContent-Type: text/xml; charset=utf-8Content-Length: lengthSOAPAction: "http://tempuri.org/Rueckzahlungsrate"
<?xml version="1.0"? encoding="utf-8"?><soap:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/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>
6
WS Ausführungsmodell
Web Client
Betriebssystem
ASP.NETApplikationen
IIS
.NETFramework
Web Services basieren auf ASP.NET
7
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
8
Code & Syntax
<%@ WebService Language="C#" Class="MathService" %>using System.Web.Services;public class MathService : WebService { [ WebMethod ]...
<%@ WebService Language="C#" Class="MathService" %>using System.Web.Services;public class MathService : WebService { [ WebMethod ]...
WebService Direktive
• Einstellungen für den ASP.NET Compiler
WebMethod Attribut
Code Deklaration Syntax
• Outline
• Inline (in C#)
<%@ WebService Language=value Class=value %><%@ WebService Language=value Class=value %>
<%@ WebService Class="MyClass.MyWebService" %><%@ WebService Class="MyClass.MyWebService" %>
9
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; }}
<%@ 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; }}
10
Web ServiceBeispiel 1: FinanzServices Inline
11
Web ServiceBeispiel 2: FinanzServices Outline
12
Testen des Web Services Aufruf über URL
• http://localhost/Fservice.asmx
Rückgabe ist eine Testseite für Web Service
13
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
14
Aufruf über GET & POSThttp://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
15
Aufruf über SOAP
XML Grammatik für
• Methodenname, Parameter und Rückgabewerte
Unterstützt alle Standard .NET Datentypen und Klassen als value
• Zusätzlich: Klassen, Structs, Datasets
Marshalling von Klassen und Structs
• Serialisierung in XML Format
16
WS beschreibenBeispiel 3: FService.wsdl
17
WSDLWeb Services Description Language
Öffentliche Beschreibung eines Web Services in XML• .wsdl File mit disco.exe oder
http://localhost/Fservice.asmx?wsdl generieren
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
18
WSDL
service_2
service_1
message
port_Aport_D
porttype
port_Cport_B
message
Abstrakte Darstellung der WSDL Elemente
19
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>
<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>
20
Web ServiceEntwickler
Web ApplikationEntwickler
Web Server 1
Service App.asmx .aspx
Web Server 2
Service App
Proxy Web Form
Web Service ClientsApplikationsmodell
21
WS Clients entwickeln
Proxy Klasse generieren
• WSDL.exe
Input
• WSDL Datei oder Link auf Web Service
• Sprache (C#, VB, JScript)
• Protokoll (GET, POST, SOAP)
Output
• Source Datei mit Proxy Klasse und Code für Aufruf und Marshalling
22
Web Forms Client Beispiel 4: Darlehensrechner
23
Win Forms Client Beispiel 5: Darlehensrechner
24
WS veröffentlichen .disco File
• Wird mit disco.exe oder
http://localhost/Fservice.asmx?disco generiert
• enthält Link auf WSDL File eines Web Services
• XML Format
UDDI
• Globales Verzeichnis für Web Services
<?xml version="1.0"? encoding="utf-8"?><discovery xmlns="http://schemas.xmlsoap.org/disco/"> <contractRef ref="http://localhost/FService.asmx?wsdl" docRef="http://localhost/FService.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/"/></discovery>
<?xml version="1.0"? encoding="utf-8"?><discovery xmlns="http://schemas.xmlsoap.org/disco/"> <contractRef ref="http://localhost/FService.asmx?wsdl" docRef="http://localhost/FService.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/"/></discovery>
25
UDDIUniversal 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
26
UDDI Benutzung Daten in XML beschrieben
• White pages (Name, Kontakt)
• Yellow pages (Welche Branche)
• Green pages (Binding Information – Wie kannKunde 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)
27
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
28
Fragen?
Uff...