69
Architektur von Web- Datenbanksystemen

Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

Embed Size (px)

Citation preview

Page 1: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

Architektur von Web-Datenbanksystemen

Page 2: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

2

© Prof. T. Kudraß, HTWK Leipzig

Schichtenarchitektur

Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

Logische Schichten vs. physische Schichten Physisch:

– Aufteilung der Anwendung auf Client, DB-Server und Middleware

– Middleware: ein Webserver oder mehrere Application Server

Logisch:– Einordung in einzelne Schichten hinsichtlich der

Aufgabenverteilung– Gängiges Modell: 3-Schichten-Architektur

Page 3: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

3

© Prof. T. Kudraß, HTWK Leipzig

3-Schichten-Architektur

Präsentationsschicht– Visualisierung der Dokumente auf Anwenderseite– Keine Anwendungslogik zur Erstellung der Seiten (thin clients)– Client = Rechner mit Browser einschl. PlugIns

Anwendungslogikschicht– Weiterleitung von Anfragen des Client an den entsprechenden

Dienst, Datenbankanfragen, Erstellung dynamischer Seiten und Zurücksendung an den Client

– Weitere Aufgaben: Verwaltung von Transaktionen Lastverteilung der Anfragen Sicherheitsaufgaben

Datenhaltungsschicht– Speicherung der Daten + Datenzugriff– Typischerweise Datebanksystem (auch Dateien möglich)

Page 4: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

4

© Prof. T. Kudraß, HTWK Leipzig

3- und 4-Schichtenarchitekturen

Page 5: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

5

© Prof. T. Kudraß, HTWK Leipzig

Klassifikation von Web-Informationssystemen (WebIS)

unterschiedliche Komplexitätsgrade Anwendungsgebiet bestimmt Architektur in komplexen WebIS mehrere Architektur-

varianten gleichzeitig vorhanden Varianten:

1. Statische WebIS2. WebIS mit DB-Unterstützung3. Applikationsorientierte WebIS4. Ubiquitäre WebIS5. Portal-orientierte WebIS

Page 6: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

6

© Prof. T. Kudraß, HTWK Leipzig

Statische WebIS

Dokumente in statischer Form auf Webserver abgelegt Basis: HTTP-Protokoll: Web-Client <-> Web-Server einfache Interaktivität (CGI, HTML-Formulare) Vermischung von Präsentation, Inhalt und Hypertext manuelle Pflege, Gefahr von Inkonsistenzen

Page 7: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

7

© Prof. T. Kudraß, HTWK Leipzig

Statische WebIS: Bewertung

Vorteile– Einfachheit und Stabilität– niedrige Antwortzeiten

Einsatzgebiet– geringe Anzahl von Webseiten– niedrige Änderungsfrequenz– Heterogenität der Webseiten hinsichtlich

Hypertextstruktur und Präsentation

Page 8: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

8

© Prof. T. Kudraß, HTWK Leipzig

WebIS mit DB-Unterstützung

Vorteile – vereinfachte Aktualisierung der Webseiten– hoher Grad an Interaktivität

strukturierte Suche auf Basis von DB-Anfragen dezentrale Aktualisierung des Datenbestandes

Nachteile– Verwaltung der Abbildungsvorschriften für

Zusammenstellung der Webseite erforderlich

Web-Client Web-Server

DBS-Server

Präsentation

Inhalt

Page 9: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

9

© Prof. T. Kudraß, HTWK Leipzig

WebIS mit DB-Unterstützung (Forts.)

Motivation (Einsatzgebiet z.B. Produktkatalog): – große Anzahl von Webseiten– hohe Änderungsfrequenz– Homogenität der Webseiten hinsichtlich Hypertext-

struktur und Präsentation– Nutzung existierender (Legacy)Datenbestände

Weiterführung – Integration heterogener verteilter Daten

strukturierte Daten (Datenbanken) unstrukturierte Daten (Textdokumente) semistrukturierte Daten (HTML-Dateien)

Page 10: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

10

© Prof. T. Kudraß, HTWK Leipzig

Applikationsorientierte WebIS

Funktionalität des Applikations-Servers– DB-Anbindung– Transaktionsmanagement– Sicherheit– Lastausgleich– Caching

Web-Client Web-Server

DBS-Server

PräsentationApplikationslogik

Applikations-Server

Inhalt

IIOP

Page 11: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

11

© Prof. T. Kudraß, HTWK Leipzig

Applikationsorientierte WebIS (Forts.)

Produkte– kombinierte Web-/Applikationsserver: Coldfusion, Netscape

