Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Web Services in der Praxis mit Visual Studio .NET

Ähnliche Präsentationen


Präsentation zum Thema: "Web Services in der Praxis mit Visual Studio .NET"—  Präsentation transkript:

1 Web Services in der Praxis mit Visual Studio .NET
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 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 gibt‘s weitere Info‘s?

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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 5
Web Services Stack MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 5 Veröffentlichen, Finden, Benutzen UDDI Formale Dienstbeschreibung WSDL Dienstinteraktion SOAP Universelles Datenformat XML Allgegenwärtige Kommunikation Internet

6 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 6
Web Services Roadmap MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 6 Inter Application-Protokolle Reliable Messaging Eventing Transactions Directory Web Services-Module Inspection Referral Security Description Routing License SOAP Internet TCP/IP XML HTTP/SMTP

7 ASP.NET in der Übersicht
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 7 HTTP SOAP <HTML> <script> </script> </HTML> IIS Web Forms app.aspx class X { [WebMethod] public int method1() { … } } Web Services Common Language Runtime app.asmx IIS. Web Forms. app.aspx. class X { [WebMethod] public int. method1() { … } } Web Services. Common Language Runtime. app.asmx.", "width": "800" }

8 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 8
ASP.NET-Architektur MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 8 Unmanaged Code HTTP Request IIS ASP.NET Runtime Managed Code HTTP Module HTTP Module Request Handler ...

9 ASP.NET-Laufzeitumgebung
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 9 HTTP inetinfo.exe (IIS) aspnet_wp.exe (ASP.NET Worker Prozess) aspnet_isapi.dll (ASP.NET ISAPI Extension) Named Pipe HTTP Runtime

10 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 10
HTTP Pipeline MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 10 HTTP Pipeline-Prozessmodell Details von aspnet_wp.exe Worker Prozess komplett konfigurierbar aspnet_isapi.dll verarbeitet <processModel> 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 11
ASP.NET-Architektur MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 11 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 12 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 13
ASP.NET Architektur MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 13 ASP.NET Runtime Assembly existiert, gleicher Zeitstempel Assembly für Datei existiert? Nein – kompilieren Ja – ausführen <% WebService codebehind=„WS„ %> ASP.NET Compiler Web Service Assembly Reflection class WS : WebService { ... }

14 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 14
ASP.NET Deployment MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 14 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 15 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 16
XML Web Services MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 16 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 17 <WebService (Namespace:="http://eyesoft.de/webservices/", _ Description:="This Web Service mimics a very simple calculator.")> _ Public Class SimpleCalc <WebMethod(Description:="Add two numbers")> _ Public Function Add(ByVal a As Long, _ ByVal b As Long) As Long Return a + b End Function End Class

18 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 18
XML Web Services MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 18 Attribut <WebService> 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 19
XML Web Services MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 19 Attribut <WebMethod> 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 20
Inline vs. Code behind MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 20 Inline: WebService Language="C#" Class="MyMath" %> using System.Web.Services; public class MyMath { [WebMethod] public int Add(int num1, int num2) return num1+num2; } Code-behind: WebService Language="VB" Class="MyNameSpace.MyWebService,MyAssembly" %>

21 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 21
Web Services testen MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 21 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 22 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 23 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 24
Web Services debuggen MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 24 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 25
Web Services debuggen MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 25 ASPNET hat keine Berechtigungen, um in das Event Log zu schreiben \\HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\Eventlog\Application\RestrictGuestAccess auf 0 setzen und rebooten ASPNET hat keine Berechtigungen, um Event Sources zu erstellen ASPNET-Benutzer muss Lese/Schreiberechte auf \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Eventlog und alle Unterschlüssel haben

26 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 26
Serialisierung MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 26 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 27 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 Serialisierung mit XmlSerializer
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 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 }

29 Deserialisierung mit XmlSerializer
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 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 }

30 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 30
Datentypen MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 30

31 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 31
Marshaling & Encoding MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 31 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 32
XML-Format MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 32 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 33 Attribut Ausprägung Use Betrifft SoapDocument Method Document Literal/ Encoding Methode SoapDocument Service Literal/ Encoded Alle Methoden SoapRpcMethod RPC Encoded SoapRpcService

34 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 34
Konfiguration MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 34 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 35
Zustand und Caching MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 35 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 36
Transaktionen MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 37
COM+-Dienste nutzen MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 37 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 38 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 39
Sicherheit MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 39 Unterschiedliche Ebenen Verschlüsselung Z.B. Transportsicherheit (SSL, TLS, …) Authentifizierung Autorisierung Signaturen Kryptografie

40 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 40
Authentifizierung MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 40 Windows-Authentifizierung (via IIS) Basic, Digest, NTLM, Kerberos, clientseitige SSL-Zertifikate Forms-basierte (Cookie) Authentifizierung Passport-Authentifizierung Eigene Authentifizierung <security> <authentication mode="[Windows|Forms|Passport|None]"/> </security>

41 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 41
Autorisierung MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 41 Bsp.: erlaube “Admins” oder “WebServiceUsers” und lehne alle anderen ab Bsp.: lehne anonyme (nicht auth.) Benutzer ab <!-- * = alle, ? = anonym bzw. nicht auth. --> <authorization> <allow verbs="POST" Roles="Admins" /> <allow Roles="WebServiceUsers"/> <deny users="*" /> </authorization> <authorization> <deny users="?" /> </authorization>

42 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 42
Große Daten MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 42 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 43 HTTP Module HTTP Handler SOAP Header SoapExtensions

44 Erweiterungsmöglichkeiten
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 44 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 45
Zu beachten MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 45 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 <WebMethod(MessageName:=“FooX”)>

46 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 46
Tipps MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 46 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 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 47
Für Leseratten MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 47

48 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 48
Glossar MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 48 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 49 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
MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 50 .NET XML Web Services Repertory MSDN SOAP Center MSDN XML Web Services Center SOAP Builders Interop Lab LearnXmlWs GotDotNet .NET Extreme .NET 247 Guide Web Services

51 MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 51
Fragen!? MSDN TechTalk – <<Monat JJJJ>> <<Thema>> 51 Uff...


Herunterladen ppt "Web Services in der Praxis mit Visual Studio .NET"

Ähnliche Präsentationen


Google-Anzeigen