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