Application Server, Oracle Internet Application Server– Enterprise-Application-Server: WebSphere (IBM), WebLogic

(Bea Systems)

Motivation– hohe zu erwartende Server-Last, bei großer Anzahl gleich-

zeitig zugreifender Clients– komplexe Geschäftslogik, z.B. bei Online-Kauf oder Online-

Buchung)– hohe Transaktionsorientiertheit, z.B. bei Online-Banking-

Anwendungen

Page 12: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

12

© Prof. T. Kudraß, HTWK Leipzig

Ubiquitäre WebIS

Ziel– richtigen Dienst – zum richtigen Zeitpunkt– am richtigen Ort– in der richtigen Form

anbieten

Web-Client Web-Server

DBS-Server

PräsentationApplikationslogik

Applikations-Server

Inhalt Anp

assu

ngs-

kom

pone

nte

Page 13: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

13

© Prof. T. Kudraß, HTWK Leipzig

Ubiquitäre WebIS (Forts.)

Produkte– Oracle Wireless Application Server– WebSphere Transcoding Publisher (IBM)

Motivation– Zugriff auf die im WebIS präsentierte Information nicht nur

über WWW, sondern z.B. auch über mobile Endgeräte– Anpassung der Inhalte und/oder der Präsentationsaspekte an

Benutzerprofile (Personalisierung)– Realisierung lokations/zeitabhängiger Dienste, wie z.B.

lokationssensitiver Museumsführer

Page 14: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

14

© Prof. T. Kudraß, HTWK Leipzig

Portal-orientierte WebIS

Web-Client Web-Server

Daten 1

Präsentation

Aggregation

Inhalt

Applikationslogik

Portlet 1

Web Service 1

Portlet 2

Web Service 2

Portlet 3

Web Service 3

Daten 2 Daten 3

Architektur eines portal-orientierten WebIS

Page 15: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

15

© Prof. T. Kudraß, HTWK Leipzig

Portalorientiertes WebIS (Forts.)

Große Anwendungen mit vielen Diensten erfordert portalorientierte Architektur

Portal = zentraler Zugang zu einem Anwendungssystem, welches verschiedene Dienste und Anwendungen integriert und z.B. Funktionen zur Suche oder Personalisierung bereitstellt

Portlets = Teile von Dokumenten aus unterschiedlichen Quellen

Zusammensetzen von Portlets zu ganzen Seiten, die über Web-Server an den Client verschickt werden

Einsatz von Web Service-Technologien, die den Aufruf von Diensten über definierte Schnittstellen ermöglichen

Vorteil hohe Flexibilität bei der Verwendung der Portlets

Page 16: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

16

© Prof. T. Kudraß, HTWK Leipzig

HTTP-Protokoll

Hypertext Transfer Protokoll (HTTP) für Kommunikation zwischen Web-Server und Client

Funktionsweise: Request-Response-Prinzip– HTTP-Request: URL – HTTP-Response: gewünschte Dokument

Verbindungs- und statusloses Protokoll: keine dauerhafte Verbindung, keine Speicherung des Zustands zwischen Client und Server

Methoden zur Anforderung eines Dokuments– GET: Client fordert die angegebene URL an, wobei eventuelle

Parameter im String der URL mitgegeben werden– POST: Client schickt Daten an den Server, wobei diese nicht in der

URL sondern direkt im Header der Anforderung übergeben werden– HEAD, PUT, DELETE: keine Bedeutung für die Entwicklung von

Webapplikationen

Page 17: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

17

© Prof. T. Kudraß, HTWK Leipzig

HTTP Request

1. Zeile: Methode, Ressource, Version des HTTP-ProtokollsGET http://www.test.de/index.html HTTP/1.0

Mehre Message Header, die zusätzliche Informationen übertragen

– Accept: MIME-Typen, die der Client verarbeiten kann– Host: Domainname des Webservers– Referer: URL der Herkunftsressource– User-Agent: Name und Version des Clientbrowsers– Authorization: Benutzername und Paßwort des Clients,

Authorization Header als Reaktion auf WWW-Authenticate-Header des Servers zum Zugriff auf das gewünschte Dokument

Bei Methode POST: Anhängen von Daten (aus Formular) an die Headerinformationen, z.B.Eingabe1=Strasse&Eingabe2=54455

Page 18: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

18

© Prof. T. Kudraß, HTWK Leipzig

HTTP Response

Status– Version des verwendeten HTTP-Protokolls– Statuscode– textuelle Beschreibung des Status Beispiel:

