Client-Server-Architektur - Das Fachgebiet Software Engineering

Werbung
Client-Server-Architektur
(DB-Anwendungen)
B.Sc. Oleg Schmelzle
[email protected]
Gliederung
• Geschichte
• Ausgangssituation
• Ziele
• Einordnung des Themas
• Monolithische Anwendungen
• Client Server Architektur
• Charakteristika von C/S-Architekturen (Verteilungsformen)
• Klassifikation des Clients
• 2-Schichten Client/Server-Architektur
• Beispiel einer Implementierung
• Mit dem Ziel zum Übergang zur n-Schichten-Architektur
• Zusammenfassung
Oleg Schmelzle: Client-Server-Architektur
2
Geschichte
• Ausgangssituation
• leistungsfähige Server sind teuer!
• Zunächst unter dem Aspekt: Kostenreduktion
• Optimierung von Geschäftsprozessen
• Ziele der Einführung:
•
•
•
•
•
•
Geschäftsfunktionen direkter zu unterstützen
Informationen näher zum Anwender zu bringen
Ersetzt großrechnerdominierte und zentralisierte Ansätze
Server entlasten und Rechenkapazität auf Clients verlagern
Bindet lokale und isolierte Rechner zusammen
Um zentralisierte Dienste in Anspruch zu nehmen
• (ggf. Hardware-/Softwarebetriebsmittel – z.B: PrintServer)
• Von der lokalen Datenbank auf den Database-Server
• Jeder Benutzer verfügt über gleiche Funktionen und gleiche Datenbank
Oleg Schmelzle: Client-Server-Architektur
3
Geschichte
• Weitere Ziele:
• Optimale Ausnutzung der Ressourcen
• Einsatz von kostengünstigeren Ressourcen (Workstations)
• Teure Ressourcen allen Nutzern anbieten
Æ Kooperation im Team ermöglichen
• Heute: Datenbanken sind unternehmensstrategische Kerntechnik
• Konzept der Anwendungsprogrammierung
• Von Flatfiles zu einer richtigen Datenbank
Æ Standardisierte Konzepte der Anwendungsentwicklung gefragt
Oleg Schmelzle: Client-Server-Architektur
4
Geschichte
• Wirtschaftliche Nachteile
• Kein Garant für Kosteneinsparungen
• Große Anzahl von Clients notwendig
• eine Firma mit 1000 Arbeitsplätzen muss die Kosten dafür aufbringen
• Neue Versionen der Software auf allen Clients zu verteilen
• z.B: schwierig bei Unternehmen mit mehr als 1000 Arbeitsplätzen
Æ die Verteilung ist unangenehm und frustrierend
Æ Verteilte Anwendungen erfordern einen höheren administrativen Aufwand
Æ Riesige Kosten für die nachfolgende Wartung der Clients
Æ Häufige Erneuerung der Clients notwendig
Æ Geschäftsfunktionen höher bewertet als Kostensenkung
Oleg Schmelzle: Client-Server-Architektur
5
Software-Architektur
• Warum braucht man Software-Architektur?
• Klassische Definition zur Software-Architektur
Booch, Rumbaugh, and Jacobson, 1999:
„An architecture is the set of significant decisions about the
organization of a software system, the selection of the structural
elements and their interfaces by which the system is composed,
together with their behavior as specified in the collaborations among
those elements, the composition of these structural and behavioral
elements into progressively larger subsystems, and the architectural
style that guides this organization - …“
(The UML Modeling Language User Guide, Addison-Wesley, 1999).
Oleg Schmelzle: Client-Server-Architektur
6
Software-Architektur
• Nichtfunktionale Anforderungen an die Software!
• Gesamtkosten der Lösung
• Time to market
Performance
• Performance
Time to market
• Wartbarkeit
Kosten
• Einfachheit
• Veränderbarkeit und Flexibilität
Wartbarkeit
Flexibilität
Einfachheit
Æ Beeinflussen den Aufbau eines SW-Systems
Quelle: Vorlesung, „Software Engineering für große Informationssysteme“, Wolfgang Keller, Technische Universität Wien, SS2002
Oleg Schmelzle: Client-Server-Architektur
7
Einordnung des Themas
Design
DesignPatterns
Patterns
Creational
CreationalPatterns
Patterns
Behavioral
BehavioralPatterns
Patterns
Structural
StructuralPatterns
Patterns
UML
UML
Hilfsmittel
OO
OOAnalyse
Analyse&&Design
Design
Beurteilung
Software-Metriken
Software-Metriken
OOP
OOP
Lösen Design-Probleme
Wichtiger
Bestandteil
Betrachtete
Programmiertechnik
Organisation und Methodik der
Anwendungsentwicklung
Client-Server-Architektur
Client-Server-Architektur
Software-Entwurf
Software-Entwurf
Oleg Schmelzle: Client-Server-Architektur
8
Monolithische Anwendungen
•
•
•
•
•
•
•
Traditionelle Enterprise-Anwendungen abgekapselte Programme
Nur als abgeschlossenes Ganzes nutzbar
Redundante Abbildung von Funktionalität
Fehlende Schnittstellen zur Partionierung
DatenbankNur eingeschränkte Zugriffe auf Daten und Prozeduren
Server
Relativ schwer zu warten
Kleine Änderungen ziehen Neustrukturierung
und Neukompilation nach sich.
• am Beispiel von zwei Java-Methoden
Netz
Gesamte Anwendungs- u.
Datenverwaltungslogik gemeinsam
mit Präsentation u. Steuerung
Oleg Schmelzle: Client-Server-Architektur
9
Client-Server-Architektur
• Warum braucht man Client/Server-Architektur?
• Moderne Datenbanksysteme basieren auf Client/Server-Architektur
• Client/Server-Architektur als eine Form der Schichten-Architektur
• Ausnutzung der lokal verfügbaren Rechenleistung
• Um zentrale Server zu entlasten
• Vereinigt Qualitäten verschiedener Plattformen
• Zentrale Verwaltung von Daten
• Eröffnet die Möglichkeit, Datenbestände zu integrieren
Æ Steigerung der Effizienz
Æ Vermeiden von Redundanzen
Oleg Schmelzle: Client-Server-Architektur
Datenbank
10
Client-Server-Architektur
• Ein Systemdesign
•
•
•
•
•
•
Organisation und Methodik der Anwendungsentwicklung
eine Strukturierungsmöglichkeit bei verteilter Informationsverarbeitung
Leitgedanke: Erforderliche Funktionen in Form von Diensten
verschiedene Dienste für eigene Funktionen
Dienste unabhängig von der physikalischen Verteilung
z.B: Dienste: Vertrieb, Rechnungswesen
• Probleme
• Konsistenz der Daten
• Aktualität der abgelegten Funktionen und Daten
• Unterschiede in Bezug auf Codierungen, Formate oder Datentypen
Æ Kompensation durch Schnittstellen
Oleg Schmelzle: Client-Server-Architektur
11
Allgemeine Aspekte der Client-Server-Architekturen
• Allgemein:
• Indetntifikation von Diensten
• Bildung von mehrfach verwendbarer Dienste
Æ Wiederverwendung
Æ Klassifikation von Diensten
• Auslagerung von mehrfach verwendeten Diensten
Æ Schafft Schnittstellen zur Verteilung
• Zentralisierung von diesen Diensten
Æ Reduktion der Mehrfachentwicklung
• Wichtige Rolle
• Partitionierung der Anwendung
• Funktionen der Clientanwendung und Datenbankservers aufteilen
Æ Aufteilung kann Performanz und Funktionalität beeinflussen
Oleg Schmelzle: Client-Server-Architektur
12
Client-Server-Architektur
• Komponenten müssen auf die Ressourcen aufgeteilt werden
• Ressourcen: Client und Server
• Unterscheidung der Trennung
Æ Klassifikation des Clients
Oleg Schmelzle: Client-Server-Architektur
13
2-Schichten-(Tier)-Client-Server-Architektur
• Aufteilung der Verarbeitung einer Anwendung auf zwei Teile
Æ Teilung von Datenbank und Logik + Anzeigefunktion
• Server (= Dienstleister, Backend-Komponente)
- Verwaltet die Datenbankzugriffe/Transaktionen
- Verwaltet Daten
• Client (= Dienstnutzer, Workstation o. Frontend) – Fat Client
- Business-Logik: Funktionen und Prozeduren
- Datenverwaltungslogik, Schnittstellen
- GUI: Anzeigefunktion
- Anwendungslogik, Präsentation, Steuerung
Möglichkeiten
des Clients:
- Präsentation
- Steuerung
Client
DatenbankServer
Möglichkeiten der Datenbank:
- Tabellen – „tables“
- Sichten - „view“
- Prozeduren – „procedures“
- Trigger
Datenbanken:
-Oracle, PostgreSQL, MySQL,
-IBM DB2
Oleg Schmelzle: Client-Server-Architektur
14
Verteilungsformen der Client-Server-Architektur
2.
3.
4.
5.
6.
Client
1.
Präsentation/GUI
Präsentation/GUI
Präsentation/GUI
Präsentation/GUI
Präsentation/GUI
Präsentation/GUI
Steuerung
Steuerung
Anwendungslogik
Steuerung
Steuerung
Steuerung
Anwendungslogik
Anwendungslogik
Anwendungslogik
Datenverwaltung
Datenverwaltung
Datenhaltung
Datenhaltung
Datenhaltung
Server
Steuerung
Anwendungslogik
Anwendungslogik
Datenverwaltung
Datenverwaltung
Datenverwaltung
Datenverwaltung
Datenhaltung
Datenhaltung
Datenhaltung
Datenhaltung
entfernte
Präsentation
Kooperative
Verarbeitung
verteilte
Präsentation
Anwendungslogik
Persistente
entfernte
Geschäftsregeln
Datenbank
(Fat-Client – 2 ½ -Tier) (Fat Client – 2-Tier)
Oleg Schmelzle: Client-Server-Architektur
verteilte
Datenbank
(fast Monolith)
15
Klassifikation des Clients
Benutzerinterface
GUI
Client
11
Anwendungslogik
22
33
Datenverwaltung
44
Server
Datenhaltung
55
66
1. Null Client – Verteilte Präsentation
•
•
•
•
•
Client übergibt nur Tastaturanschläge und Mausbewegungen an Server
Präsentationsfunktionen auf dem Client
Alle anderen Schichten auf dem Server
Im UNIX-Umfeld: X-Window-System (X-Terminals)
Nachteile:
– Hohes Transportvolumen von Ein- und Ausgaben über das Netz
Æ Datenvolumen an der Schnittstelle sehr groß
Æ Nur sinnvoll bei Auskunfts- und Anzeigesystemen
Oleg Schmelzle: Client-Server-Architektur
16
Klassifikation des Clients
Benutzerinterface
GUI
Client
Anwendungslogik
22
Datenverwaltung
Datenhaltung
Server
2. Thin Client – Entfernte Präsentation
• komplette GUI mit voller Funktionalität
• Steuerung auf dem Client
• mit Dialogsteuerungslogik und Prüffunktionen
• Aufgaben des Servers: Applikationslogik und Daten
Vorteile:
Æ Wiederverwendbarkeit der Anwendungslogik
Æ Verringerung der Wartbarkeit und Steigerung der Entwicklungseffizienz
– MVC-Konzept als Grundlage möglich
• auf dem Client nur die View, auf dem Server – Controller und Model
Oleg Schmelzle: Client-Server-Architektur
17
Klassifikation des Clients
GUI
Benutzerinterface
Client
Anwendungslogik
33
Datenverwaltung
Datenhaltung
Server
3. Kooperative Verarbeitung - Applet Client
• Teile der Applikationslogik laufen auf dem Client
• Bei großen Client/Server Anwendungen mit vielen Benutzern
• Aufteilung der Anwendungslogik auf LAN und Server
Vorteile:
Æ Definition der kleinsten gemeinsamen Schnittstelle
Æ Hohe Flexibilität in der Zuordnung der Funktionseinheiten
Nachteile:
• Redundante Speicherung von Prüftabellen
• Erlaubt Ablage von Daten auf der Client-Seite (z.B. Cookies)
Oleg Schmelzle: Client-Server-Architektur
18
Klassifikation des Clients
GUI
Benutzerinterface
Client
Anwendungslogik
Datenverwaltung
44
4. Fat Client – persistente Geschäftsregeln
•
•
•
•
Datenhaltung
Datenbank-Server
Häufiges Verteilungsmodell im Rahmen der 2-Schichten-Architektur
Erlauben anwendungsspezifischen Code in Form von Prozeduren
auf dem Server abzulegen
Gespeicherte Prozeduren sind indentifizierende Geschäftsregeln
Vorteile
– Geringe Netzbelastung Æ Zentralisierung von Geschäftsregeln
– Persistente Ablage in der Datenbank, Aufruf über API
– Stehen allen Anwendungen zur Verfügung
•
Nachteile
– Verlagerung von Funktionen auf Client-Seite
Æ Vermischen von Präsentation und Anwendungslogik Æ schlechte Wartbarkeit
– ggf. eine Abhängigkeit zum verwendeten DBMS
– Keine nebenläufige Transaktionen
Oleg Schmelzle: Client-Server-Architektur
19
Klassifikation des Clients
GUI
Benutzerinterface
Anwendungslogik
Datenverwaltung
Client
Datenhaltung
55 Server
5. Zugriff auf entfernte Datenbanken (Remote Database)
• Wie Punkt 4, nur
• Für Standard-Technologie im LAN
• Nicht realisierbar für große Datenmengen und häufige Zugriffe
– Da eine Trennung zw. Datenverwaltung und Daten
• Nachteile:
•
•
•
•
schlechte Wartung des Codes
Sehr hohes Netzvolumen
Keine Optimierungen möglich (keine geeignete Schnittstelle)
Keine Zusammenfassung mehrerer Zugriffe möglich (Prozeduren)
Oleg Schmelzle: Client-Server-Architektur
20
Klassifikation des Clients
GUI
Benutzerinterface
Anwendungslogik
Client
Datenverwaltung
Datenhaltung
66
Server
6. Zugriff auf verteilte Datenbanken
•
•
•
•
Wie Punkt 5, nur
Auf jedem Rechner ein DBMS-System installiert
Verwaltung verteilter Datenbestände
Nachteile:
– Redundante Speicherung der Daten
– Unikate Ablage auf dem Client
– Funktionen müssen vorhanden sein, um Verteilung und Aktualisierung der
Kopien abzudecken.
Oleg Schmelzle: Client-Server-Architektur
21
Konzepte der 2 bis n-Tier Client-Server-Architektur
GUI
GUI
N-GUIs
BusinessLogik
BusinessLogik
N-ServiceLogik
Datenbank
Datenbank
NDatenbanken
Monolith
2-Tier-Architektur
Fat-Client
N-Tier-Architektur
Intensive Arbeit
der Clients
File Server Architektur (Flatfile)
Database Server Architektur (2-Schichten)
3-Schichten Architektur weniger intensive
4-Schichten Architektur Arbeit der Clients
Oleg Schmelzle: Client-Server-Architektur
22
1.Tier: Client = GUI + Business Logik
•
•
•
•
•
Definiert Schnittstellen für Benutzerinteraktionen
Ziel: einfache zu bedienende Oberfläche
Lokale Bedienung vom Endanwender
Keine Trennung zwischen Darstellung und Anwendungslogik erlaubt
verschiedene Präsentationen der selbigen Serveranwendung nicht
möglich, da Business Logik auf dem Client
Æ kein MVC-Konzept möglich
• Gibt an den Server die Bearbeitung in Auftrag
• Nimmt Leistungen des Servers in Anspruch
•
•
•
•
Datenverwaltung
Rechnen
Drucken
Kommunikation
Oleg Schmelzle: Client-Server-Architektur
23
2.Tier: Server = Datenbank
• Aufgaben des Servers:
• Gibt Daten zu weiteren Aufbereitung an den Client weiter
• Kein spezieller Rechner, sondern ein Dienst/Prozess
• Jedoch heute häufig ein spezieller Rechner mit viel Speicher,
da begrenzte Leistung vorhanden
•
•
•
•
Bietet Services zur Verwaltung an
z.B.: Dienst: „Vertrieb“ – Kundendaten verwalten
Datenbankzugriffe/Transaktionen verwalten
Verwaltung von Daten, keine grafische Oberfläche
• Anforderungen an den Server:
• Hohe Ausfallsicherheit (ggf. Reserve-Server)
• Hohes Leistungsvermögen
Oleg Schmelzle: Client-Server-Architektur
24
Kommunikation
• Kommunikation basiert auf Transaktionen
• Transaktionen werden generiert auf dem Client
• Zur Verarbeitung dem Server überlassen
• Transaktion:
• Eine Folge logisch zusammenhängender Aktionen
• Übertragen nach dem Prinzip vollständig oder gar nicht (Rollback)
• Anbindung erfolgt über Netzwerk
• Größenordnung des Fat-Client-Systems nicht begrenzt
• Jedoch nur für Anwendungen mit wenig „Verkehr“ geeignet!
Æ Schlechte Performance
Oleg Schmelzle: Client-Server-Architektur
25
Architekturentwurf
• Gefahren für den Erfolg einer Client/Server-Architektur
• Schichtenmodell nicht berücksichtigen oder
• Keine saubere Trennung der Schichten
Æ Monolithische Anwendungen erstellen
• deren Daten nur auf dem Server installiert sind
Æ Wenig skalierbar!
• Client/Server Architektur als Client/Server-Datenbank (Fat Client)
• Nicht geeignet die redundante Abbildung von Geschäftsregeln zu unterbinden
• Keine hohe Flexibilität vorhanden
• für ständige Veränderungen der Geschäftsregeln
• Keine Mehrfachverwendung von Services auf der Ebene der Anwendungslogik
• In der Praxis verwendet man Kombinationen der Verteilungsformen
• oder n-Tier-Architekturen
Oleg Schmelzle: Client-Server-Architektur
26
Implementierung auf dem Client
• Beispiel einer 2 schichtigen Implementierung
void ladeDataForBoxSaison(String turnier) throws SQLException {
String str = "SELECT DISTINCT sa.name "
"FROM saison sa "
"JOIN turnier t "
"ON sa.turnier_id = t.id "
"WHERE t.name = ? ORDER BY sa.name";
PreparedStatement st = Login.con.prepareStatement(str);
st.setString(1, turnier);
ResultSet rs = st.executeQuery();
Vector executeString = new Vector();
while (rs.next()) {
executeString.add(rs.getString(1));
}
view.setSaison(executeString);
}
• Nachteil: schlecht wartbar!
Oleg Schmelzle: Client-Server-Architektur
27
Zusammenfassung
Nachteile des 2-Tier-Modells = Datenbank-Servers
• Keine Ausnutzung der Wiederverwendung
• Wiederverwendung nur durch Copy-Paste und Aufblähen des Codes
• Schafft neue Sicherheits- und Konsistenzprobleme
• Keine Sicherstellung der Datenintegrität im Mehrnutzerbetrieb
• Datenverwaltungslogik und Anwendungslogik im Client
• Einbettung der DB-Sprache in eine Programmiersprache
• Umfang des Codes im Client vergrößert
• Hohe Netzwerkbelastung durch Operationen
• die über viele Datensätze ausgeführt werden müssen
• Hohe Wartungs- und Installationskomplexität
Æ Monolithische Anwendungen vermeiden!!!
• Lösung des Problems:
• Verlagerung von Anwendungsfunktionen auf Server
• In Form von Prozeduren (stored procedures) (2 ½ Schichten-Modell)
Oleg Schmelzle: Client-Server-Architektur
28
Implementierug auf dem Client
Beispiel einer 2 ½ schichtigen Implementierung
public void saisonAnlegen(String saison, int turnier_ID)
throws SQLException {
String str = "{? = call insertSaisonJava (?, ?) }";
CallableStatement st = Login.con.prepareCall(str);
st.registerOutParameter(1, Types.INTEGER);
4.
st.setString(2, saison);
Präsentation/GUI
st.setInt(3, turnier_ID);
Steuerung
st.execute();
Anwendungslogik
int saison_ID = st.getInt(1);
}
Vorteile:
Verlagern der Datenverwaltungslogik auf den Server!
Æ Bessere und einfachere Wartbarkeit
Æ schnellere Laufzeiten und Antwortzeiten
Oleg Schmelzle: Client-Server-Architektur
Datenverwaltung
Datenhaltung
29
Stored Procedure auf dem Server
CREATE OR REPLACE FUNCTION insertSaisonJava(TEXT, INTEGER) RETURNS INTEGER AS ‚
DECLARE
v_saisonName ALIAS FOR $1;
v_turnier_id ALIAS FOR $2;
v_saison_id INTEGER;
BEGIN
• PL/pgSQL-Funktion, die auf dem
-- Saison-ID bestimmen
SELECT id
Server abgelegt wird
INTO v_saison_id
• Kopplungsarten:
FROM saison
WHERE UPPER(name) = UPPER(v_saisonName)
Prozedurale oder CallAND turnier_id = v_turnier_id;
Schnittstellen
IF v_saison_id IS NULL THEN
INSERT INTO saison(name, turnier_id)
VALUES (v_saisonName, v_turnier_id);
v_saison_id = currval(''gen_saison_id'');
END IF;
RETURN v_saison_id;
END;
' LANGUAGE plpgsql;
Oleg Schmelzle: Client-Server-Architektur
30
Vorteile von Stored Procedures
• Vorteile:
• Ausnutzung des Bausteinprinzips (Client/Server-Modell) od. (MVC-Model)
• Sehr gutes Strukturierungsmittel für größere Anwendungen
• Optimierung der Prozeduren möglich
Æ Performanceoptimierung
Æ Wiederverwendung
Æ Reduktion von Redundanzen
Æ Konzentration von Geschäftsregeln
• Prozeduren nur vom DBMS abhängig und nicht von externen
Programmiersprachen oder Betriebssystemumgebungen
• Ausführung der Prozeduren unter Kontrolle des DBMS
• zentrale Kontrolle der Prozeduren: redundanzfreie Darstellung relevanter
Aspekte der Anwendungsfunktionalität
• Rechtevergabe für Prozeduren (möglich einzelne Arbeitsplätze zu
spezifizieren)
Oleg Schmelzle: Client-Server-Architektur
31
Nachteile von Stored Procedures
• Nachteile:
• statische Einbettung: Vorübersetzer-Prinzip
• Call-Anweisungen zur Übersetzungszeit festgelegt
• Keine Änderung der Parameter mehr möglich
• dynamische Einbettung:
• Konstruktion von SQL-Anweisungen zur Laufzeit
• Andere Alternative zur Lösung des Problems
Æ Verwendung von 3 bis n-Schichten-Architektur
Oleg Schmelzle: Client-Server-Architektur
32
Multi-Tier-Architektur
• Weiterentwicklung der Client/Server-Architektur
• Allgemeine Logik auf Server auslagern
• Auf dem Client nur noch die Präsentationsschicht
• Mit seiner individueller Logik
• Heutiger Trend
• Verteilte Anwendungen als mehrschichtige Anwendungen
• Vorteile:
•
•
•
•
•
•
Bessere Skalierbarkeit bei den Servern
Einschluss der webbasierten Technologien
weniger Speicher und weniger Kosten für die Clients
Wiederverwendung der Anwendungslogik
Verringern der Wartbarkeit
Weitere Aspekte dieser Entwicklung im darauf folgenden Vortrag
Danke für die Aufmerksamkeit!
Oleg Schmelzle: Client-Server-Architektur
33
Herunterladen