Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

.NET Remoting und XML Web Services. Ralf Westphal

Ähnliche Präsentationen


Präsentation zum Thema: ".NET Remoting und XML Web Services. Ralf Westphal"—  Präsentation transkript:

1 .NET Remoting und XML Web Services

2 Ralf Westphal

3 Architekturtriebfedern Wartbarkeit Wartbarkeit Leistung Leistung Integration Integration Robustheit Robustheit Stabilität Stabilität Sicherheit Sicherheit

4 Triebfeder Wartbarkeit Wunschliste Wunschliste Flexibilität Flexibilität Transparenz Transparenz Einfaches Deployment Einfaches Deployment Lösung Lösung Schichtung Schichtung Modularisierung Modularisierung

5 Schichtung/Modularisierung Horizontale Aufteilung (Schichtung) Horizontale Aufteilung (Schichtung) Separation of Concerns Separation of Concerns UI UI Geschäftslogik Geschäftslogik Datenbankzugriff Datenbankzugriff Vertikale Aufteilung Vertikale Aufteilung Komponenten Komponenten Objekte Objekte Entkopplung Entkopplung UI Geschäftslogik (GL) Datenbankzugriff UI Datenbankzugriff

6 Triebfeder Leistung Wunschliste Wunschliste Hohe Leistung (Durchsatz) Hohe Leistung (Durchsatz) Leistung = Arbeit / Zeit Leistung = Arbeit / Zeit Abhängig von Ressourcenverfügbarkeit Abhängig von Ressourcenverfügbarkeit Einfache Leistungssteigerung Einfache Leistungssteigerung Lösung Lösung Skalierbare Architektur Skalierbare Architektur Skalierbarkeit: Wie verändert sich der Durchsatz bei Addition von Ressourcen? (Clientzahl konstant) Skalierbarkeit: Wie verändert sich der Durchsatz bei Addition von Ressourcen? (Clientzahl konstant) CPU DB Ressourcen Hauptspeicher Festplattenspeicherknappreichhaltig Durchsatz (tx/sec) Ressourcen Skalierbarkeit

7 Architekturen I 1 Schicht 1 Schicht Dateibasierte Datenbank (z.B. Jet Engine) Dateibasierte Datenbank (z.B. Jet Engine) Pro Pro Einfach Einfach Con Con Nicht skalierbar Nicht skalierbar Hohe Netzwerklast Hohe Netzwerklast Imperformante Zugriffssynchronisation Imperformante Zugriffssynchronisation DB-Konsistenz von Clients abhängig DB-Konsistenz von Clients abhängig Client Netzwerk

8 Architekturen II 2 Schichten (Client/Server) 2 Schichten (Client/Server) Serverbasierte Datenbank (z.B. SQL Server) Serverbasierte Datenbank (z.B. SQL Server) Pro Pro Geringere Netzwerklast Geringere Netzwerklast Scale up möglich (Aufstocken des DB-Servers) Scale up möglich (Aufstocken des DB-Servers) Einfachere Zugriffsynchronisation Einfachere Zugriffsynchronisation Con Con Komplexe Geschäftslogik bei vielen Clients Komplexe Geschäftslogik bei vielen Clients Hoher Server-Ressourcenverbrauch durch viele Clients Hoher Server-Ressourcenverbrauch durch viele Clients Client Netzwerk DB Server

9 3 Schichten 3 Schichten Zentrale Geschäftslogik Zentrale Geschäftslogik Pro Pro Noch geringere Netzwerklast Noch geringere Netzwerklast Scale out möglich (Hinzufügen von Applikationsservern) Scale out möglich (Hinzufügen von Applikationsservern) Geringer DB-Ressourcenverbrauch durch zustandslose zentrale Logik Geringer DB-Ressourcenverbrauch durch zustandslose zentrale Logik Einfachere Deployment zentraler Logik Einfachere Deployment zentraler Logik Dient Triebfedern Wartbarkeit, Robustheit, Sicherheit Dient Triebfedern Wartbarkeit, Robustheit, Sicherheit Con Con Erfordert verändertes Programmiermodell Erfordert verändertes Programmiermodell Host Architekturen III Client Netzwerk DB Server GL

