Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Web Services in der Praxis mit Visual Studio.NET Christian Weyer Freiberuflicher Berater & Entwickler.

Ähnliche Präsentationen


Präsentation zum Thema: "Web Services in der Praxis mit Visual Studio.NET Christian Weyer Freiberuflicher Berater & Entwickler."—  Präsentation transkript:

1 Web Services in der Praxis mit Visual Studio.NET Christian Weyer Freiberuflicher Berater & Entwickler

2 Agenda XML Web Services im Überblick Architektur von ASP.NET XML Web Services mit ASP.NET Client-Anwendungen für XML Web Services Einfachheit & Mächtigkeit von ASP.NET in punkto XML Web Services Wo gibts weitere Infos?

3 Voraussetzungen Kenntnis von XML und grundlegende.NET- Kenntnisse Interesse und Lust, sich auf die neue Welt der XML Web Services einzulassen …

4 Demos Quer über diesen TechTalk-Vortrag verstreut Sie werden alle wichtigen Techniken und Vorgehensweise zu sehen bekommen

5 Web Services Stack Allgegenwärtige Kommunikation Internet Universelles Datenformat XML Dienstinteraktion SOAP Formale Dienstbeschreibung WSDL Veröffentlichen, Finden, Benutzen UDDI

6 Web Services Roadmap SOAP HTTP/SMTPXMLTCP/IP Directory Inspection Description Web Services-Module Inter Application-Protokolle Referral Routing Security License EventingTransactions Reliable Messaging Internet

7 IIS Web Forms Web Services Common Language Runtime ASP.NET in der Übersicht app.aspx … … app.asmx class X { [WebMethod] public int method1() { … } } HTTP SOAP

8 ASP.NET-Architektur Unmanaged Code Managed Code...Request Handler HTTP Module ASP.NET Runtime IIS HTTP Request

9 ASP.NET-Laufzeitumgebung inetinfo.exe (IIS) aspnet_isapi.dll (ASP.NET ISAPI Extension) aspnet_wp.exe (ASP.NET Worker Prozess) HTTP Named Pipe HTTP Runtime

10 HTTP Pipeline HTTP Pipeline-Prozessmodell Details von aspnet_wp.exe Worker Prozess komplett konfigurierbar aspnet_isapi.dll verarbeitet Konfiguration aus der globalen Datei machine.config Jeder einzelne Worker Prozess bedient standardmäßig unendlich viele Anfragen ASP.NET Web Services sind HTTP Handler System.Web.Services.Protocols. WebServiceHandlerFactory

11 ASP.NET-Architektur Alle Web-Anwendungen laufen in einem aspnet_wp.exe Prozess IsolationLevel bei Installation festgelegt auf Low Isolation der Web-Anwendungen erfolgt über Application Domains separater virtueller Speicher pro Application separates Debugging pro Application ASPNET als Standardbenutzer zur Ausführung von aspnet_wp.exe Stark eingeschränkte Berechtigungen

12 Dynamische Kompilierung aspnet_wp.exe wird verwendet, um Code für Web-Anwendungen und Web Services auszuführen Versucht, Assemblies für Web-Anwendung und Web Service zu laden Erzeugt über CodeDOM-Klassen, die sich von Page (Web Forms) oder WebService ableiten Bei Änderungen in Source Code-Dateien werden über Reflection.Emit automatisch neue Assemblies erzeugt

13 ASP.NET Architektur ASP.NET Compiler Reflection Web Service Assembly ASP.NET Runtime Assembly für Datei existiert? Assembly existiert, gleicher Zeitstempel Nein – kompilieren Ja – ausführen class WS : WebService {... }

14 ASP.NET Deployment ASP.NET-Anwendungen sind grundsätzlich voneinander isoliert Verschiedene Anwendungen können parallel mit verschiedenen Versionen einer Komponente arbeiten Installation einer ASP.NET-Anwendung durch Erstellen eines Verzeichnisses mit anschließendem Filecopy (XCOPY Deployment) Keine Registry-Änderungen (REGSVR32) Keine Änderungen in der IIS Metabase Kein Neustart des Web Servers Uninstall Verzeichnis löschen