Optionale Response-Header– Server: Name und Version des Webservers– WWW-Authenticate: Verlangt vom Client eine Authentifizierung und

gibt u.a. das Authentifizierungsschema an– Location: URL der Ressource

Eigentliches Dokument (falls eines zurückgeliefert werden soll)<HTML><HEAD><TITLE>Titelzeile</TITLE></HEAD><BODY> …

Page 19: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

19

© Prof. T. Kudraß, HTWK Leipzig

Anbindungsarchitekturen

Page 20: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

20

© Prof. T. Kudraß, HTWK Leipzig

Anbindungsarchitekturen - Varianten

1. Anwendung mit statischen Seiten: Datenbankinhalte manuell einarbeiten, keine Kommunikation mit der Datenbank

2. Realisierung der Webanwendung als CGI-Programm: Datenbankzugriff vom Programm. Die fertige HTML-Seite wird zum Client übertragen.

3. Applets werden zum Client übertragen und dort ausgeführt. Die Kommunikation mit der DB findet dabei direkt mit dem Client statt, z.B. über JDBC (nicht HTTP!)

4. Server-APIs: serverseitige Erweiterungen für den Zugriff auf die Datenbank und den Aufbau der HTML-Datei.

5. Einsatz von Servlets in der Serverumgebung, erfordert spezielle Servlet Engine und eine Java Virtual Machine (JVM). DB-Zugriff erfolgt z. B. über die JDBC-API oder direkt, wenn Servlet Engine im Datenbankserver integriert ist.

6. Auslagerung komplexer Programmlogik auf einen Applikationsserver. Dieser realisiert auch die Verbindung zur Datenbank, wobei DB-Verbindungen zur Performance-Verbesserung zwischengespeichert werden.

7. Erstellung der HTML-Dateien über einen Präprozessor: Verarbeitung von XML- und XSL-Dateien (siehe auch Vorlesung XML-Datenbanken / 7. Semester)

Page 21: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

21

© Prof. T. Kudraß, HTWK Leipzig

Anbindungstechnologien

Page 22: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

22

© Prof. T. Kudraß, HTWK Leipzig

Anforderungen an eine DB-Server-Anbindung

Integrierte Benutzerschnittstelle– Verschiedene Medientypen– Browser-Darstellung, keine proprietären Formate

Interaktivität– erfordert zustandswahrende Verbindung

Konsistenz und Datenintegrität Performance Sicherheit

– Programme, die von Web-Server geladen werden Skalierbarkeit Offenheit

– Konflikt mit Performance (Java vs. Microsoft)

Page 23: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

23

© Prof. T. Kudraß, HTWK Leipzig

Client-Seitige DB-Anbindungen

Prinzip:– Übertragung von Java Applets (plattformunabhängiger

Bytecode) vom Web-Server zum Client– Direkte Verbindung zum Datenbank-Server über JDBC– Ausführung der Clients durch eine Java Virtual Machine (JVM)

Web-Client Web-Server

DBS-Server

JVMApplet

JDBC

Page 24: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

24

© Prof. T. Kudraß, HTWK Leipzig

Serverseitige DB-Anbindung

Generierung von HTML-Seiten im Server und Zurücksenden an den Client

Daten aus der Datenbank können in HTML-Dokument enthalten sein

2 Ansätze (je nach Generierungsmethode)– Externe Programme: erzeugen den HTML-Code des

Dokuments (HTML-Generierende Anwendungen)– Erweiterung der Serverfunktionalität: Anreicherung des HTML-

Codes um spezifische Funktionalitäten zum Einfügen von dynamischem Inhalt ins Dokument (HTML-Erweiterungen)

Page 25: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

25

© Prof. T. Kudraß, HTWK Leipzig

Serverseitige Anbindung: Externe Programme

Page 26: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

26

© Prof. T. Kudraß, HTWK Leipzig

Serverseitige Anbindung: Erweiterung der Serverfunktionalität

Page 27: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

27

© Prof. T. Kudraß, HTWK Leipzig

Serverseitige Anbindung

Dokumente können nur die Darstellungsmöglichkeiten von HTML nutzen

Überprüfung von Benutzereingaben durch clientseitige Skriptsprache (Java Script) oder nach Senden der Anfrage

Anzeige der Seiten auf beliebigem Browser, keine zusätzliche Installation von Programmen auf Clientseite erforderlich

DB-Verbindung wird nur von Seiten des Web- oder Applikationsservers aufgebaut, keine Verbindung von der Clientseite über das zustandslose HTTP-Protokoll

