38
.NET Remoting und .NET Remoting und XML Web Services XML Web Services

NET Remoting und XML Web Services. Ralf Westphal [email protected]

Embed Size (px)

Citation preview

Page 1: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

.NET Remoting und .NET Remoting und XML Web ServicesXML Web Services

Page 2: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

.NET Remoting und .NET Remoting und XML Web ServicesXML Web Services

Ralf WestphalRalf [email protected]@ralfw.de

Page 3: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

ArchitekturtriebfedernArchitekturtriebfedern

WartbarkeitWartbarkeit LeistungLeistung IntegrationIntegration

RobustheitRobustheit StabilitätStabilität SicherheitSicherheit

Page 4: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Triebfeder WartbarkeitTriebfeder Wartbarkeit

WunschlisteWunschliste FlexibilitätFlexibilität TransparenzTransparenz Einfaches DeploymentEinfaches Deployment

LösungLösung SchichtungSchichtung ModularisierungModularisierung

Page 5: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Schichtung/Schichtung/ModularisierungModularisierung Horizontale Aufteilung (Schichtung)Horizontale Aufteilung (Schichtung)

„„Separation of Concerns“Separation of Concerns“ UIUI GeschäftslogikGeschäftslogik DatenbankzugriffDatenbankzugriff

Vertikale AufteilungVertikale Aufteilung KomponentenKomponenten ObjekteObjekte

EntkopplungEntkopplung

UIUI

Geschäftslogik (GL)Geschäftslogik (GL)

DatenbankzugriffDatenbankzugriff

UIUI

Geschäftslogik (GL)Geschäftslogik (GL)

DatenbankzugriffDatenbankzugriff

Page 6: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Triebfeder LeistungTriebfeder Leistung WunschlisteWunschliste

Hohe Leistung (Durchsatz)Hohe Leistung (Durchsatz) Leistung = Arbeit / ZeitLeistung = Arbeit / Zeit

Abhängig von Abhängig von RessourcenverfügbarkeitRessourcenverfügbarkeit

Einfache LeistungssteigerungEinfache Leistungssteigerung

LösungLösung Skalierbare ArchitekturSkalierbare Architektur

Skalierbarkeit: Wie verändert Skalierbarkeit: Wie verändert sich der Durchsatz bei Addition sich der Durchsatz bei Addition von Ressourcen? von Ressourcen? (Clientzahl konstant)(Clientzahl konstant)

CPUCPU

DB RessourcenDB Ressourcen

HauptspeicherHauptspeicher

FestplattenspeicherFestplattenspeicher

knappknapp

reichhaltigreichhaltig

Durchsatz (tx/sec)Durchsatz (tx/sec)

RessourcenRessourcen

SkalierbarkeitSkalierbarkeit

Page 7: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Architekturen IArchitekturen I

1 Schicht1 Schicht Dateibasierte Datenbank (z.B. Jet Dateibasierte Datenbank (z.B. Jet

Engine)Engine)

ProPro EinfachEinfach

ConCon Nicht skalierbarNicht skalierbar Hohe NetzwerklastHohe Netzwerklast Imperformante ZugriffssynchronisationImperformante Zugriffssynchronisation DB-Konsistenz von Clients abhängigDB-Konsistenz von Clients abhängig

ClientClient NetzwerkNetzwerk

Page 8: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Architekturen IIArchitekturen II

2 Schichten (Client/Server)2 Schichten (Client/Server) Serverbasierte Datenbank (z.B. SQL Serverbasierte Datenbank (z.B. SQL

Server)Server)

ProPro Geringere NetzwerklastGeringere Netzwerklast „„Scale up“ möglich (Aufstocken des DB-Servers)Scale up“ möglich (Aufstocken des DB-Servers) Einfachere ZugriffsynchronisationEinfachere Zugriffsynchronisation

ConCon Komplexe Geschäftslogik bei vielen ClientsKomplexe Geschäftslogik bei vielen Clients Hoher Server-Ressourcenverbrauch durch viele ClientsHoher Server-Ressourcenverbrauch durch viele Clients

ClientClient NetzwerkNetzwerk DB DB ServerServer

Page 9: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

3 Schichten3 Schichten Zentrale GeschäftslogikZentrale Geschäftslogik