15 ASP.NET und.NET Remoting Zwei Möglichkeiten in.NET, XML Web Services zu erzeugen ASP.NET.NET Remoting Remoting bietet automatisierte Möglichkeit, nicht-XML Web Services zu erzeugen ASP.NET Web Services für lose gekoppelte Systeme.NET Remoting stellt eine verteilte Identität zur Verfügung Leicht erweiter- und konfigurierbar

16 XML Web Services XML Web Services werden mit ASP.NET zum Kinderspiel Keine Kenntnis über die Standards notwendig Verführt zur Spielerei -> Web Services nicht für alles geeignet Mapping von Web Services auf Dateiendung.asmx Machine.config IIS Mapping Implementierung inline oder als Code-behind- Klasse Festlegung über Direktive

17 Web Services-Attribute _ Public Class SimpleCalc _ Public Function Add(ByVal a As Long, _ ByVal b As Long) As Long Return a + b End Function End Class

18 XML Web Services Attribut muss sich auf eine Klasse beziehen Namespace System.Web.Services Diese Klasse kann von Klasse WebService abgeleitet sein Direkter Zugriff auf HttpContext Eigenschaften Description und Namespace werden in WSDL und auch im Client Proxy verwendet Description: Informale Beschreibung des Web Services Namespace: XML Namespace, in dem die Typen/Schemas des Web Services definiert sind

19 XML Web Services Attribut muss sich auf eine öffentliche Methode einer Klasse beziehen Namespace System.Web.Services Methode kann standardmäßig über SOAP, HTTP GET und HTTP POST aufgerufen werden Konfigurierbar in web.config

20 Inline vs. Code behind Inline: using System.Web.Services; public class MyMath { [WebMethod] public int Add(int num1, int num2) { return num1+num2; } Code-behind:

21 Web Services testen ASP.NET besitzt eine eingebaute Test- und Dokumentationsseite für XML Web Services Kann konfiguriert werden Mit HTTP GET-Bindung verbunden Hier werden keine SOAP-Pakete verschickt Reines HTTP GET Erweiterungsmechansimen von ASP.NET Web Services sind so nicht testbar

22 Nutzung von Web Services ASP.NET Web Forms ASP.NET Mobile Web Forms.NET Konsolenanwendung.NET Windows Forms HTTP GET und POST Client-Anwendungen IE Web Services Behavior Klassisches Win32 PocketPC-Anwendung Java-Anwendung UNIX/Linux-Skript...

23 ASP.NET Web Service-Clients Proxy-basiertes Entwurfsmuster Client-Anwendung spricht mit lokalem Objekt Proxy-Objekt übernimmt die eigentliche Kommunikation Klassenimplementierung basiert auf WSDL des Web Services Dynamische Proxys nur mit Zusatzaufwand möglich Webverweis hinzufügen in Visual Studio.NET wsdl.exe Kommandozeilenanwendung Synchroner Aufruf Asynchroner Aufruf BeginMethodenName und EndMethodenName Aufruf von BeginXXX mit Callback oder WaitHandle EndXXX zur Freigabe der Verbindung

24 Web Services debuggen Interaktives Debuggen Breakpoints setzen PDB-Datei erstellen lassen An den richtigen Prozess hängen Web Services instrumentieren Debug-Klasse Trace-Klasse Event Log Performance Counters

25 25 Web Services debuggen ASPNET hat keine Berechtigungen, um in das Event Log zu schreiben \\HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\Eventlog\Application\Re strictGuestAccess auf 0 setzen und rebooten ASPNET hat keine Berechtigungen, um Event Sources zu erstellen ASPNET-Benutzer muss Lese/Schreiberechte auf \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\ Services\Eventlog und alle Unterschlüssel haben

26 Serialisierung Die Umwandlung von XML/SOAP- Datenpaketen in native.NET-Typen und wieder zurück geschieht über den Prozess der Serialisierung/Deserialisierung In ASP.NET XML Web Services kümmert sich die Klasse XmlSerializer um diese Aufgaben Im Gegensatz zu.NET Remoting-basierten Web Services Relativ gut konfigurierbar, hat aber einige Schwächen, die man schnell abschaffen sollte

27 System.Xml.Serialization XmlSerializer ist kein Serialisierer / Deserialisierer im eigentlichen Sinne Mehr ein Reflektor Bietet keine Type Fidelity Tatsächlich ist Type Infidelity das Ziel Bildet XML-Daten auf Typinstanzen ab Bildet Typinstanzen auf XML-Daten ab Erlaubt die Abbildung zwischen.NET- und nicht-.NET- Anwendungen (De-)Serialisiert nur öffentliche Felder Zirkuläre Referenzen können Endlosschleifen bewirken Objektgraph muß Blätter besitzen, die nicht auf andere Objekte verweisen Unterstützt ausschließlich XML als Format Wird vornehmlich für Interoperabilität verwendet Einsatz in ASP.NET XML Web Services

28 using System; using System.IO; using System.XML.Serialization; public class MyType { public Int32 x, y, sum; } void SomeMethod(Object rootObject) { FileStream fs = new FileMode.Create); // Create an XML serializer for the root type XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyType)); // Serialize the object graph to the stream xmlSerializer.Serialize(fs, rootObject); fs.Close(); // Force a flush of the data } Serialisierung mit XmlSerializer

29 using System; using System.IO; using System.XML.Serialization; public class MyType { public Int32 x, y, sum; } MyType SomeMethod() { FileStream fs = new FileMode.Open); XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyType)); // Deserialize the object graph from the stream MyType rootObject = (MyType) xmlSerializer.Deserialize(fs); fs.Close(); // Close the file return(rootObject); // Return the object } Deserialisierung mit XmlSerializer