10 Architekturen IIIa 3 Schichten mit Load Balancing 3 Schichten mit Load Balancing Geschäftslogik läuft auf mehreren Applikationsservern Geschäftslogik läuft auf mehreren Applikationsservern Client Netzwerk DB Server GL GL GL Load Balacing

11 Triebfeder Integration Wunschliste Wunschliste Anbindung von Legacy Code Anbindung von Legacy Code Anbindung von Code auf anderen Plattformen Anbindung von Code auf anderen Plattformen Prozessor Prozessor Betriebssystem Betriebssystem Entwicklungsplattform Entwicklungsplattform Anwendungsteile sind per definitionem verteilt Anwendungsteile sind per definitionem verteilt Lösung Lösung Kommunikationstechnologie auf Basis des kleinsten gemeinsamen Nenners Kommunikationstechnologie auf Basis des kleinsten gemeinsamen Nenners

12 Thema heute Verteilte Anwendungen sind kein Selbstzweck Verteilte Anwendungen sind kein Selbstzweck Erfordern modulare Architektur Erfordern modulare Architektur Voraussetzung für Skalierbarkeit Voraussetzung für Skalierbarkeit Voraussetzung für Integration Voraussetzung für Integration Client Netzwerk DB Server Host GL

13 Technische Herausforderungen Verteilung Verteilung Methodenaufrufe über Speichergrenzen hinweg Methodenaufrufe über Speichergrenzen hinweg Transport von Methodenaufrufen zw. Client & Server Transport von Methodenaufrufen zw. Client & Server Integration Integration Plattformunabhängigkeit Plattformunabhängigkeit Dienstbeschreibung Dienstbeschreibung Methodenaufrufformat Methodenaufrufformat

14 Messagebasierte Kommunikation Übertragung von Methodenaufrufen als Nachrichten Übertragung von Methodenaufrufen als Nachrichten Serialisierung des Call Stack beim Client (Marshaling) Serialisierung des Call Stack beim Client (Marshaling) Transport der Message zum Server Transport der Message zum Server Deserialierung & Rekonstruktion des Call Stack (Unmarshaling) Deserialierung & Rekonstruktion des Call Stack (Unmarshaling) dito für Rückgabewerte dito für Rückgabewerte Client Server Netzwerk Objekt TPTPTPTP RPRPRPRP Call Stack Serialisierter Call Stack

15 Implikationen I Typen von Parametern/Rückgabewert müssen serialisierbar sein Typen von Parametern/Rückgabewert müssen serialisierbar sein kein Problem für skalare Typen kein Problem für skalare Typen für viele BCL-Typen kein Problem (z.B. ArrayList) für viele BCL-Typen kein Problem (z.B. ArrayList) eigene Typen als [Serializable()] kennzeichnen eigene Typen als [Serializable()] kennzeichnen Methodenaufrufe dauern sehr lang! Methodenaufrufe dauern sehr lang! Anzahl Methodenaufrufe minimal halten Anzahl Methodenaufrufe minimal halten Chunky statt chatty Interfaces Chunky statt chatty Interfaces Widerspricht z.T. OOP Widerspricht z.T. OOP Fördert Skalierbarkeit, weil weniger Wert auf objektinternen Zustand gelegt wird Fördert Skalierbarkeit, weil weniger Wert auf objektinternen Zustand gelegt wird

16 Demo Serialierbarer Typ Serialierbarer Typ Chunky statt chatty Interface Chunky statt chatty Interface

17 Implikationen II (Un)Marshaling sollte automatisch und transparent ablaufen (Un)Marshaling sollte automatisch und transparent ablaufen Entfernte Typen von MarshalByRefObject ableiten Entfernte Typen von MarshalByRefObject ableiten Proxys beim Client werden automatisch erzeugt Proxys beim Client werden automatisch erzeugt