ProPro Noch geringere NetzwerklastNoch geringere Netzwerklast „„Scale out“ möglich (Hinzufügen von Applikationsservern)Scale out“ möglich (Hinzufügen von Applikationsservern) Geringer DB-Ressourcenverbrauch durch zustandslose zentrale LogikGeringer DB-Ressourcenverbrauch durch zustandslose zentrale Logik Einfachere Deployment zentraler LogikEinfachere Deployment zentraler Logik Dient Triebfedern Wartbarkeit, Robustheit, SicherheitDient Triebfedern Wartbarkeit, Robustheit, Sicherheit

ConCon Erfordert verändertes ProgrammiermodellErfordert verändertes Programmiermodell

HostHost

Architekturen IIIArchitekturen III

ClientClient NetzwerkNetzwerk DB DB ServerServerGLGL

Page 10: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Architekturen IIIaArchitekturen IIIa

3 Schichten mit Load Balancing3 Schichten mit Load Balancing Geschäftslogik läuft auf mehreren Geschäftslogik läuft auf mehreren

ApplikationsservernApplikationsservern

ClientClient NetzwerkNetzwerk DB DB ServerServer

GLGL

GLGL

GLGL

Load Load BalacingBalacing

Page 11: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Triebfeder IntegrationTriebfeder Integration WunschlisteWunschliste

Anbindung von „Legacy Code“Anbindung von „Legacy Code“ Anbindung von Code auf anderen Anbindung von Code auf anderen

PlattformenPlattformen ProzessorProzessor BetriebssystemBetriebssystem EntwicklungsplattformEntwicklungsplattform

Anwendungsteile sind per definitionem Anwendungsteile sind per definitionem verteiltverteilt

LösungLösung Kommunikationstechnologie auf Basis des Kommunikationstechnologie auf Basis des

kleinsten gemeinsamen Nennerskleinsten gemeinsamen Nenners

Page 12: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Thema heuteThema heute Verteilte Anwendungen sind kein Verteilte Anwendungen sind kein

SelbstzweckSelbstzweck Erfordern modulare ArchitekturErfordern modulare Architektur Voraussetzung für SkalierbarkeitVoraussetzung für Skalierbarkeit Voraussetzung für IntegrationVoraussetzung für Integration

ClientClient NetzwerkNetzwerk DB DB ServerServer

HostHost

GLGL

Page 13: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Technische Technische HerausforderungenHerausforderungen VerteilungVerteilung

Methodenaufrufe über Speichergrenzen Methodenaufrufe über Speichergrenzen hinweghinweg

Transport von Methodenaufrufen zw. Transport von Methodenaufrufen zw. Client & ServerClient & Server

IntegrationIntegration PlattformunabhängigkeitPlattformunabhängigkeit

DienstbeschreibungDienstbeschreibung MethodenaufrufformatMethodenaufrufformat

Page 14: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Messagebasierte Messagebasierte KommunikationKommunikation Übertragung von Methodenaufrufen als Übertragung von Methodenaufrufen als

NachrichtenNachrichten Serialisierung des Call Stack beim Client (Marshaling)Serialisierung des Call Stack beim Client (Marshaling) Transport der Message zum ServerTransport der Message zum Server Deserialierung & Rekonstruktion des Call Stack Deserialierung & Rekonstruktion des Call Stack

(Unmarshaling)(Unmarshaling) dito für Rückgabewertedito für RückgabewerteClientClient ServerServer

NetzwerkNetzwerk

ObjektObjekt

TTPP

RRPP

Call StackCall Stack

Call StackCall Stack

Serialisierter Call StackSerialisierter Call Stack

Page 15: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Implikationen IImplikationen I Typen von Parametern/Rückgabewert Typen von Parametern/Rückgabewert

müssen serialisierbar seinmüssen serialisierbar sein kein Problem für skalare Typenkein Problem für skalare Typen für viele BCL-Typen kein Problem (z.B. für viele BCL-Typen kein Problem (z.B.

ArrayList)ArrayList) eigene Typen als [Serializable()] kennzeichneneigene Typen als [Serializable()] kennzeichnen

Methodenaufrufe dauern sehr lang!Methodenaufrufe dauern sehr lang! Anzahl Methodenaufrufe minimal haltenAnzahl Methodenaufrufe minimal halten „„Chunky statt chatty“ InterfacesChunky statt chatty“ Interfaces

