Programmierung von Client/Server- Anwendungen

Werbung
Programmierung von Client/ServerAnwendungen
Grundlagen von Client/Server Systemen
WS08/09
Prof. Dr. Andreas Schmietendorf
1
Grundlagen von Client/ServerSystemen
§ Grundlegendes zum Client-Server Prinzip
§ Grundlagen verteilter Systeme
§ Begriff der Verteilungstransparenz
§ Kommunikation in verteilten Systemen
§ Mehrschichtige C/S-Anwendungen
§ Transaktionssicherheit
§ Kriterien zur Technologieauswahl
WS08/09
Prof. Dr. Andreas Schmietendorf
2
Grundlegendes zum Client/Server-Prinzip
WS08/09
Prof. Dr. Andreas Schmietendorf
3
Client-Server-Prinzip
§ Client (Kunde bzw. Auftraggeber)
- Fordert von einem Server eine bestimmte Dienstleistung an
- Wartet auf eine entsprechende Antwort
§ Server (Diensterbringer)
- Komponente die Aufträge von Clients entgegennimmt
- Bearbeitet die Aufträge entsprechend einer def. Logik
- Sendet die Antwort an den Client zurück
WS08/09
Prof. Dr. Andreas Schmietendorf
4
Client-Server-Prinzip
§ Problem der Synchronisation zwischen Client & Server
§ Client (Programm um Serververbindungen aufzubauen)
- Übernimmt den aktiven Teil des Verbindungsaufbaus
- Bestimmt den Zeitpunkt des Verbindungsaufbaus
- Häufig Benutzerprogramme um Dienste des Servers zugänglich
zu machen (aber auch Systemprogramme)
§ Server (häufig auch als daemon-Prozess bezeichnet)
- Häufig als Endlosschleife implementiert
- Wartet auf eingehende Verbindungsanforderung
WS08/09
Prof. Dr. Andreas Schmietendorf
5
Klassen von Servern I
§ Nebenläufiger Server
- Erzeugt für jeden Client einen neuen Prozess
- Genutzt bei langer und unbestimmter Verarbeitungszeit
- z.B. FTP oder HTTP-Server
§ Iterativer Server
- Können nur eine Anfrage zur selben Zeit beantworten
- Insbesondere bei Diensten mit kurzer Verarbeitungszeit
- z.B. Time Server
WS08/09
Prof. Dr. Andreas Schmietendorf
6
Klassen von Servern II
§ Verbindungsorientierter Server (synchron)
- Datenaustausch läuft in 3 Phasen: Verbindungsaufbau,
Datentransfer und Verbindungsabbau
- Rückmeldung über Erfolg bzw. Mißerfolg
- Vorteil: Sicherheit der Datenübertragung
§ Verbindungsloser Server (asynchron)
- Versendung in sich abgeschlossener Datenpakete
- Keine Signalisierung der Empfangsbereitschaft
- Keine Empfangsbestätigung
- Vorteil: höhere Übertragungsgeschwindigkeit
WS08/09
Prof. Dr. Andreas Schmietendorf
7
Klassen von Servern III
§ Zustandsbehafteter Server
- Speichert Informationen über Interaktionen mit dem Client
- Vorteil: höhere erreichbare Effizienz
- z.B.: Datenbankserver
§ Zustandsloser Server
- Keine Speicherung von Informationen
- Vorteil: Datenübertragung ist sicherer
- z.B.: HTTP Webserver
WS08/09
Prof. Dr. Andreas Schmietendorf
8
Server unter WindowsXP
WS08/09
Prof. Dr. Andreas Schmietendorf
9
Grundlagen verteilter Systeme
WS08/09
Prof. Dr. Andreas Schmietendorf
10
Unternehmensarchitekturen
Legacy S ystem e
E RP
K unden
Datenbank
WS08/09
E -C om merce
CRM
SO P
Produkt
Datenbank
Prof. Dr. Andreas Schmietendorf
Call Center
11
Definition und Abgrenzung
Ein verteiltes System ist eine Menge autonomer Rechner (keine
zentrale Steuerung), die gekoppelt sind, über Nachrichten
miteinander kommunizieren und damit verteilte Anwendungen
ermöglichen. Die Kommunikation sollte über offene wohl
definierte Schnittstellen erfolgen. Der Verteilungsaspekt sollte
für die Benutzer des Systems möglichst transparent sein.
WS08/09
Prof. Dr. Andreas Schmietendorf
12
Gegenstand einer Verteilung
§ Gemeinsame Nutzung von Daten
-
z.B. verteiltes Dateisystem
- Fehlertoleranz durch Replikation der Daten einer Datenbank
§ Gemeinsame Nutzung von Funktionen
-
z.B. email, Terminkalender, (Funktionsmodell)
§ Gemeinsame Nutzung von Rechenleistung (z.B. Grids)
§ Gemeinsame Nutzung von Geräten (z.B. Drucker)
WS08/09
Prof. Dr. Andreas Schmietendorf
13
Charakteristik verteilter Systeme I
§ Parallele und verteilte Aktivitäten
-
Notwendigkeit der Koordination und Synchronisation
- Separierung der Verantwortlichkeiten zwischen C/S-Komponenten
§ Kein gemeinsamer Speicher
- Interaktion durch Nachrichtenaustausch
- Services warten passiv auf eingehende Anforderungen
§ Aufbau sehr großer Systeme
- Quantität erfordert neue Qualitäten
- Umgang mit veränderten Anforderungen (z.B. Anzahl der Clients)
WS08/09
Prof. Dr. Andreas Schmietendorf
14
Charakteristik verteilter Systeme II
§ Fehler- und Ausfallwahrscheinlichkeit
- Problem der Fehlertoleranz
- Umgang mit Ausnahmesituationen
§ Heterogene Hard- und Software-Komponenten
- Bedarf einer standardisierten Vernetzung
- Bedarf an Schnittstellen-Standard
§ Gemeinsame Nutzung von Betriebsmittels
- Daten, Funktionen, Geräte, …
- Berücksichtigung sicherheitsrelevanter Aspekte
WS08/09
Prof. Dr. Andreas Schmietendorf
15
Begriff der Verteilungstransparenz
&
Vor- und Nachteile verteilter Systeme
WS08/09
Prof. Dr. Andreas Schmietendorf
16
Verteilungstransparenz I
Da die Nutzung verteilter Systeme in der Regel komplizierter ist
als die Nutzung eines einzelnen Rechners, wurden auf
unterschiedlichen Ebenen (Nutzerebene, Programmierebene,
Netzwerkebene, …) Mechanismen eingeführt, die den Aspekt der
Verteilung verbergen. Ein verteiltes System erscheint auf dieser
Grundlage wie ein zentrales System. In diesem Zusammenhang
wird auch von Verteilungstransparenz gesprochen.
Quelle: Oechsle, R.: Verteilte Systeme, in Taschenbuch der Informatik, Fachbuchverlag Leipzig
WS08/09
Prof. Dr. Andreas Schmietendorf
17
Verteilungstransparenz II
Transparency of location: The server is a process that can reside
on the same machine as the client or on a different machine
across a network. Client/server software usually masks the
location of the server from the clients by redirecting the service
calls when needed. A program can be a client, a server, or both.
Quelle: Orfali, R. et al.: The Essential Client/Server Survival Guide – Second Edition,
John Wiley & Sons, New York 1996
WS08/09
Prof. Dr. Andreas Schmietendorf
18
Arten der Verteilungstransparenz I
§ Zugriffstransparenz - der Zugriff auf lokale und entfernte
Ressourcen erfolgt in der gleichen Art und Weise.
§ Ortstransparenz – der Zugriff auf Ressourcen ist ohne
Kenntnis des Orts, an dem sich diese befinden, möglich.
§ Namenstransparenz - konsistente Verwendung von
Namen innerhalb des gesamten verteilten Systems.
§ Skalierungstransparenz - einfacher Erweiterbarkeit des
Systems ohne Auswirkungen auf die Gesamtstruktur.
Quelle: Oechsle, R.: Verteilte Systeme, in Taschenbuch der Informatik, Fachbuchverlag Leipzig
WS08/09
Prof. Dr. Andreas Schmietendorf
19
Arten der Verteilungstransparenz II
§ Replikationstransparenz – Erhöhung der Verfügbarkeit
und Fehlertoleranz durch gezielte Redundanz
§ Nebenläufigkeitstransparenz - Parallele Prozesse und
Benutzer arbeiten ohne gegenseitige Beeinflussung
§ Ausführungstransparenz - gegenüber dem Benutzer
bleibt der Ort einer Serviceausführung verborgen. Ggf.
besteht sogar die Möglichkeit einer Prozess-Migration.
Quelle: Oechsle, R.: Verteilte Systeme, in Taschenbuch der Informatik, Fachbuchverlag Leipzig
WS08/09
Prof. Dr. Andreas Schmietendorf
20
Vorteile verteilter Systeme
§ Kostenreduktion
§ Lokale Kontrolle und Verfügbarkeit
§ Maßgeschneiderte Konfiguration
§ Leichte Erweiterbarkeit
§ Ausfalltoleranz
§ Hohe Leistung durch Parallelität
§ Modulare Software
§ Herstellerunabhängigkeit
§ Übereinstimmung mit organisatorischen Strukturen
WS08/09
Prof. Dr. Andreas Schmietendorf
21
Nachteile verteilter Systeme
§ Hoher Bedienungs- und Wartungsaufwand
§ Probleme der Heterogenität
§ Schwierigkeit korrekte verteilte Software zu erstellen
§ Komplexität des Kommunikationssystems
§ Aufwand beim Übergang vom zentralisierten zum
dezentralen System
§ Sicherheitsprobleme, Gesamtkosten schwer
einschätzbar (ggf. versteckte Kosten)
WS08/09
Prof. Dr. Andreas Schmietendorf
22
Kommunikation in verteilten Systemen
WS08/09
Prof. Dr. Andreas Schmietendorf
23
Kommunikation in
verteilten Systemen
Klassifizierung von Kommunikationsverfahren:
§ Art der Nachricht
- Übertragung der gesamten Information
- Verweis auf Information bzw. Zugriffsrecht
§ Beteiligung des Betriebssystems
- Implizite Kommunikation (Prozesse regeln selbst)
- Explizite Kommunikation (unter Steuerung des BS)
§ Zahl der kommunizierenden Prozesse
- 1 : 1 à Unicast
- 1 : m à Broadcast
§ Synchronisation
WS08/09
Prof. Dr. Andreas Schmietendorf
24
Kommunikation in
verteilten Systemen
§ Blockierende und nicht blockierende Kommunikation
§ Synchrone Kommunikation
- Aufrufer ist blockiert bis ein Ergebnis eintrifft
- Vereinfacht das Design von Anwendungen
- Starke Kopplung zwischen Client und Server (schwierig im Netz)
- Ggf. Performanceeinbußen
§ Asynchrone Kommunikation
- “Fire and forget”
- Kein blockieren
- Ideal in weit verteilten Systemen
WS08/09
Prof. Dr. Andreas Schmietendorf
25
Kommunikation in
verteilten Systemen
Client
Web-Service
Client
request
Web-Service
request
doSomething
result
response
synchron
WS08/09
asynchron
Prof. Dr. Andreas Schmietendorf
26
Kommunikation in
verteilten Systemen
§ Mittel zur Interprozesskommunikation
- Gemeinsame Dateien – langsame implizite Kommunikation
- Gemeinsame Speicherbereiche (shared memory)
- Kanäle, Pipeplines (pipes, FIFO)
- Sockets (API zur direkten Nutzung des TCP/IP)
- Briefkästen (mailboxes bzw. message queues)
- Entfernte Prozedur- bzw. Methodenaufrufe
WS08/09
Prof. Dr. Andreas Schmietendorf
27
Kommunikation in
verteilten Systemen
§ Kommunikation über Sockets (Steckdose)
- De-facto-Standard einer Programmierschnittstelle
- Nutzung von TCP/IP und UDP/IP zur Kommunikation
- Kommunikationsendpunkt innerhalb einer Anwendung
- Adressierung von IP-Adresse und Portnummer
WS08/09
Prof. Dr. Andreas Schmietendorf
28
Kommunikation in
verteilten Systemen
§ Kommunikation via UDP (User Datagram Protocol)
- Verbindungsloses unzuverlässiges Transportprotokoll
- UDP-Client muss IP-Adresse und Portnummer des Servers
kennen auf dem der benötigte Dienst läuft
§ Kommunikation via TCP (Transmission Control Protocol)
- Zuverlässiges verbindungsorientiertes Protokoll
- TCP-Client muss IP-Adresse und Portnummer des Servers
kennen auf dem der benötigte Dienst läuft
WS08/09
Prof. Dr. Andreas Schmietendorf
29
Kommunikation in
verteilten Systemen
§ Nachteile einer Socket-basierten Kommunikation
- Bei UDP muss die Unzuverlässigkeit ausgeglichen werden
- Bei TCP muß der Verbindungsauf- und Abbau explizit
ausprogrammiert werden
- Explizite Berücksichtigung der Parallelität bei der
Serverprogrammierung
- Ggf. notwendige Formatierung der übertragenen Daten
- Paradigmenbruch zur prozeduralen bzw. objektorientierten
Programmierung
WS08/09
Prof. Dr. Andreas Schmietendorf
30
Begriff der Middleware
Unscharfer Begriff zur Beschreibung der benötigten Software um
zwischen Client- und Server-Komponenten kommunizieren zu
können. Wird auch als „glue“, also Kleister zwischen der Client- und
Server-Implementierung bezeichnet. Bezieht sich auf die
Möglichkeiten des Serviceaufrufs (API) sowie die Übertragung der
Anforderung bzw. Antwort über das verwendete Netzwerk.
In Anlehnung an: Orfali, R. et al.: The Essential Client/Server Survival Guide – Second Edition,
John Wiley & Sons, New York 1996
WS08/09
Prof. Dr. Andreas Schmietendorf
31
General Middleware
§ Berücksichtigte Aspekte:
-
Kommunikations-Stack
Verzeichnis- und Zeitdienste
Authentifizierung & Autorisierung
Verteilte Datei- und Druckservices
§ Beispiele:
-
DCE/RPC - Prozedurspezifikation
CORBA/RMI - Methodenspezifikation
MOM - Message Queue Systeme
Web Services (XML, SOAP, WSDL)
In Anlehnung an: Orfali, R. et al.: The Essential Client/Server Survival Guide – Second Edition,
John Wiley & Sons, New York 1996
WS08/09
Prof. Dr. Andreas Schmietendorf
32
Service-spezifsche Middleware
§ Berücksichtigte Aspekte:
- Bezieht sich auf einen speziellen Servicetypen
- Teilweise überlappend zu den allgemeinen Middlewareansätzen
§ Beispiele
- Datenbankspezifische Middleware (JDBC, ODBC, CLI, …)
- Groupware spezifische Middleware (SMTP, …)
- Transaktionsmonitore (JTS API, JTA, …)
- System Management spezifsiche Middleware (SNMP, CMIP, …)
In Anlehnung an: Orfali, R. et al.: The Essential Client/Server Survival Guide – Second Edition,
John Wiley & Sons, New York 1996
WS08/09
Prof. Dr. Andreas Schmietendorf
33
Mehrschichtige Client/Server-Systeme
WS08/09
Prof. Dr. Andreas Schmietendorf
34
Client/Server-Systeme in
mehreren Schichten (tiers) I
§ Client – z.B. Browser-basiert
§ Presentation Layer
- HTML(XML)
- JSP, Servlets, Applets
à Web Server (HTTP/HTTPS)
§ Application Logic Layer
- Servlets, Java-Klassen/Java-Beans
- Enterprise Java Beans (EJB & Ressource Adapter)
à Applikation Server (RMI, JDBC, JMS, …)
§ Ressource Management Layer (DBMS, FS, MOM, …)
WS08/09
Prof. Dr. Andreas Schmietendorf
35
Client/Server-Systeme in
mehreren Schichten (tiers) II
§ Monolitische Architekturen (typ. Enterprise-Systeme)
§ 2-Tier-Architecture (Trennung von Client und Server)
- Client à Arbeitsplatz mit hohen Ressourcen-Anforderungen
§ 3-Tier (3-schichtige C/S-Architekturen)
- 1.Tier: Graphische Benutzeroberfläche (GUI)
- 2.Tier: Geschäftslogik (Service-Logik)
- 3.Tier: Datenbanken (Oracle, Informix, SQL-Server)
§ Multi-Tier (Mehr-Schichten-Architekturen)
WS08/09
Prof. Dr. Andreas Schmietendorf
36
Client/Server-Systeme in
mehreren Schichten (tiers) III
Server A
DB-1
Client mit GUI
Server B
Client mit GUI
DB-2
Server C
Client mit GUI
Zwei-Schichten-Architektur
WS08/09
DB-3
Prof. Dr. Andreas Schmietendorf
37
Client/Server-Systeme in
mehreren Schichten (tiers) IV
Server A
DB-1
Client mit GUI
Server B
Client mit GUI
Anwendungsserver
DB-2
Server C
Client mit GUI
Drei-Schichten-Architektur
WS08/09
DB-3
Prof. Dr. Andreas Schmietendorf
38
Client/Server-Systeme in
mehreren Schichten (tiers) V
DBS
DB-1
Client mit GUI
DBS
Browser
WebServer
ApplikationServer
Browser
z.B. CORBA
Mehr-Schichten-Architektur
WS08/09
DB-2
IntegrationServer (Wrapper)
Prof. Dr. Andreas Schmietendorf
LegacyAnwendung
39
Client/Server-Systeme in
mehreren Schichten (tiers) VI
Schnittstellen zwischen den Schichten einer C/S-Anwendung
müssen einem Standard entsprechen, um Teile des
Gesamtsystems verändern zu können ohne die gesamte
Anwendung verändern zu müssen.
WS08/09
Prof. Dr. Andreas Schmietendorf
40
Client/Server-Systeme in
mehreren Schichten (tiers) VII
WS08/09
Prof. Dr. Andreas Schmietendorf
41
Client/Server-Systeme in
mehreren Schichten (tiers) VIII
WS08/09
Prof. Dr. Andreas Schmietendorf
42
Grundlegende Begriffe der
Transaktionsverwaltung
WS08/09
Prof. Dr. Andreas Schmietendorf
43
Transaktionsbegriff
Eine Transaktion (transaction) ist eine Folge von Operationen
(z.B. elementare SQL-Befehle), die zu einer unteilbaren
(atomaren) Ausführungseinheit zusammengefasst werden und
die Datenbank von einem konsistenten Zustand in einen neuen
konsistenten Zustand überführen.
WS08/09
Prof. Dr. Andreas Schmietendorf
44
Transaktionskonzept
Zur Unterstützung des Multiuserbetriebs werden im Rahmen von
DBMS Transaktionen verwendet. Ein Datenbanksystem garantiert
so die Ausführung von Transaktionen unter Berücksichtigung der
so genannten ACID-Bedingungen. Dabei handelt es sich um die
Eigenschaften der Atomarität (atomicity), Konsistenz (consistency),
Isolation (isolation) und Dauerhaftigkeit (durability).
WS08/09
Prof. Dr. Andreas Schmietendorf
45
Transaktion - Beispiel
Täglich werden durch die Kunden einer Bank tausende
Überweisungen initiiert. Dabei gibt es sowohl die Forderungen
nach kurzen Antwortzeiten, als auch eines korrekten
Geldtransfers.
Zusammenfassung der notwendigen Operationen für eine
Geldüberweisung, d.h. Abbuchen vom einem Konto und
Überweisen auf ein anderes Konto.
WS08/09
Prof. Dr. Andreas Schmietendorf
46
Transaktion - Beispiel
Inkorrekter Ablauf von zwei Überweisungen
Zeit
t1
Überweisung 1. Kunde
Überweisung 2. Kunde
x = read (zielKonto);
t2
t3
y = read (zielKonto);
x = x + 25000;
t4
y = y + 250000;
t5
write (zielKonto, y);
t6
write (zielKonto, x);
Quelle: Gumm, H. P.; Sommer, M.: Einführung in die Informatik, Oldenbourg-Verlag
WS08/09
Prof. Dr. Andreas Schmietendorf
47
A - Atomarität
Änderungen einer Transaktion werden entweder vollkommen
oder gar nicht in die Datenbank eingebracht. Auf dieser
Grundlage kann die Anwendungsprogrammierung stark
vereinfacht werden, da Fehlerzustände (z.B. Rechnerausfall)
nicht im Programm abgefangen werden müssen.
WS08/09
Prof. Dr. Andreas Schmietendorf
48
C - Konsistenz
Eine Transaktion überführt die Datenbank von einen konsistenten
Zustand in einen anderen konsistenten Zustand. Der konsistente
Zustand einer Datenbank erfordert die Einhalten aller definierten
Integritätsbedingungen. Innerhalb der Transaktion können
Integritätsbedingungen temporär verletzt werden.
WS08/09
Prof. Dr. Andreas Schmietendorf
49
I - Isolation
Keine gegenseitige Beeinflussung parallel ausgeführter
Transaktionen, d.h. zwischen parallel ausgeführten Transaktionen
besteht keine direkte Kommunikation. Das Ergebnis einer
Transaktion kann nicht durch andere zum gleichen Zeitpunkt
ausgeführte Transaktionen beeinflusst werden.
WS08/09
Prof. Dr. Andreas Schmietendorf
50
D - Dauerhaftigkeit
Nach einem erfolgreichen Abschluss einer ausgeführten
Transaktion werden alle Änderungen dauerhaft in der Datenbank
gespeichert. Sollte es zu einer Störung kommen, werden die
Ergebnisse von Transaktionen durch entsprechende RecoveryMechanismen wieder hergestellt.
WS08/09
Prof. Dr. Andreas Schmietendorf
51
X/Open Transaktionssystem
§ X/Open-Modell für Transaktionssysteme
§ Aufruf von Ressourcen-Managern
im Rahmen einer Transaktion
§ DBS als möglicher Typ eines
Ressoucen-Managers
§ Transaktionsmanager führt
Transaktionsverwaltung durch
WS08/09
Prof. Dr. Andreas Schmietendorf
52
Kriterien zur Technologieauswahl
im Kontext eines verteilten Systems
WS08/09
Prof. Dr. Andreas Schmietendorf
53
Auswahlkriterien I
Technische Aspekte
§ Anforderungen des Anwendungssystems
§ Unterstützte Standards
§ Unterstützte Daten- und Funktionsmodelle
§ Angebotene Schnittstellen (Interfaces)
§ Art der abzuspeichernden Informationen
§ Mengengerüste
§ Performanceeigenschaften (TPC-Benchmarks)
WS08/09
Prof. Dr. Andreas Schmietendorf
54
Auswahlkriterien II
Integrative Aspekte
§ Skills des vorhandenen Personals
§ Bereits eingesetzte Technologien
§ Unterstützung durch das Service Management
- Softwareverteilung
- Backup
- Konfiguration Management
§ Ggf. vorhandene Rahmenverträge mit Lieferanten
§ Durchgängigkeit der Entwicklungsumgebung (z.B. MDA)
WS08/09
Prof. Dr. Andreas Schmietendorf
55
Auswahlkriterien III
Kommerzielle Aspekte
§ Kosten – Invest und Wartung/Pflege
§ Verbreitung einzusetzender Technologien am Markt
§ Potential des Anbieters
- Eingehen auf eigene Anforderungen
- Implementierung marktgängiger Funktionalitäten
§ Support-Organisation
- Sitz des Help Desk
- Unterstützte Landessprachen
§ Einschätzung externer Analysten (z.B. Gartner Group)
WS08/09
Prof. Dr. Andreas Schmietendorf
56
Auswahlkriterien IV
Quelle: Massimo Pezzini: Application Server Scenario: From Stovepipes to Services, Gartner 2002
WS08/09
Prof. Dr. Andreas Schmietendorf
57
Auswahlkriterien V
Quelle: Massimo Pezzini: Application Server Scenario: From Stovepipes to Services, Gartner 2002
WS08/09
Prof. Dr. Andreas Schmietendorf
58
Herunterladen