290 likes | 405 Views
Softwareentwicklung mit .NET Teil 5 ASP.NET Web Services Dr. Ralph Zeller. Was ist ein Web Service? . Ein Web Service ist eine Komponente, die ihre Methoden über Standard Web Protokolle wie SOAP zur Verfügung stellt. Web Services Beispiele. Günstigster Online Buchhändler
E N D
Softwareentwicklung mit .NET Teil 5 ASP.NET Web Services Dr. Ralph Zeller
Was ist ein Web Service? • Ein Web Service ist eine Komponente, die ihre Methoden über Standard Web Protokolle wie SOAP zur Verfügung stellt
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
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)
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"? encoding="utf-8"?> <soap:Envelope xmlns: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>
Web Client ASP.NET Applikationen IIS .NETFramework Betriebssystem WS Ausführungsmodell • Web Services basieren auf ASP.NET
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 alsWSDL-Datei (Web Service Description Language) • Compile on demand
Code & Syntax • WebService Direktive • Einstellungen für den ASP.NET Compiler • WebMethod Attribut • Code Deklaration Syntax • Outline • Inline (in C#) <%@ WebService Language=value Class=value %> <%@ WebService Class="MyClass.MyWebService" %> <%@ WebService Language="C#" Class="MathService" %>using System.Web.Services;public class MathService : WebService { [ WebMethod ]...
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; }}
Testen des Web Services • Aufruf über URL • http://localhost/Fservice.asmx • Rückgabe ist eine Testseite für Web Service
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
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
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
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
WSDL • Abstrakte Darstellung der WSDL Elemente service_1 port_C port_B service_2 message port_D port_A porttype message
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>
Web Service ClientsApplikationsmodell Web ServiceEntwickler Web ApplikationEntwickler Web Server 1 Service App .asmx .aspx Web Server 2 Service App Proxy Web Form
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
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>
UDDIUniversal Discovery, Description and Integration • Globale Datenbank über Unternehmungen • Wer bietet was an? • Von 30+ Unternehmen getragen • IBM, Ariba, Microsoftbetreiben EINE verteilte Datenbank • SAP, Oracle, Sun, etc. • http://www.uddi.org
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)
UDDI Beispiel • DoAll hat Web-Shop + Web Services (Produktkatalog) • DoAll ist in UDDI Registry eingetragen • Marketplace + Search Engines kontaktieren UDDI • 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
Uff... Fragen?