1 Softwareentwicklung mit.NET Teil 5 ASP.NET Web Services Dr. Ralph Zeller.

Post on 05-Apr-2015

103 views 0 download

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