mehrschrittige Anfragen eines Clients an die DB nur über Umwege realisierbar

Page 28: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

28

© Prof. T. Kudraß, HTWK Leipzig

Serverseitige Technologien im Überblick

CGI (am Beispiel Perl) Web-Server API Server Side Include (SSI) Active Server Page (ASP) PL/SQL und PL/SQL Server Page (PSP) PHP Übergreifende Technologien

– Java Database Connectivity (JDBC)– SQLJ– Java und J2EE (Enterprise Java Beans)

Java Servlet Java Server Page (JSP)

Page 29: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

29

© Prof. T. Kudraß, HTWK Leipzig

Common Gateway Interface (CGI)

Keine Programmiersprache Kann mit allen Sprachen realisiert werden, die Zugriff

auf Umgebungsvariable sowie die Standardein- und ausgabe erlauben (z.B. Perl, C, C++)

Standardisierte Schnittstelle für die Kommunikation zwischen Web-Server und externen Programmen (Übergabe von Daten von HTML-Seiten an Programme)

Aufbau– Verschiedene Umgebungsvariablen für die Datenübertragung

Web-Server CGI-Programm– Variablen mit festem Namen bei jeder Client-Anfrage neu

initialisiert und vom CGI-Programm für die HTML-Generierung nutzbar

Page 30: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

30

© Prof. T. Kudraß, HTWK Leipzig

Umgebungs-variablen einer CGI-Anwendung

Page 31: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

31

© Prof. T. Kudraß, HTWK Leipzig

Allgemeiner Ablauf der Programmausführung bei CGI

Allgemeines Prinzip:

Client (Anwender) Server-Rechner

HTML-Dateimit Formular Daten-

bank

WWW-Server

automatischerzeugteHTML-Datei

CGI-Skript

automatischerzeugteHTML-Datei

1. Formularabschicken

übertragen

2. CGI-Skriptaufrufen

5. HTML-Dateiübertragen

3. DB abfragenAbfrage-Report der DB auswerten

4. HTML-Datei aus Abfrage-Report erzeugen

Page 32: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

32

© Prof. T. Kudraß, HTWK Leipzig

Ablauf der Verarbeitung bei Ablauf eines CGI-Programms

Page 33: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

33

© Prof. T. Kudraß, HTWK Leipzig

CGI Bewertung

Vorteile:– Unterstützung durch alle Web-Server– anforderungsspezifisch programmiert– schnell und flexibel

Nachteile:– Pro Interaktion Start eines CGI-Prozesses / Aufbau einer DB-

Verbindung (Verbesserung FastCGI)– Kein Transaktionskonzept zwischen Client und WWW-Server,

Problem der Realisierung von Zuständen– Logische Formular-Eingabefehler erst im CGI-Programm erkannt– Sicherheit (da Zugriff auf Betriebssystem-Ressourcen des Web-

Servers)– Aufwendige Programmerstellung– Formatierung des Dokuments problematisch, da generiert

Page 34: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

34

© Prof. T. Kudraß, HTWK Leipzig

Active Server Pages (ASP)

HTML Dokument mit eingebetteten Anweisungen in VBScript oder JScript

ASP Bestandteil des Internet Information Server große Funktionalität durch Mächtigkeit der Skript-

Sprachen (aber geringer als Java/C++) Einbettung von SQL in Skriptsprache (DB-Zugriff über

ODBC und ADOs) Session Management mit Hilfe von Session-IDs (von

Cookies übertragen) Zugriff auf Formular- und Umgebungsvariablen

Page 35: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

35

© Prof. T. Kudraß, HTWK Leipzig

Ablauf der Verarbeitung mit PL/SQL

Entwicklungsunterstützung durch WebServer Developer‘s Toolkit (Menge von Packages)

HTP (HyperText Procedures) HTF (HyperText Functions)– erleichtern die Generierung von HTML-Tags aus

PL/SQL heraus

OWA_UTIL– Dienstfunktionen für eine bequemere Generierung

von HTML-Output

Page 36: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

36

© Prof. T. Kudraß, HTWK Leipzig

Toolkit - Beispiele

htp.title(‘My First Page Title‘);htp.title(‘My First Page Title‘);PL/SQL

HTML<TITLE>My First Page Title</TITLE><TITLE>My First Page Title</TITLE>

Funktionsauruf title:=htf.title(‘My First Page Title‘)title:=htf.title(‘My First Page Title‘)

Verschachtelung

htp.center(htf.header(1,‘My First HTML Header - Level 1‘));htp.center(htf.header(1,‘My First HTML Header - Level 1‘));