Widerspricht z.T. OOPWiderspricht z.T. OOP Fördert Skalierbarkeit, weil weniger Wert auf Fördert Skalierbarkeit, weil weniger Wert auf

objektinternen Zustand gelegt wirdobjektinternen Zustand gelegt wird

Page 16: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

DemoDemo

Serialierbarer TypSerialierbarer Typ „„Chunky statt chatty“ InterfaceChunky statt chatty“ Interface

Page 17: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Implikationen IIImplikationen II

(Un)Marshaling sollte automatisch (Un)Marshaling sollte automatisch und transparent ablaufenund transparent ablaufen

Entfernte Typen von Entfernte Typen von MarshalByRefObject ableitenMarshalByRefObject ableiten Proxys beim Client werden automatisch Proxys beim Client werden automatisch

erzeugterzeugt

Page 18: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

DemoDemo

Entfernter TypEntfernter Typ Transparent ProxyTransparent Proxy

Page 19: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Kommunikation über Speichergrenzen Kommunikation über Speichergrenzen hinweghinweg

KommunikationsmediumKommunikationsmedium Über Speichergrenzen hinwegÜber Speichergrenzen hinweg

PhysikalischPhysikalisch ProzessProzess MaschineMaschine

LogischLogisch AppDomain (intra-Prozess)AppDomain (intra-Prozess) Context (intra-AppDomain)Context (intra-AppDomain)

keine Isolierungkeine Isolierung Netzwerk, Shared Memory, ...Netzwerk, Shared Memory, ...

HostHost Welche Anwendungen können entfernte Komponenten Welche Anwendungen können entfernte Komponenten

hosten?hosten? .NET Remoting: Jede Anwendung.NET Remoting: Jede Anwendung XML Web Service: IIS & jede AnwendungXML Web Service: IIS & jede Anwendung Serviced Components: Applikationsserver (COM+)Serviced Components: Applikationsserver (COM+)

Page 20: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Implikationen IIIImplikationen III

Einigung auf KommunikationskanalEinigung auf Kommunikationskanal .NET Framework bietet zwei Kanäle .NET Framework bietet zwei Kanäle

(Channel)(Channel) TCPTCP HTTPHTTP

Einigung auf MessageformatEinigung auf Messageformat .NET Framework bietet zwei Formate.NET Framework bietet zwei Formate

BinärBinär SOAPSOAP

Kanäle und Formate können Kanäle und Formate können erweitert werdenerweitert werden

Page 21: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

DemoDemo

Verteilte Anwendung mit Client und Verteilte Anwendung mit Client und ServerServer

Page 22: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Lebensdauer entfernter Lebensdauer entfernter ObjekteObjekte GC funktioniert nichtGC funktioniert nicht

Einem Server sind die Wurzeln seiner Objekte Einem Server sind die Wurzeln seiner Objekte in Clients nicht bekanntin Clients nicht bekannt

Lösung: Verschiedene Lösung: Verschiedene LebensdauermodelleLebensdauermodelle Server bestimmt Lebensdauer (well known Server bestimmt Lebensdauer (well known

Objects)Objects) SingleCallSingleCall SingletonSingleton

Client bestimmt Lebensdauer (client activated Client bestimmt Lebensdauer (client activated Objects)Objects)

Objekte mit VerfallsdatumObjekte mit Verfallsdatum Lease Based LifetimeLease Based Lifetime

SingletonSingleton Client activated ObjectsClient activated Objects

Page 23: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

DemoDemo

SingleCallSingleCall SingletonSingleton Client Activated ObjectClient Activated Object

Page 24: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Transparente VerteilungTransparente Verteilung

Konfigurationsdateien bei Client & Konfigurationsdateien bei Client & ServerServer Kanal & ProtokollKanal & Protokoll Veröffentlichte TypenVeröffentlichte Typen LifetimeLifetime

1 Zeile Code in Client & Host1 Zeile Code in Client & Host

Page 25: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Pro/Con RemotingPro/Con Remoting

ProPro SimpelSimpel ErweiterbarErweiterbar max. Transparenzmax. Transparenz

ConCon Keine SecurityKeine Security Keine TransaktionenKeine Transaktionen Fixer ThreadPoolFixer ThreadPool

Page 26: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Kommunikation mit Kommunikation mit UnbekanntUnbekannt 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ägbarkeitenUnwägbarkeiten ProzessorProzessor BetriebssystemBetriebssystem EntwicklungsplattformEntwicklungsplattform

