Upload
anneken-kastner
View
108
Download
0
Embed Size (px)
Citation preview
.NET Remoting und .NET Remoting und XML Web ServicesXML Web Services
.NET Remoting und .NET Remoting und XML Web ServicesXML Web Services
Ralf WestphalRalf [email protected]@ralfw.de
ArchitekturtriebfedernArchitekturtriebfedern
WartbarkeitWartbarkeit LeistungLeistung IntegrationIntegration
RobustheitRobustheit StabilitätStabilität SicherheitSicherheit
Triebfeder WartbarkeitTriebfeder Wartbarkeit
WunschlisteWunschliste FlexibilitätFlexibilität TransparenzTransparenz Einfaches DeploymentEinfaches Deployment
LösungLösung SchichtungSchichtung ModularisierungModularisierung
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
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
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
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
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
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
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
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
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
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
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
DemoDemo
Serialierbarer TypSerialierbarer Typ „„Chunky statt chatty“ InterfaceChunky statt chatty“ Interface
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
DemoDemo
Entfernter TypEntfernter Typ Transparent ProxyTransparent Proxy
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+)
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
DemoDemo
Verteilte Anwendung mit Client und Verteilte Anwendung mit Client und ServerServer
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
DemoDemo
SingleCallSingleCall SingletonSingleton Client Activated ObjectClient Activated Object
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
Pro/Con RemotingPro/Con Remoting
ProPro SimpelSimpel ErweiterbarErweiterbar max. Transparenzmax. Transparenz
ConCon Keine SecurityKeine Security Keine TransaktionenKeine Transaktionen Fixer ThreadPoolFixer ThreadPool
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))
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
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
DemoDemo
XML Web Service definierenXML Web Service definieren
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
DemoDemo
XML Web Service ClientXML Web Service Client Tx mit XML Web ServiceTx mit XML Web Service
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
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
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
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
Fragen?Fragen?
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
Ihr Potenzial. Unser Antrieb.