<CENTER<<H1>My First HTML Header - Level 1</H1></CENTER><CENTER<<H1>My First HTML Header - Level 1</H1></CENTER>

Page 37: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

37

© Prof. T. Kudraß, HTWK Leipzig

Toolkit - Überblick

1. Print-Prozeduren2. Struktur-Tags3. Head-Related Tags4. Body Tags5. List Tags6. Character Format Tags7. Form Tags8. Table Tags9. OWA_UTIL Package

Page 38: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

38

© Prof. T. Kudraß, HTWK Leipzig

Beispiel: Web Server Developer Kit

CREATE OR REPLACE PROCEDURE home_page AS BEGIN

htp.htmlOpen; htp.headOpen;htp.title(‘My home page‘);htp.headClose;htp.bodyOpen;htp.print (‘This is the home page of ‘|| user ||‘generated on ‘ || sysdate || ‘.‘);htp.bodyClose;htp.htmlClose;

END;

CREATE OR REPLACE PROCEDURE home_page AS BEGIN

htp.htmlOpen; htp.headOpen;htp.title(‘My home page‘);htp.headClose;htp.bodyOpen;htp.print (‘This is the home page of ‘|| user ||‘generated on ‘ || sysdate || ‘.‘);htp.bodyClose;htp.htmlClose;

END;

Page 39: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

39

© Prof. T. Kudraß, HTWK Leipzig

PL/SQL Server Pages (PSP)Grundidee

– Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz von PL/SQL-Anweisungen

– Server-Side Scripting (Generierung der Seiten im DB-Server - nicht im Webserver)

– Basiert auf PL/SQL Web Toolkit– Bestandteil von Oracle Application Server (OAS)

und Oracle WebDB– Einbindung dynamischer Inhalte durch PL/SQL-

Skripte, durch spezielle Tags gekennzeichnet

Page 40: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

40

© Prof. T. Kudraß, HTWK Leipzig

PSP Beispiel

<%@ page language="PL/SQL" %><%@ plsql procedure="psp_bspseite" %><%@ plsql parameter="p_name" default="null"%><HTML><HEAD><TITLE>Beispielseite mit PL/SQL Server Page</TITLE></HEAD><BODY><H1>Beispielseite mit PL/SQL Server Page</H1><%-- Inhalt des Parameters p_name anzeigen, wenn belegtif not(p_name is null) then %>Hallo <%=p_name%>.<p>Client-IP-Adresse: <%=owa_util.get_cgi_env('REMOTE_ADDR')%><%END if;%>

<FORM method=POST>Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30"></FORM></BODY></HTML>

<%@ page language="PL/SQL" %><%@ plsql procedure="psp_bspseite" %><%@ plsql parameter="p_name" default="null"%><HTML><HEAD><TITLE>Beispielseite mit PL/SQL Server Page</TITLE></HEAD><BODY><H1>Beispielseite mit PL/SQL Server Page</H1><%-- Inhalt des Parameters p_name anzeigen, wenn belegtif not(p_name is null) then %>Hallo <%=p_name%>.<p>Client-IP-Adresse: <%=owa_util.get_cgi_env('REMOTE_ADDR')%><%END if;%>

<FORM method=POST>Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30"></FORM></BODY></HTML>

Page 41: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

41

© Prof. T. Kudraß, HTWK Leipzig

Schrittfolge PSP

Kompilieren der PSP-Datei mittels loadpsp Erzeugen einer gespeicherten Prozedur in der

Datenbank (Procedure-Tag) HTML-Anweisungen werden unter Verwendung des

PL/SQL Web-Toolkits in Print-Anweisungen des HTTP-Pakets umgewandelt

PL/SQL-Anweisungen der Skripteinschübe werden unverändert übernommen

Komfortablere Entwicklung, da automatische Übersetzung

Page 42: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

42

© Prof. T. Kudraß, HTWK Leipzig

PSP Beispiel – Generierter PL/SQL Code (Gespeicherte Prozedur)

( p_name IN VARCHAR2 default null) ASBEGIN NULL;htp.prn(‘<HTML><HEAD><TITLE>Beispielseite mit PL/SQL Server Page</TITLE></HEAD><BODY><H1>Beispielseite mit PL/SQL Server Page</H1>‘);

-- Inhalt des Parameters p_name anzeigen, wenn belegtif not(p_name is null) thenhtp.prn(‘Hallo ‘);htp.prn(p_name);[. . .]