30 Datentypen

31 Marshaling & Encoding Serialisierung geschieht mit Hilfe von System.Web.XmlSerialization Marshaling durch XmlSerializer Instanzen von XmlSerializer werden an CLR-Typen gebunden Eingeschränkte Unterstützung für komplexe CLR Typen XSD-basiertes Modell Eigenes Marshaling durch Überschreiben von IXmlSerializable

32 XML-Format Beeinflussung des XML-Formats/ Marshalings XmlElement | SoapElement XmlAttribute | SoapAttribute XmlArray | SoapArray XmlRoot Unterschiedliche XML-Formate in Web Services HTTP-GET und HTTP-POST SOAP WSDL-Beschreibung Zwei (bzw. drei) Ausprägungen von SOAP Document standardmäßig, konfigurierbar RPC konfigurierbar

33 SOAP-Format beeinflussen AttributAusprägung Use Betrifft SoapDocument Method DocumentLiteral/ Encoding Methode SoapDocument Service DocumentLiteral/ Encoded Alle Methoden SoapRpcMethod RPCEncodedMethode SoapRpcService RPCEncodedAlle Methoden

34 Konfiguration ASP.NET Web Services sind über Einstellungen in der machine.config oder einer anwendungsspezifischen web.config konfigurierbar Festlegung der unterstützen Protokolle HttpGet, HttpPost, Soap, Documentation Angabe der Test- und Dokumentationsseite Konfiguration der Sicherheitseinstellungen über web.config

35 Zustand und Caching Zustand Web Services sind von Natur aus zustandslos Session-Objekt in ASP.NET ermöglicht das Halten von Daten zwischen mehreren Aufrufen Auch Application-Objekt verfügbar [WebMethod(EnableSession=True)] Vorsicht bei Verwendung von Sessions in Web Services (Cookies) Caching Bei Rückgabe großer Daten, die sich selten ändern, sollte man Caching-Funktionalität von ASP.NET verwenden [WebMethod(CacheDuration=40)]

36 Transaktionen DB-Transaktionen ADO.NET-Transaktionen Lokale verteilte COM+-Transaktionen Lang andauernde Transaktionen (z.B. mit BizTalk Server) TransactionOption Property in WebMethod Attribut [WebMethod(TransactionOption= TransactionOption.Required)] COM+-Transaktionseinstellungen Über ContextUtil kann der Ausgang einer Transaktion gesteuert werden

37 COM+-Dienste nutzen Nutzung einer Vielzahl von COM+- Diensten möglich (je nach Plattform) Transaktionen Objekt-Pooling Just-In-Time Aktivierung (JITA) Queued Components Loosely-Coupled Events (LCE) Objekt-Erzeugung Private Komponenten Rollenbasierte Sicherheit

38 COM+ und ASP.NET Web Services Verwendung von COM+-Diensten auch in ASP.NET und XML Web Services Verwendung einer eigenen Klasse, welche die COM+-Methoden implementiert Wrappen dieser Klasse durch eine Web Service- Klasse Verwendung der Eigenschaft TransactionOption des Attributs WebMethod Disabled, NotSupported, Supported, Required, RequiresNew Probleme bei der dynamischen Registrierung durch ASP.NET-Laufzeitumgebung Standardmäßiges Benutzerkonto mit geringen Privilegien