Kommunikation erfordert kleinsten gemeinsamen Kommunikation erfordert kleinsten gemeinsamen NennerNenner 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))

Page 27: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Veröffentlichung von Veröffentlichung von DienstenDiensten .NET Remoting.NET Remoting

HTTP-KanalHTTP-Kanal SOAP-FormatiererSOAP-Formatierer

XML Web ServicesXML Web Services ASP.NET „Seite“ASP.NET „Seite“

Definiert MethodenDefiniert Methoden Typen müssen serialisierbar seinTypen müssen serialisierbar sein

Immer SingleCallImmer SingleCall Host ist IISHost ist IIS

Page 28: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

XML Web Services XML Web Services definierendefinieren Service-KlasseService-Klasse

Kennzeichnen mit [WebService]Kennzeichnen mit [WebService] Ableiten von Ableiten von

System.Web.Services.WebServiceSystem.Web.Services.WebService Service-MethodeService-Methode

Kennzeichnen mit [WebMethod]Kennzeichnen mit [WebMethod] Transaktionen möglichTransaktionen möglich

WSDL wird automatisch generiertWSDL wird automatisch generiert

Page 29: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

DemoDemo

XML Web Service definierenXML Web Service definieren

Page 30: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

XML Web Service ClientXML Web Service Client

Referenz auf XML Web Service Referenz auf XML Web Service setzensetzen Web Service-Aufruf über Proxy-KlasseWeb Service-Aufruf über Proxy-Klasse

Wird autom. aus WSDL generiertWird autom. aus WSDL generiert

Page 31: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

DemoDemo

XML Web Service ClientXML Web Service Client Tx mit XML Web ServiceTx mit XML Web Service

Page 32: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Pro/Con XML Web ServicesPro/Con XML Web Services ProPro

EinfachEinfach PlattformunabhängigkeitPlattformunabhängigkeit Transparent für Client-CodeTransparent für Client-Code

Einschränkungen bei DatentypenEinschränkungen bei Datentypen StrukturStruktur Größe (Übertragung als Text!)Größe (Übertragung als Text!)

ErweiterbarErweiterbar SOAP-Extensions/HeaderSOAP-Extensions/Header

ConCon Tx & Security nicht plattformübergreifendTx & Security nicht plattformübergreifend

Page 33: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

To the rescueTo the rescue

Web Services Enhancements (WSE)Web Services Enhancements (WSE) Erweiterung des XML Web Service Erweiterung des XML Web Service

FrameworkFramework BinärdatenübertragungBinärdatenübertragung SecuritySecurity RoutingRouting

Page 34: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Alternativen für VerteilungAlternativen für Verteilung .NET Enterprise Services (COM+).NET Enterprise Services (COM+)

„„Echter“ ApplikationsserverEchter“ Applikationsserver Heterogene TransaktionenHeterogene Transaktionen Rollenbasierte SecurityRollenbasierte Security Object PoolingObject Pooling Queued ComponentsQueued Components ......

System.NetSystem.Net Low-level APIsLow-level APIs

SocketsSockets TCP-/UDP-KlassenTCP-/UDP-Klassen

Page 35: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

FazitFazit

Mehrere Optionen für VerteilungMehrere Optionen für Verteilung .NET Remoting.NET Remoting XML Web ServicesXML Web Services .NET Enterprise Services.NET Enterprise Services

Verteilung ist einfachVerteilung ist einfach Serialisierbare ParameterklassenSerialisierbare Parameterklassen Definition entfernter KlasseDefinition entfernter Klasse (Fast) Transparent für Client & Server(Fast) Transparent für Client & Server

Page 36: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Fragen?Fragen?

Page 37: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

RessourcenRessourcen Tom Barnaby, Distributed .NET Programming in VB.NET, Tom Barnaby, Distributed .NET Programming in VB.NET,

APress 2002APress 2002 Ingo Rammer, Advanced .NET Remoting, APress 2002Ingo Rammer, Advanced .NET Remoting, APress 2002 Clemens Vasters, .NET Enterprise Services, Carl Hanser 2002Clemens Vasters, .NET Enterprise Services, Carl Hanser 2002

Page 38: NET Remoting und XML Web Services. Ralf Westphal ralfw@ralfw.de

Ihr Potenzial. Unser Antrieb.