18 Demo Entfernter Typ Entfernter Typ Transparent Proxy Transparent Proxy

19 Kommunikation über Speichergrenzen hinweg Kommunikationsmedium Kommunikationsmedium Über Speichergrenzen hinweg Über Speichergrenzen hinweg Physikalisch Physikalisch Prozess Prozess Maschine Maschine Logisch Logisch AppDomain (intra-Prozess) AppDomain (intra-Prozess) Context (intra-AppDomain) Context (intra-AppDomain) keine Isolierung keine Isolierung Netzwerk, Shared Memory,... Netzwerk, Shared Memory,... Host Host Welche Anwendungen können entfernte Komponenten hosten? Welche Anwendungen können entfernte Komponenten hosten?.NET Remoting: Jede Anwendung.NET Remoting: Jede Anwendung XML Web Service: IIS & jede Anwendung XML Web Service: IIS & jede Anwendung Serviced Components: Applikationsserver (COM+) Serviced Components: Applikationsserver (COM+)

20 Implikationen III Einigung auf Kommunikationskanal Einigung auf Kommunikationskanal.NET Framework bietet zwei Kanäle (Channel).NET Framework bietet zwei Kanäle (Channel) TCP TCP HTTP HTTP Einigung auf Messageformat Einigung auf Messageformat.NET Framework bietet zwei Formate.NET Framework bietet zwei Formate Binär Binär SOAP SOAP Kanäle und Formate können erweitert werden Kanäle und Formate können erweitert werden

21 Demo Verteilte Anwendung mit Client und Server Verteilte Anwendung mit Client und Server

22 Lebensdauer entfernter Objekte GC funktioniert nicht GC funktioniert nicht Einem Server sind die Wurzeln seiner Objekte in Clients nicht bekannt Einem Server sind die Wurzeln seiner Objekte in Clients nicht bekannt Lösung: Verschiedene Lebensdauermodelle Lösung: Verschiedene Lebensdauermodelle Server bestimmt Lebensdauer (well known Objects) Server bestimmt Lebensdauer (well known Objects) SingleCall SingleCall Singleton Singleton Client bestimmt Lebensdauer (client activated Objects) Client bestimmt Lebensdauer (client activated Objects) Objekte mit Verfallsdatum Objekte mit Verfallsdatum Lease Based Lifetime Lease Based Lifetime Singleton Singleton Client activated Objects Client activated Objects

23 Demo SingleCall SingleCall Singleton Singleton Client Activated Object Client Activated Object

24 Transparente Verteilung Konfigurationsdateien bei Client & Server Konfigurationsdateien bei Client & Server Kanal & Protokoll Kanal & Protokoll Veröffentlichte Typen Veröffentlichte Typen Lifetime Lifetime 1 Zeile Code in Client & Host 1 Zeile Code in Client & Host

25 Pro/Con Remoting Pro Pro Simpel Simpel Erweiterbar Erweiterbar max. Transparenz max. Transparenz Con Con Keine Security Keine Security Keine Transaktionen Keine Transaktionen Fixer ThreadPool Fixer ThreadPool

26 Kommunikation mit Unbekannt Keine Kontrolle über... Keine Kontrolle über... Client (Delphi?, Java?, C++?, Linux?...) Client (Delphi?, Java?, C++?, Linux?...) Server (Cobol?, Java?, Unix?, Mac?...) Server (Cobol?, Java?, Unix?, Mac?...) Unwägbarkeiten Unwägbarkeiten Prozessor Prozessor Betriebssystem Betriebssystem Entwicklungsplattform Entwicklungsplattform Kommunikation erfordert kleinsten gemeinsamen Nenner Kommunikation erfordert kleinsten gemeinsamen Nenner Kanal: TCP/IP + HTTP (=Text) Kanal: TCP/IP + HTTP (=Text) Kodierung beim Marshaling: SOAP (=Text (XML)) Kodierung beim Marshaling: SOAP (=Text (XML)) Schnittstellenbeschreibung: WSDL (=Text (XML)) Schnittstellenbeschreibung: WSDL (=Text (XML))