( p_name IN VARCHAR2 default null) ASBEGIN NULL;htp.prn(‘<HTML><HEAD><TITLE>Beispielseite mit PL/SQL Server Page</TITLE></HEAD><BODY><H1>Beispielseite mit PL/SQL Server Page</H1>‘);

-- Inhalt des Parameters p_name anzeigen, wenn belegtif not(p_name is null) thenhtp.prn(‘Hallo ‘);htp.prn(p_name);[. . .]

Page 43: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

43

© Prof. T. Kudraß, HTWK Leipzig

Verarbeitung einer PSP

1. Weiterleiten der Anfrage vom Browser an den Modul mod_plsql

2. Verbindung zur Datenbank, Ausführung der gespeicherten Prozedur

3. Erzeugung einer HTML-Seite durch Prozedur

4. Zurücksenden des HTML-Dokuments an mod_plsql

5. Zurücksenden der HTML-Seiteals HTTP-Response zumanfragenden Client

Page 44: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

44

© Prof. T. Kudraß, HTWK Leipzig

Vorteile von PSP

Trennung von Anwendungs- und Präsentationslogik– HTML-Anweisungen und PL/SQL Code separat– Abgrenzung durch PL/SQL-spezifische Tags

Leichte Erlernbarkeit Einfacher Zugriff auf Daten der Datenbank

– Kein Umweg über HTTP oder JDBC Ausführung im Server (PSP selbst in der DB) Verbindung mit anderen Skriptsprachen möglich

– z.B. Javascript oder Visual Basic-Script (zur Prüfung von Benutzereingaben)

– nicht kombinierbar mit anderen serverseitigen Scripting-techniken

Page 45: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

45

© Prof. T. Kudraß, HTWK Leipzig

Nachteile von PSP

Stärkere Beanspruchung des DB-Servers– Statische Seiten besser im Web-Server speichern

Plattformabhängigkeit– Beschränkt auf Oracle– Migration auf andere DB erfordert Neuentwicklung

der Anwendung

Page 46: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

46

© Prof. T. Kudraß, HTWK Leipzig

PHP

PHP = Personal Homepage Tools (war ursprünglich eine Sammlung von Tools und Makros)

entwickelt von Rasmus Lerdorf 1994, Open Source Produkt

serverseitige, in HTML eingebettete Script-Sprache (Ausführung auf dem Webserver)

plattformunabhängig unterstützt umfangreiche Menge von Oracle-

Funktionen (erfordert Installation im Web-Server) verwandt mit

– Active Server Pages (ASP) von Microsoft– Java Server Pages (JSP)– PL/SQL Server Pages (PSP) von Oracle

Page 47: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

47

© Prof. T. Kudraß, HTWK Leipzig

PHP

PHP-Seite als Script-Datei – Extension .php – Verarbeitung durch PHP-Prozessor

Einbettung von Skripteinschüben in spezielle Tags– <? echo “Hello world!“ ?>– <?php echo “Hello world!“; ?>– <script language=“php“>

echo “Hello world!“;</script>

Page 48: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

48

© Prof. T. Kudraß, HTWK Leipzig

Verarbeitung einer PHP-Seite

Page 49: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

49

© Prof. T. Kudraß, HTWK Leipzig

PHP Beispiel<HTML><HEAD><TITLE>Testseite mit PHP</TITLE></HEAD><BODY><H1>Testseite mit PHP</H1><?php// Lesen des per HTTP-Post übertragenen Parameters aus Array$p_name = $_POST['p_name'];

if ($p_name) {// Namen ausgeben, wenn eingegeben.

print("Hallo $p_name.<p>");// Zugriff auf Umgebungsvariable

print("Client-IP-Adresse: ".$_SERVER['REMOTE_ADDR']);

}</script><FORM method="POST">Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30"></FORM></BODY></HTML>

<HTML><HEAD><TITLE>Testseite mit PHP</TITLE></HEAD><BODY><H1>Testseite mit PHP</H1><?php// Lesen des per HTTP-Post übertragenen Parameters aus Array$p_name = $_POST['p_name'];

if ($p_name) {// Namen ausgeben, wenn eingegeben.

print("Hallo $p_name.<p>");// Zugriff auf Umgebungsvariable

print("Client-IP-Adresse: ".$_SERVER['REMOTE_ADDR']);

}</script><FORM method="POST">Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30"></FORM></BODY></HTML>

Page 50: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

50

© Prof. T. Kudraß, HTWK Leipzig

Java und Datenbanken

Java Database Connectivity (JDBC)– Idee– Drivertypen– Klassen und Schnittstellen