39 Sicherheit Unterschiedliche Ebenen Verschlüsselung Z.B. Transportsicherheit (SSL, TLS, …) Authentifizierung Autorisierung Signaturen Kryptografie

40 Authentifizierung Windows-Authentifizierung (via IIS) Basic, Digest, NTLM, Kerberos, clientseitige SSL- Zertifikate Forms-basierte (Cookie) Authentifizierung Passport-Authentifizierung Eigene Authentifizierung

41 Autorisierung Bsp.: erlaube Admins oder WebServiceUsers und lehne alle anderen ab Bsp.: lehne anonyme (nicht auth.) Benutzer ab

42 Große Daten ASP.NET Web Services unterstützen keine Attachments Weder MIME, noch DIME Lediglich kodierte Parameterwerte können hier als Notlösung verwendet werden DIME-Beispielimplementierung auf MSDN Online Nur ein Sample, kein Support DIME Support für nächste Version angekündigt

43 Erweiterungsmöglichkeiten HTTP Module HTTP Handler SOAP Header SoapExtensions

44 Erweiterungsmöglichkeiten SoapExtensions Fortgeschrittenes Konzept Web Services-Aufrufe können intercepted werden Web Method-Aufrufe können intercepted werden Pre- und Post-Processing Klasse von SoapExtension ableiten Eigenes Attribut von SoapExtensionAttribute ableiten Attribut auf Methoden einer Web Service-Klasse anwenden Auch Konfiguration über web.config/machine.config möglich

45 Zu beachten Exceptions Werden immer als SoapException an den Client übertragen Eigene Exceptions gehen verloren Man kann aber über SoapException die Gestalt des SOAP Faults steuern Wenn Sessions verwendet werden Client muss Cookies verwalten Überladene Methoden Da WSDL kein Überladen zulässt, muss man den Nachrichtennamen im Quelltext spezifizieren/ändern

46 Tipps Keine Properties als WebMethod verwenden Properties implizieren Zustand Weniger ist mehr Caching verwenden, wo sinnvoll CacheDuration Property für Anzeige-Caching Klasse Cache für Daten-Caching Grosser Performanzgewinn Stress Testing ACT im VS.NET Enterprise Edition WAST Nicht auf Biegen und Brechen … Web Services sind nicht immer das geeignete Mittel! Web Services vor allem dann verwenden, wenn Interop gefragt

47 Für Leseratten

48 Glossar DIME: Direct Internet Message Encapsulation. Standard zur Übertragung von großen Datenmengen in einer Web Services-Umgebung GXA: Global XML Web Services Architecture. Rahmenwerk von Microsoft für Real-World Web Services aufbauend auf SOAP. Definiert Spezifikationen für die unterschiedlichsten Bereiche IIS: Microsoft Internet Information Server SOAP: Simple Object Access Protocol (ursprünglich). XML-basierte Spezifikation des W3C zur plattformübergreifenden Kommunikation im Internet. Basis für XML Web Services SOAP Toolkit: SOAP/ Web Services-Implementierung von Microsoft für COM / Windows DNA-Anwendungen WSDL: Web Services Description Language. XML Dialekt zur Metadatenbeschreibung von Web Services XML Web Services: Softwareimplementierungen/Programme die über XML-basierte Standardprotokolle im Internet von nahezu jeder Plattform aus angesprochen werden können

49 Weitere Informationen Christian Weyer, XML Web Service-Anwendungen mit Microsoft.NET, Addison-Wesley Andreas Eide at. al., Professional ASP.NET Web Services, Wrox Press / / Andrew Krowczyk et. al., Professional C# Web Services: Building.NET Web Services with ASP.NET and.NET Remoting, Wrox Press / / William Oellermann, Architecting Web Services, Apress / /

50 Weitere Informationen.NET XML Web Services Repertory MSDN SOAP Center MSDN XML Web Services Center SOAP Builders Interop Lab LearnXmlWs GotDotNet Extreme Guide Web Services

51 Fragen!? Uff...


Herunterladen ppt "Web Services in der Praxis mit Visual Studio.NET Christian Weyer Freiberuflicher Berater & Entwickler."

Ähnliche Präsentationen


Google-Anzeigen