27 Veröffentlichung von Diensten.NET Remoting.NET Remoting HTTP-Kanal HTTP-Kanal SOAP-Formatierer SOAP-Formatierer XML Web Services XML Web Services ASP.NET Seite ASP.NET Seite Definiert Methoden Definiert Methoden Typen müssen serialisierbar sein Typen müssen serialisierbar sein Immer SingleCall Immer SingleCall Host ist IIS Host ist IIS

28 XML Web Services definieren Service-Klasse Service-Klasse Kennzeichnen mit [WebService] Kennzeichnen mit [WebService] Ableiten von System.Web.Services.WebService Ableiten von System.Web.Services.WebService Service-Methode Service-Methode Kennzeichnen mit [WebMethod] Kennzeichnen mit [WebMethod] Transaktionen möglich Transaktionen möglich WSDL wird automatisch generiert WSDL wird automatisch generiert

29 Demo XML Web Service definieren XML Web Service definieren

30 XML Web Service Client Referenz auf XML Web Service setzen Referenz auf XML Web Service setzen Web Service-Aufruf über Proxy-Klasse Web Service-Aufruf über Proxy-Klasse Wird autom. aus WSDL generiert Wird autom. aus WSDL generiert

31 Demo XML Web Service Client XML Web Service Client Tx mit XML Web Service Tx mit XML Web Service

32 Pro/Con XML Web Services Pro Pro Einfach Einfach Plattformunabhängigkeit Plattformunabhängigkeit Transparent für Client-Code Transparent für Client-Code Einschränkungen bei Datentypen Einschränkungen bei Datentypen Struktur Struktur Größe (Übertragung als Text!) Größe (Übertragung als Text!) Erweiterbar Erweiterbar SOAP-Extensions/Header SOAP-Extensions/Header Con Con Tx & Security nicht plattformübergreifend Tx & Security nicht plattformübergreifend

33 To the rescue Web Services Enhancements (WSE) Web Services Enhancements (WSE) Erweiterung des XML Web Service Framework Erweiterung des XML Web Service Framework Binärdatenübertragung Binärdatenübertragung Security Security Routing Routing

34 Alternativen für Verteilung.NET Enterprise Services (COM+).NET Enterprise Services (COM+) Echter Applikationsserver Echter Applikationsserver Heterogene Transaktionen Heterogene Transaktionen Rollenbasierte Security Rollenbasierte Security Object Pooling Object Pooling Queued Components Queued Components System.Net System.Net Low-level APIs Low-level APIs Sockets Sockets TCP-/UDP-Klassen TCP-/UDP-Klassen

35 Fazit Mehrere Optionen für Verteilung Mehrere Optionen für Verteilung.NET Remoting.NET Remoting XML Web Services XML Web Services.NET Enterprise Services.NET Enterprise Services Verteilung ist einfach Verteilung ist einfach Serialisierbare Parameterklassen Serialisierbare Parameterklassen Definition entfernter Klasse Definition entfernter Klasse (Fast) Transparent für Client & Server (Fast) Transparent für Client & Server

36 Fragen?

37 Ressourcen Tom Barnaby, Distributed.NET Programming in VB.NET, APress 2002 Tom Barnaby, Distributed.NET Programming in VB.NET, APress 2002 Ingo Rammer, Advanced.NET Remoting, APress 2002 Ingo Rammer, Advanced.NET Remoting, APress 2002 Clemens Vasters,.NET Enterprise Services, Carl Hanser 2002 Clemens Vasters,.NET Enterprise Services, Carl Hanser 2002

38 Ihr Potenzial. Unser Antrieb.


Herunterladen ppt ".NET Remoting und XML Web Services. Ralf Westphal"

Ähnliche Präsentationen


Google-Anzeigen