SQLJ (Embedded SQL in Java) J2EE Anwendungen Java Servlets Java Server Pages

Page 51: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

51

© Prof. T. Kudraß, HTWK Leipzig

Java Database Connectivity (JDBC)

Motivation:– Zugriff auf SQL-Datenbanken mit Java benötigt– Nachteil selbstgestrickter Java-Zugriffsmethoden

aufwendig fehlerbehaftet nicht einfach portierbar

– Überwindung des Mismatch zwischen Java (objektorientiert, ohne Pointer) C (prozedural, mit Pointern) SQL (mengenorientiert)

Beziehung zu ODBC– Wurde in Anlehnung an ODBC (Open Database Connectivity)

entwickelt und mit einer ähnlichen Klassenbibliothek ausgestattet

Page 52: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

52

© Prof. T. Kudraß, HTWK Leipzig

JDBC (Forts.)

DB-Kommunikation erfolgt über ein Call Level Interface (CLI)

Basiert auf Java: kann Objekte direkt verwenden, um DB-Objekte und ihre Operationen direkt und natürlich darzustellen

– Beispiel: Objekt Connection mit einer Methode close()

JDBC-Klassenbibliothek– Seit JDK 1.1 im Sprachumfang enthalten, wird ständig um

weitere Funktionalität ergänzt– Trennung in ein “Core API“ und “Standard Extension API“

Page 53: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

53

© Prof. T. Kudraß, HTWK Leipzig

JDBC Entwurfsziele

Call-Level Dynamic SQL API– Äquivalent zu ODBC und X/Open CLI– Allgemeines API, das die Basis-SQL-Funktionalität unterstützt– Höhere APIs (z.B. mit Mapping Klassen-Tabellen) können darauf

aufsetzen Implementierbar “on top of“ allgemeinen SQL-APIs

– Implementierbar auf Basis von ODBC und X/Open CLI– Brückentreiber JDBC-ODBC somit leicht realisierbar

SQL Conformance– Jeder SQL-Dialekt verarbeitbar, falls ein JDBC-Driver dafür

vorhanden ist– Mindest-Anforderung: SQL-92 (Entry Level) muß von allen Drivern

unterstützt werden Strenges, statisches Typing Einfaches API für den Normalfall (80-20 Regel)

Page 54: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

54

© Prof. T. Kudraß, HTWK Leipzig

JDBC-Architektur

Application

Driver Manager

Driver Driver Driver

Data source Data source Data source

JDBC API

JDBC Driver API

Proprietär

Page 55: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

55

© Prof. T. Kudraß, HTWK Leipzig

JDBC Klassen und Interfaces

java.sql.DriverManager(class, class methods)

java.sql.Connection(interface)

java.sql.Connection(interface)

java.sql.Statement(interface)

java.sql.Statement(interface)

java.sql.Statement(interface)

java.sql.Resultset(interface)

java.sql.Resultset(interface)

java.sql.Driver(interface, drivers only)

Page 56: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

56

© Prof. T. Kudraß, HTWK Leipzig

Überblick: Datenbankanfragen mit JDBC

Query

Close

Connect

Processresults

Datenbankverbindung herstellen

Datenbankanfrage

Verbindung zur DB schließen

Ergebnisse verarbeiten

Page 57: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

57

© Prof. T. Kudraß, HTWK Leipzig

Phase 1: Connect

Query

Close

Connect

Processresults

Driver registrieren

Verbindung zur Datenbank

Page 58: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

58

© Prof. T. Kudraß, HTWK Leipzig

Phase 2: Query

Close

Connect

Query Erzeuge ein Statement

Processresults

Abfrage auf Datenbank

Page 59: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

59

© Prof. T. Kudraß, HTWK Leipzig

Statement Object

Ein Statement Objekt sendet SQL-Befehl zur Datenbank.

Man benötigt aktive Connection, um JDBC Statement zu erzeugen.

Statement hat drei Methoden, um ein SQL Statement zu erzeugen:– executeQuery()für QUERY Statements

– executeUpdate()für INSERT, UPDATE, DELETE, oder DDL statements

– execute() für beliebiges Statement

Page 60: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

60

© Prof. T. Kudraß, HTWK Leipzig

Phase 3: Verarbeiten der Ergebnisse

Close

QueryDurchlaufen der Ergebnisse

ProcessResults

Zuweisen der Ergebnisse an Java- Variablen

Connect

Page 61: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

61

© Prof. T. Kudraß, HTWK Leipzig

Das ResultSet Objekt

