Web Services in der Praxis mit Visual Studio.NET Christian Weyer [email protected] Freiberuflicher...
-
Upload
berthold-helmuth -
Category
Documents
-
view
109 -
download
2
Transcript of Web Services in der Praxis mit Visual Studio.NET Christian Weyer [email protected] Freiberuflicher...
![Page 1: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/1.jpg)
Web Services in der Praxis
mit Visual Studio .NET
Christian [email protected]
Freiberuflicher Berater & Entwickler
![Page 2: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/2.jpg)
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?
![Page 3: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/3.jpg)
Voraussetzungen
Kenntnis von XML und grundlegende .NET-Kenntnisse
Interesse und Lust, sich auf die neue Welt der XML Web Services einzulassen …
![Page 4: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/4.jpg)
Demos
Quer über diesen TechTalk-Vortrag verstreut Sie werden alle wichtigen Techniken und
Vorgehensweise zu sehen bekommen
![Page 5: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/5.jpg)
Web Services Stack
Allgegenwärtige Kommunikation Internet
Universelles Datenformat XML
Dienstinteraktion SOAP
Formale Dienstbeschreibung WSDL
Veröffentlichen, Finden, Benutzen UDDI
![Page 6: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/6.jpg)
Web Services Roadmap
SOAP
HTTP/SMTPXMLTCP/IP
Directory
Inspection
Description
Web Services-Module
Inter Application-Protokolle
Referral
Routing
Security
License
Eventing Transactions
Reliable Messaging
Internet
![Page 7: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/7.jpg)
IIS
Web Forms
Web Services
Common Language Runtime
ASP.NET in der Übersicht
app.aspx
<HTML><script>…</script>…</HTML>
app.asmx
class X {
[WebMethod]
public int
method1()
{ … }
}
HTTP
SOAP
![Page 8: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/8.jpg)
ASP.NET-Architektur
Unmanaged Code
Managed Code
...Request Handler
HTTP Module
HTTP Module
ASP.NET Runtime
IIS
HTTP Request
![Page 9: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/9.jpg)
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
![Page 10: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/10.jpg)
HTTP Pipeline
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
![Page 11: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/11.jpg)
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
![Page 12: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/12.jpg)
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
![Page 13: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/13.jpg)
ASP.NET Architektur
<% WebService codebehind=„WS„ %>
ASP.NET Compiler
Reflection
Web Service
Assembly
ASP.NET Runtime
Assembly für Dateiexistiert?
Assembly existiert, gleicher Zeitstempel
Nein – kompilieren Ja –
ausführen
class WS : WebService{ ... }
![Page 14: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/14.jpg)
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
![Page 15: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/15.jpg)
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
![Page 16: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/16.jpg)
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 die @WebService Direktive
![Page 17: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/17.jpg)
Web Services-Attribute
<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
![Page 18: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/18.jpg)
XML Web Services
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
![Page 19: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/19.jpg)
XML Web Services
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
![Page 20: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/20.jpg)
Inline vs. Code behind
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" %>
![Page 21: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/21.jpg)
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
![Page 22: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/22.jpg)
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 ...
![Page 23: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/23.jpg)
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
![Page 24: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/24.jpg)
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
![Page 25: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/25.jpg)
25
Web Services debuggen
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
![Page 26: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/26.jpg)
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
![Page 27: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/27.jpg)
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
![Page 28: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/28.jpg)
using System;using System.IO;using System.XML.Serialization;
public class MyType { public Int32 x, y, sum;}
void SomeMethod(Object rootObject) { FileStream fs = new FileStream(@“C:\MyData.xml", 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
![Page 29: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/29.jpg)
using System;using System.IO;using System.XML.Serialization;
public class MyType { public Int32 x, y, sum;}
MyType SomeMethod() { FileStream fs = new FileStream(@“C:\MyData.xml", 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
![Page 30: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/30.jpg)
Datentypen
Typ Beschreibung
Einfache Typen String, Int32, Byte, Boolean, Int16, Int64, Single, Double, Decimal, DateTime und XmlQualifiedName
Aufzählungstypen Public enum Farbe { rot=1, blau=2 }
Felder von einfachen Typen und Aufzählungen
Felder (Arrays) wie z.B. String[] oder Integer[]
Klassen und Strukturen Klassen und Strukturen mit öffentlichen Felder oder Eigenschaften
Felder von Klassen/Strukturen
DataSet ADO.NET DataSet. Ein DataSet ist ein Speicherabbild einer Ergebnisrelation (z.B. aus einer DB-Abfrage). Vergleichbar mit ADO Recordset
Felder von DataSet
XmlNode XmlNode ist eine In-Memory Repräsentation eines XML Fragments (vergleichbar mit einem abgespeckten XML DOM)
Felder von XmlNode
![Page 31: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/31.jpg)
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
![Page 32: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/32.jpg)
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
![Page 33: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/33.jpg)
SOAP-Format beeinflussen
Attribut Ausprägung Use Betrifft
SoapDocumentMethod
Document Literal/Encoding
Methode
SoapDocumentService
Document Literal/Encoded
Alle Methoden
SoapRpcMethod RPC Encoded Methode
SoapRpcService RPC Encoded Alle Methoden
![Page 34: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/34.jpg)
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
![Page 35: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/35.jpg)
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)]
![Page 36: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/36.jpg)
Transaktionen
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
![Page 37: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/37.jpg)
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
![Page 38: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/38.jpg)
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
![Page 39: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/39.jpg)
Sicherheit
Unterschiedliche Ebenen
• Verschlüsselung• Z.B. Transportsicherheit (SSL, TLS, …)
• Authentifizierung
• Autorisierung
• Signaturen
• Kryptografie
![Page 40: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/40.jpg)
Authentifizierung
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>
![Page 41: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/41.jpg)
Autorisierung
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>
![Page 42: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/42.jpg)
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
![Page 43: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/43.jpg)
Erweiterungsmöglichkeiten
HTTP Module HTTP Handler SOAP Header SoapExtensions
![Page 44: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/44.jpg)
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
![Page 45: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/45.jpg)
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
• <WebMethod(MessageName:=“FooX”)>
![Page 46: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/46.jpg)
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
![Page 47: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/47.jpg)
Für Leseratten
http://www.eyesoft.de/wsbuch/
![Page 48: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/48.jpg)
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
![Page 49: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/49.jpg)
Weitere Informationen
Christian Weyer, XML Web Service-Anwendungen mit Microsoft .NET, Addison-Wesleyhttp://www.eyesoft.de/wsbuch/
Andreas Eide at. al., Professional ASP.NET Web Services, Wrox Presshttp://www.amazon.de/exec/obidos/ASIN/1861005458/qid%3D1010053263/302-2442057-6660030
Andrew Krowczyk et. al., Professional C# Web Services: Building .NET Web Services with ASP.NET and .NET Remoting, Wrox Presshttp://www.amazon.de/exec/obidos/ASIN/1861004397/qid%3D1010053263/302-2442057-6660030
William Oellermann, Architecting Web Services, Apresshttp://www.amazon.de/exec/obidos/ASIN/1893115585/qid%3D1010053302/302-2442057-6660030
![Page 50: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/50.jpg)
Weitere Informationen .NET XML Web Services Repertory
http://www.xmlwebservices.cc/ MSDN SOAP Center
http://msdn.microsoft.com/soap/ MSDN XML Web Services Center
http://msdn.microsoft.com/webservices/ SOAP Builders Interop Lab
http://www.xmethods.net/soapbuilders/ LearnXmlWs
http://www.learnxmlws.com/ GotDotNet
http://www.gotdotnet.com/ .NET Extreme
http://www.dotnetextreme.com/ .NET 247 Guide Web Services
http://www.dotnet247.com/247reference/guide/9.aspx
![Page 51: Web Services in der Praxis mit Visual Studio.NET Christian Weyer cw@eyesoft.de Freiberuflicher Berater & Entwickler.](https://reader036.fdocument.pub/reader036/viewer/2022062512/55204d6249795902118b7269/html5/thumbnails/51.jpg)
Fragen!?
Uff...Uff...