JDBC liefert die Ergebnisse einer Query in einem ResultSet Objekt.

Ein ResultSet verwaltet einen Cursor, der auf den aktuellen Datensatz zeigt.

Verwende next() zum Durchlaufen des Result Set Satz für Satz.

getString(), getInt(), usw. für Wertzuweisung an Java-Variablen.

Page 62: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

62

© Prof. T. Kudraß, HTWK Leipzig

Phase 4: Close

Connect

Query

ProcessResults

Close

Schließe Result Set

Schließe Statement

Schließe Connection

Page 63: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

63

© Prof. T. Kudraß, HTWK Leipzig

JDBC Beispiel SELECT

// Create a connection and connectConnection conn;Statement stmt;ResultSet rs;int partID;float price;

conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword");

// Create a statement and execute a SELECT statementstmt = conn.createStatement();rs = stmt.executeQuery ("SELECT PartID, Price FROM Parts");

// Create a connection and connectConnection conn;Statement stmt;ResultSet rs;int partID;float price;

conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword");

// Create a statement and execute a SELECT statementstmt = conn.createStatement();rs = stmt.executeQuery ("SELECT PartID, Price FROM Parts");

Page 64: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

64

© Prof. T. Kudraß, HTWK Leipzig

JDBC Beispiel SELECT (Forts.)

// Fetch and print each rowwhile (rs.next()){ partID = rs.getInt(1); price = rs.getFloat(2); System.out.println("Part Number: " + partID + " Price: " + price);} // Close the result setrs.close();

// Close the statement and connectionstmt.close();conn.close();

// Fetch and print each rowwhile (rs.next()){ partID = rs.getInt(1); price = rs.getFloat(2); System.out.println("Part Number: " + partID + " Price: " + price);} // Close the result setrs.close();

// Close the statement and connectionstmt.close();conn.close();

Page 65: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

65

© Prof. T. Kudraß, HTWK Leipzig

JDBC Beispiel UPDATE

// Create a connection and connectConnection conn;Statement stmt;int rowCount;

conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword");

conn.setAutoCommit(false);

// Create a statement and execute an UPDATE statementstmt = conn.createStatement();rowCount = stmt.executeUpdate ("UPDATE Parts SET Price = 10.0 WHERE PartID = 123");

Page 66: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

66

© Prof. T. Kudraß, HTWK Leipzig

JDBC Beispiel UPDATE (Forts.)

// Check if row was changedif (rowCount != 0){ System.out.println("Price changed");}else{ System.out.println("Part not found");}// Commit the transactionconn.commit();

// Close the statement and connectionstmt.close();conn.close();

Page 67: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

67

© Prof. T. Kudraß, HTWK Leipzig

J2EE Anwendungen

J2EE = Java 2 Platform Enterprise Edition Standard für die Entwicklung mehrschichtiger,

komponentenbasierter Java-Anwendungen Vereinfacht Entwicklung durch Definition eines

Programmiermodells auf Basis von standar-disierten und komponentenbasierten Objekten

Oracle Application Server Oracle10gAS (OC4J)– vollständige Umsetzung eines J2EE-Containers:

JSP, Java Servlets, EJB, JDBC

Page 68: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

68

© Prof. T. Kudraß, HTWK Leipzig

Java Servlets

Einordnung:– kleine Serverprogramme

Voraussetzung– Integration einer JVM in den Web-Server bzw. Kooperation mit

einem Zusatzprozess– Voller Zugriff auf Java-API

Vorteile:– Plattform- und herstellerunabhängige Erweiterung von Web-

Servern möglich (durch standardisierte Servlet-API)– Dynamisches Binden möglich (Java-Klassenlader)

Hinzufügen und Entfernen von Modulen ohne Neustart des Servers

Page 69: Architektur von Web- Datenbanksystemen. © Prof. T. Kudraß, HTWK Leipzig 2 Schichtenarchitektur Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

69

© Prof. T. Kudraß, HTWK Leipzig

Web/DB-Anbindung über Java Servlets

Weitere Vorteile alle Möglichkeiten

der Sprache Java

Web-Client Web-Server

Servlet-Engine

DB-Server

Java-Klassenbibliothek

HTTP

JVM

JDBC

gleiches Sicherheitskonzept wie Java (Security Manager),verhindert Ressourcenmißbrauch

Leistung: bleiben im Speicher des Servers, DB-Verbindung nur einmal nötig

Lastverteilung: Aufruf anderer Servlets möglich

mehr Programmieraufwand, Ent-wicklungsumgebungen verfügbar