42
DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur Java Servlets HTTP Charakteristika JSP ASP XML Christoph Riewerts, © Prof. Dr. Helmut Balzert V2.0 Entwurf der Architektur Übersicht

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

Embed Size (px)

Citation preview

Page 1: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 1

Inhalt:• Schichtenmodell• Client-Server-Architektur• Componentware• Web-Architektur

– Java Servlets– HTTP Charakteristika– JSP– ASP– XML– …

Christoph Riewerts, © Prof. Dr. Helmut Balzert V2.0

Entwurf der ArchitekturÜbersicht

Page 2: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 2

Entwurf der Architektur

• Die SW-Architektur beschreibt die Struktur des Softwaresystems durch Systemkomponenten und ihre Beziehungen untereinander

• Um eine Anwendung verteilen zu können, muß sie in logische SW-Schichten strukturiert sein:

• Wir kennen das Standard-3-Schichten-Modell und das 6-Schichtenmodell nach Noak:

Präsentationslogik

Applikationslogik

Datenlogik

abhängig von

Benutzungsschnittstelle

Dialogsteuerung

Geschäftsprozeßsteuerung

Anwendungsbereichsobjekte

Logischer Datenzugriff

Physischer Datenzugriff

Christoph Riewerts, © Prof. Dr. Helmut Balzert V2.0

Page 3: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 3

Entwurf der Architektur

• Logische Schichten können mit Hilfe von Verteilungsmustern auf physische Schichten abgebildet werden

• Die Verteilungsmuster hängen davon ab, ob– eine Client/Server-Architektur oder– eine Web-Architektur zugrunde gelegt wird.

Applikation

Präsentation

Datenhaltung

Applikation

Präsentation

Datenhaltung

Applikation

Präsentation

Datenhaltung

VerteiltePräsentation

VerteilteDatenlogik

VerteilteGeschäftslogik

Arbeitsplatz-

computer

oder Server

Agenda:

Logische

SW-Schicht

Page 4: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 4

Client Web-ServerAnwendungs-Server (Middleware)

Datenbank-Server

Servlets

JSP

ASP

Web-Browser

CORBA

EJB

COM+Windows

Windows+ Office

RDBS

ODBS

XML

Dateien

Mehrschichtenarchitekturen

Page 5: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 5

Entwurf der ArchitekturCharakteristika einer Client-Server-Architektur

• Der auf dem Client befindliche Teil der Anwendung ist nach der Anmeldung beim serverseitigen Teil der Anwendung in der Regel bis zur Abmeldung permanent mit dem Server verbunden; damit ist es leicht, eine Benutzersitzung zu verfolgen

• Die maximale Anzahl der nebenläufigen Benutzer liegt als Anforderung fest und erleichtert damit den Systementwurf

• Aufwändige Verteilung der Client-Software, da sie auf jedem Client installiert werden muss

• Die Client/Server-Umgebung ist in der Regel bekannt und kann durch die Entwickler

beeinflusst werden, die sowohl für den Client- als auch für den Server-Teil verantwortlich sind. • Plattformänderungen führen u. U. zur Neuprogrammierung von Anwendungsteilen

Page 6: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 6

Entwurf der ArchitekturCharakteristika einer Client-Server-Architektur

Anforderungen an eine transparente Verteilung• Lokation: Aufruf des Objekt erfolgt unabhängig davon, wo sich das aufgerufene Objekt

befindet; bei unterschiedlichen Adressräumen ist eine Interprozesskommunikation notwendig.– Lösung: RPC (Remote Procedure Calls) über Client- und Server-Stubs

• Nebenläufigkeit: Ein Objekt schickt eine Nachricht an ein anderes Objekt, unabhängig davon, ob noch ein weiterer Client einen Dienst von dem Objekt anfordert.

– Lösung: Synchronisation von Threads und Transaktionen• Aktivierung/Passivierung: Es interessiert den Aufrufer eines Objekts nicht, ob dieses erst

"geweckt" werden muss.– Lösung: implizite (De-)Allokation von Systemressourcen und persistente

Speicherung.• Replikation: Dem Sender einer Nachricht ist es egal, ob das aufgerufene Objekt aus

Gründen der Schnelligkeit und Zuverlässigkeit verteilt/repliziert wurde.– Lösung: Koordination der Kopien von Objekten

Page 7: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 7

Entwurf der ArchitekturCharakteristika einer Client-Server-Architektur

DCE (Distributed Computing Environment) ist eine Sammlung von Programmen und Bibliotheken für verteilte Anwendungen

Verteilte Anwendung

DirectoryService

TimeService

SecurityService

FileService

Remote Procedure Call

Threads

Betriebssystem und Netzwerkdienste

DCE

Page 8: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 8

Entwurf der ArchitekturCharakteristika einer Client-Server-Architektur

DCE-Komponenten• Directory Service verwaltet zu einem Namen Adressen und Zugriffslisten• Time Service synchronisiert die Rechneruhren in einem Netzwerk• Security Service enthält die Authentifizierung (Wer ist Client?, wer ist Server), die

Autorisierung (Berechtigungsvergabe), die Geheimhaltung (Verschlüsselung der Nachrichten) und die Integritätssicherung (Schutz vor Datenmanipulation durch verschlüsselte Prüfsummen)

• File Service liefert ein verteiltes Dateisystem über mehrere Rechner• Threads sind Teile eines Prozesses, die zueinander quasi-parallel ausgeführt werden

können. Mit Threads können Server mehrere Anforderungen gleichzeitig bearbeiten und Clients Abfragen stellen bei weiterhin bedienbarer Oberfläche.

• Mit einem RPC kann eine Anwendung eine Prozedur eines anderen Prozesses (Server) aufrufen:

– Synchroner Ablauf: Server wird gestartet und wartet - Client wird gestartet, ruft den Server (Stub erzeugt Datenpaket und übergibt es dem Transportsystem) - Server bearbeitet die Anforderung - Client empfängt die Ergebnisse

Page 9: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 9

Entwurf der Architekturcomponentware

Komponentenbasierte Softwareentwicklung• Erlaubt die einfache, schnelle und preiswerte Herstellung individueller, integrierter

Anwendungen durch Zusammenbau von vorgefertigten Halbfabrikaten bzw. Komponenten

• componentware ist ein abgeschlossener, binärer Software-Baustein, der eine anwendungsorientierte, semantisch zusammengehörende Funktionalität besitzt, die nach außen über Schnittstellen zur Verfügung gestellt wird

• Zwei Komponentenmodelle für Clients – JavaBeans-Modell von Sun – COM/ActiveX-Modell von Microsoft

• Drei Komponentenmodelle für Server – COM+ von Microsoft– Enterprise JavaBeans von Sun– CORBA-Modell der OMG

Page 10: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 10

Entwurf der Architekturcomponentware

JavaBeans sind separate, auf Source Code Level erstellte Module, aus denen durch "Kombinieren" (Visual Assembly) größere Applikationen erstellt werden; es gibt dafür visuelle Tools (z.B. Sun JDK, Borland JBuilder)

JavaBean zeigt nach außen:• Eigenschaften (Properties), z.B. Font oder Farbe• Methoden (Methods), z.B. get- & set-Operationen• Ereignisse (Events), z.B. benachrichtigen anderer• "Introspektion" (Introspective) Informationen über

das Innenleben des Beans sind durch die BeanInfo Class verfügbar.

• Der Zustand (state) kann in einem JAR abgespeichert werden.

• Während des Entwurfs kann das Verhalten angepasst werden (Customization)

Page 11: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 11

Entwurf der ArchitekturCharakteristika einer Web-Architektur

• Vier physische Schichten:– Web-Client enthält einen Web-Browser für die Präsentation der

Benutzeroberfläche– Web-Server verteilt HTML-Dokumente, Multimediaobjekte oder Java-applets, die

über das HTTP-Protokoll vom Web-Client angefragt werden, und stellt die Kommunikation des Web-Client mit der Anwendungslogik sicher.

– Anwendungs-Server ist zuständig für die Steuerung der Geschäft-Objekte– Daten-Server ist zuständig für die Verwaltung der persistenten Daten

• Durch das HTTP-Protokoll wird bei jeder Benutzeranfrage einer Web-Seite eine TCP-Verbindung mit dem Web-Server aufgebaut, eine Anfrage gesendet, vom Server bearbeitet und nach Rücksendung der Antwort die TCP-Verbindung wieder beendet

• Es gibt also keine permanente Verbindung zwischen Web-Client und Web-Server.• Web-Anwendungen haben eine potenziell unbegrenzte Anzahl von Benutzern• Auf die Laufzeitumgebung des Web-Clients haben die Entwickler – außer bei Intranet-

und Extranet-Anwendungen – keinen Einfluss

Page 12: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 12

Entwurf der ArchitekturCharakteristika einer Web-Architektur

• Die SW-Verteilung ist einfach, da keine anwendungsspezifische Software auf dem Web-Client installiert werden muss

• Es ist aufwändig, den Zustand während und zwischen Sitzungen zu speichern und zu verfolgen

• Es müssen in der Regel mehrere unterschiedliche Web-Browser unterstützt werden

2 Schichten

Web-Client

Web-Server

3 Schichten

Web-Client

4 Schichten

Web-Client

Daten-Server

Web-ServerWeb-Server

Anwendungs-Server

Daten-Server

Page 13: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 13

Entwurf der ArchitekturCharakteristika einer Web-Architektur

Dokumentation der Web-Architektur am Beispiel eines 3Rechnersystems• wichtig dabei ist die Angabe der Produkt-Versionen, z.B. MS Explorer V3.02, Netscape

Navigator V3.0, MS Internet Information Server V4.0, ASP=ActiveServerPages V1.5c, ODBC von Oracle V200.0301, SQL-Net V2.3 und Oracle V7.3

MS InternetExplorer

Client NT-Server

ASPODBC

MS II

Oracle

UNIX-Server

SQL-Nethttp

Page 14: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 14

Serverseitiges Web-Konzept:• Statt einer einfachen HTML-Seite ruft der Web-Browser (ausgelöst z.B. durch das

Anklicken eines Hyperlinks) ein Skript auf dem Server auf und übergibt gleichzeitig Parameter an das Skript

• Das Skript führt eine Reihe von Aktionen durch und produziert eine Ausgabe (meist eine HTML-Seite), die zum Browser geschickt und dem Benutzer angezeigt wird.

• Folgende „Sprachen“ kommen zum Einsatz: Perl, PHP, Servlets (Java-Programme), JSP, ASP

• Viele Web-Server können durch Plugins um beliebige Skript-Konzepte erweitert werden

Clientseitiges Web-Konzept:• Kleine Programme (Skripte), die in eine HTML-Seite eingebettet sind und vom Browser

ausgeführt werden, z.B. zur Prüfung der Eingaben vor Verschickung an den Web-Server• Mit einem clientseitigen Skript lässt sich oft eine bessere Reaktionszeit erzielen und die

Netzbelastung senken, indem Fehlermeldungen nicht übertragen werden müssen.• Folgende „Sprachen“ kommen zum Einsatz: JavaScript & Visual Basic Script

Entwurf einer Web-Architektur

Page 15: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 15

Entwurf einer Web-ArchitekturJava Servlets

Der Servlet Container (früher Servlet Engine genannt) übersetzt Anfragen, die nach einem bestimmten Protokoll gebildet wurden, in ein Objekt, das dem Servlet übergeben wird, und erzeugt eine Antwort. Zusätzlich regelt die Servlet Engine den Lebenszyklus der Servlets (Servlets are small, plattform independent Java classes compiled to an architecture neutral bytecode that can be loaded dynamically into and run by a web Server [SUN])

BrowserHTTP Server

HTTP Request

HTTP Response

Servlet Container

Static Content

Servlet

Beispiel “Seminarorganisation”:• Kunden sollen Anfragen und Anregungen über ein HTML-Formular eingeben (s. Quellcode)• Web-Browser erzeugt aus dem HTML-Formular eine Eingabemaske (s. Bild)• das Servlet verschickt eine Email (s. Bild)• das Servlet erzeugt eine Antwort für den Web-Browser (s. Bild)

Import javax.servlet.*;

import javax.servlet.http.*;

Page 16: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 16

Entwurf einer Web-ArchitekturJava Servlets

Page 17: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 17

Entwurf einer Web-ArchitekturJava Servlets

Ausgabe der Web-Browsers

Page 18: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 18

Entwurf einer Web-ArchitekturJava Servlets

email, die vom Anfrage-Servlet verschickt wird

Page 19: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 19

Entwurf einer Web-ArchitekturJava Servlets

Die Bestätigung für den Kunden wird als HTML-Seite vom Servlet erzeugt.

Page 20: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 20

Entwurf einer Web-ArchitekturJava Servlets

Interne Abläufe, dargestellt als Sequenz-Diagramm

: ServletEngine

: Web-Server

drücktAbschicken-Knopf

:Web-Browser

schicktAnfrage schickt Anfrage

weiter

schickt Antwortzurück

:Servlet

initialisiertServlet

ruft Service-Operation auf

erzeugtAntwort

schickt Antwortzurück

erhält Antwort

[Wenn noch nicht erzeugt]erzeugt Servlet

Page 21: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 21

Entwurf einer Web-ArchitekturJava Servlets

Grundstruktur von Servlets• Interface Servlet als Schnittstelle• GenericServlet als Basis-Klasse aller

Servlets– implementiert

protokollunabhängige Funktionen– Methoden init(), destroy(),

service(), log(), ..• HttpServlets als Klassen fürs HTTP-

Protokoll:– implementiert Funktionen für das

HTTP-Protokoll– Methoden doGet() und doPost(),

doPut(), doDelete(), ..– mindestens eine Methode muß

implementiert werden

Minimales Servlet (Hello World-Beispiel):

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

public void doGet (

HttpServletRequest request,

HttpServletResponse response )

throws ServletException, IOException {

PrintWriter out = response.getWriter();

out.println(„Hello World !!!“);

}

}

Page 22: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 22

Entwurf einer Web-ArchitekturJava Servlets

Servlet-API (Darstellung im Innovator)

Page 23: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 23

Entwurf einer Web-ArchitekturJava Servlets

Servlet-API • Mit der Operation init() werden alle notwendigen Initialisierungen (z.B. Lesen von

Konfigurationsinformationen oder Laden von kostenintensiven Ressourcen) durchgeführt• Trifft eine Anfrage ein, so weist ihr die Servlet Engine einen eigenen Thread zu, der die

Operation service() des Servlets aufruft und damit die Anfrage an entsprechende Operationen der Klasse HttpServlet weiterleitet

• service() bekommt Referenzen auf ein Anfrage-Objekt vom Typ ServletRequest und ein Antwort-Objekt vom Typ ServletResponse übergeben

• Wenn alle Service-Threads terminiert sind, ruft die Servlet Engine die Operation destroy() auf, so daß die Servlet-Objekte vernichtet werden

• Man kann ein Servlet schreiben, indem man eine Unterklasse von GenericServlet bildet und anschließend die Operation service() in der Unterklasse implementiert

• Soll jedoch eine HTTP-spezifische Implementierung erfolgen, so ist die Nutzung der Unterklasse HttpServlet von GenericServlet sinnvoll (es muß lediglich die korrespondierende Operation der Klasse HttpServlet überschrieben werden, z.B. behandelt die doGet()-Operation eine HTTP-GET- und die doPost()-Operation eine HTTP-POST-Anfrage. )

Page 24: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 24

Entwurf einer Web-ArchitekturHTTP-Charakteristika

• Ein Client stellt eine Anfrage (Request) an einen Server, der anschließend eine Antwort (Response) zurückschickt

• Vom Protokoll (zustandslos) wird nicht unterstützt, daß mehrere Anfragen zu einem Kontext gehören, da nach jeder Anfrage die Verbindung getrennt wird.

• HTTP kennt folgende Zugriffsoperationen: GET, HEAD, POST, PUT, DELETE, ..• Aufbau einer GET-Anfrage

– Server bekommt eine URL zugeschickt, ggf. mit Parametern (hinter „?“)– Antwort: Dokument, das die URL bezeichnet – Wird durch die URL ein Programm bezeichnet, das dynamisch Daten erzeugt,

dann wird die Programmausgabe als Antwort zurückgeschickt und nicht das Programm selbst

• GET http://www.software-technik.de HTTP/1.0. (Methode, URL und HTTP-Version stehen in einer Request line))

• http://de.altavista.com/cgi-bin/query?pg=q&sc=on&q=Software-Technik&kl=de&what=de („&“ trennt die einzelnen Parameter)

Page 25: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 25

Entwurf einer Web-ArchitekturJava server pages (JSP)

Wenn ein Client auf eine JSP (Textdatei mit HTML-Anteilen und JSP-Markierungen) zugreifen möchte, so wird die Seite, falls noch nicht geschehen, von der so genannten JSP Engine zunächst in ein Servlet übersetzt und anschl. ausgeführt, die Ausgabe dieses Servlets wird dann an den Client zurückgeschickt

: JSP Engine: Web-Server

öffne JSP

:Web-Browser

schickeAnfrage

:ServletEngine

[JSP noch nicht in Servlettransformiert]transformiere in Servlet

schickeAnfrage

führe Servlet aus

Page 26: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 26

Entwurf einer Web-ArchitekturJava server pages (JSP)

Elemente einer JSP (Syntax in <>):

• Direktiven (z.B. include, page, taglib) <%@ include file=“relativeURL“ %> dienen dazu, globale Informationen für die ganze Seite zu setzen

• Deklarationen <%! declarations %> erlauben es, Variablen und Operationen zur deklarieren, die eine seitenweite Gültigkeit besitzen

• Scriptlets <% code fragment %> enthalten den Java-Quellcode, der für die Berechnung von Ausgaben notwendig ist

• Ausdrücke <%= expression %> enthalten Variablen, deren Werte, in eine Zeichenkette konvertiert, von der JavaServer Page ausgegeben werden

• Kommentar (output comment) <!--comment [<%= expression %>] --> wird in die Ausgabe geschrieben

• Versteckter Kommentar (hidden comment) <%-- comment --&> erscheint nur in der JSP

• Anweisungen <jsp:........> an die JSP Engine, z.B. um JavaBeans nutzbar zu machen oder um die Client-Anfrage weiter zu leiten

Page 27: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 27

Entwurf einer Web-ArchitekturJava server pages (JSP)

Beispiel:

JSP liefert als Ausgabe eine Web-Seite, die den Text »Hello World« und das aktuelle Datum enthält:

<HTML>

<HEAD> <TITLE> Hello World Beispiel </TITLE> </HEAD>

<BODY>

<!-- globale Informationen der Seite setzen -->

<%@ page language="java" %>

<!-- Deklaration einer Zeichenkette HelloWorld -->

<%! String HelloWorld; %>

<!-- Nun ein Scriptlet mit Java programmieren -->

<% HelloWorld = "Hello World"; %>

<% Date zeitangabe=new Date() %>

<!-- Die Zeichenkette als Ausgabe in die HTML-Seite schreiben -->

<%= HelloWorld %>

<H3>Das aktuelle Datum ist: <%=zeitangabe%></H3>

</BODY> </HTML>.

Page 28: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 28

Entwurf einer Web-ArchitekturJava server pages (JSP)

• JSPs sind eine sinnvolle Erweiterung von Servlets• JSPs sind aber kein Servlet-Ersatz• Nachteile

– Durch Vermischung von HTML & Skriptsprache werden JSPs schnell unübersichtlich

– Das Aufspüren von Syntax- und Laufzeitfehlern der Scriptlets kann schwierig sein

– Bei einem komponentenorientierten Ansatz hervorragend als »Klebstoff« verwendbar, um die einzelnen Funktionseinheiten zusammenzufügen

• Empfehlung

– Möglichst viel Skriptsprachen-Quellcode in andere Komponenten (JavaBeans) auslagern

– Keine großen Scriptlets in JSPs einbetten.

Page 29: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 29

Entwurf einer Web-ArchitekturActive server pages (ASP)

Beispiel

Begrüßungstext in einer HTML-Seite, je nach Tageszeit ein anderer Text:

<html> <head>

<title> Ein Beispiel für ASP</title> </head>

<body>

<%@ language=VBScript %>

<% if hour(time) > 5 and hour(time)<12 then %>

Guten Morgen!

<% elseif hour(time)>=12 and hour(time)<18 then %>

Guten Tag!

<% elseif hour(time)>=18 and hour(time)<=23 then %>

Guten Abend!

<% else %> Hallo Nachtschwärmer! <% end if %>

</body> </html>. 

Page 30: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 30

Entwurf einer Web-ArchitekturActive server pages (ASP)

• ASP ist ein serverseitiges Skript-Konzept von Microsoft und setzt auf den Microsoft Internet Information Services (IIS) auf

• Eine Active Server Page (Dateiendung: .asp) ist eine HTML-Datei, die neben den üblichen Elementen, wie HTML, Bildern oder Java-Applets/ActiveX-Steuerelemente auch

Skript-Programme <% Skript-Programm %> enthält, die vom Web-Server ausgeführt werden, bevor die Seite an den Browser übertragen wird

• Aus einem Skript heraus kann auf serverseitige Komponenten (z.B. Geschäftsobjekte) zugegriffen werden, damit ist es z.B. möglich, über ADO-Objekte (ActiveX Data Objects ist eine COM-basierte, objektorientierte Schale um eine meist relationale Datenbank). eine Datenbank-Anfrage zu stellen und das Ergebnis dieser Anfrage in Form von HTML-Code in die Seite zu integrieren

• Meist benutzte Skript-Sprachen sind Visual Basic Script und JScript

Page 31: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 31

Entwurf einer Web-ArchitekturCommon Gateway Interface (CGI)

• Bei CGI schickt der Web-Browser seine HTTP-Anfrage als Kommandozeile an den Server, die URL bezeichnet in diesem Fall aber keine HTML-Seite, sondern ein ausführbares Programm, z.B. www.server-name.de/cgi-bin/programm-name (Das Verzeichnis cgi-bin ist als Programmverzeichnis nicht vorgeschrieben, wird jedoch von vielen Servern verwendet)

• CGI-Standard stammt aus den Anfängen des Web: herstellerunabhängiger, nicht-kommerziell, sprachenunabhängig.

• CGI spezifiziert die Kommunikation zwischen dem Web-Server und einem externen CGI-Programm (CGI-Script); diese CGI-Skripte können in beliebigen Sprachen geschrieben werden, am häufigsten wird Perl verwendet.

• Es existieren eine Vielzahl von Web-Servern und Werkzeugen – viele davon als freeware• Der Web-Server startet für jede Ausführung eines CGI-Skriptes einen neuen Prozeß auf

dem Server: Dies ist speicher- und zeitaufwendig• Die schlechte Performance von CGI-Skripten wird dazu führen, daß diese Technik

mittelfristig von anderen Konzepten (servlets, JSP, ASP) abgelöst wird

Page 32: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 32

Entwurf einer Web-ArchitekturExtensible Markup Language (XML)

• Mit XML werden logische Dokumenten-Strukturen beschrieben: sehr geringer Sprachumfang, definiert keine einzige Markierung, Autor überlegt sich selbst passende Markierungen

• Ein XML-Element ist der von einer öffnenden und schließenden Markierung eingeschlossene Teil eines XML-Dokuments, es gibt auch Elemente ohne Inhalt, die bestehen nur aus einer einzelnen Markierung, z.B. zeigt <Einschreiben/> an, daß der Brief als Einschreiben verschickt werden soll (ohne Inhalt)

• Am Anfang eines Dokuments stehen Angaben zur verwendeten XML-Version• Jedes Element kann zusätzlich Attribute enthalten, die hinter dem Element-Namen als

Name-Wert-Paare geschrieben werden, z.B. <Brief Druckdatum="2000-07-5">...</Brief>

• XML unterscheidet zwischen Groß- und Kleinschreibung.

Page 33: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 33

Entwurf einer Web-ArchitekturExtensible Markup Language (XML)

Beispiel: Brief als XML-Dokument

<?xml version="1.0" encoding="ISO-8859-1" ?>

<Brief>

<Adresse>

<Name>Meier</Name>

<Strasse>Elisenstraße</Strasse>

<PLZ>80335</PLZ>

<Ort>München</Ort>

</Adresse>

<Betreff>Ihre Anfrage vom 26.07.2000 bezüglich einer Schulung </Betreff>

<Anrede>Sehr geehrte Damen und Herren</Anrede>

<Text>der Text des Briefes, der sich jetzt strukturell eindeutig von Betreff und Anrede abhebt.</Text>

</Brief>.

Page 34: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 34

Entwurf einer Web-ArchitekturExtensible Markup Language (XML)

Beispiel: Brief als HTML-Dokument (zum Vergleich)

<html> <body>

<p>Ihre Anfrage vom 26.07.2000 bezüglich einer Schulung </p>

<p>Sehr geehrte Damen und Herren</p>

<p>Der Text des Briefes, der genau wie Betreff und Anrede als Absatz geschrieben wird und sich strukturell nicht von ihnen unterscheidet.</p>

</body> </html>.

• In HTML sind die Markierungen Teil der Sprache• Ein Autor kann sich zwar überlegen, ob er in einem Brief den Betreff und die Anrede z.B.

in eigene Absätze verlegt, jedoch kann er diese Absätze nicht direkt als Anrede bzw. Betreff kenntlich machen. (im Gegensatz zu XML)

Page 35: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 35

Entwurf einer Web-ArchitekturExtensible Markup Language (XML)

Dokumenttyp-Definitionen (DTDs)• beschreiben die Struktur von XML-Dokumenten• und sind in das Dokument integriert oder das Dokument enthält die URL, wo die DTD

steht

<!ELEMENT Brief(Adresse, Betreff, Anrede+, Text)>

<!ELEMENT Adresse(Firma?, Name, Strasse, PLZ, Ort)>

<!ELEMENT Name(#PCDATA)>

<!ELEMENT Strasse(#PCDATA)>

<!ELEMENT PLZ(#PCDATA)>

<!ELEMENT Ort(#PCDATA)>

<!ELEMENT Betreff(#PCDATA)>

<!ELEMENT Anrede(#PCDATA)>

<!ELEMENT Text(#PCDATA)>.

• In Zukunft werden jedoch die XML-Schemata die DTD‘s ablösen

Page 36: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 36

Entwurf einer Web-ArchitekturExtensible Markup Language (XML)

XML Schemata:• XML-basierte Sprache, die mächtigere Konstrukte zur Spezifikation von Struktur, Inhalt

und Semantik von XML-Dokumenten enthält als DTDs (z.B. selbst definierte Datentypen)• XML-Schemata sind also wieder XML-Dokumente• Beispiel:

<schema>

<datatype name="PLZT"> <basetype name="string"/> </datatype>

<elementType name="PLZ"> <datatypeRef name="PLZT"/> </elementType>

</schema>• XML definiert selbst keine Markierungen, sondern der Autor muß sich selbst Namen

ausdenken, so daß es leicht zu Namenskonflikten führen kann• XML-Parser prüfen ein Dokument beim Einlesen auf Korrektheit

– Ein Dokument ist wohlgeformt (well-formed), wenn es sich an die syntaktischen Regeln von XML hält

– Ein Dokument ist gültig (valid), wenn seine Struktur den Vorgaben eines Dokument-Typs oder eines XML-Schemas entspricht

Page 37: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 37

Entwurf einer Web-ArchitekturExtensible Markup Language (XML)

Prüfung der Korrektheit eines Dokuments durch einen XML-Parser

Dokument ist... fehlerhaft wohlgeformt

(well-formed) gültig (valid)

XML-Dokument

DTD oderXML-Schema Struktur

Inhalt

XML-Parser

Page 38: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 38

Entwurf einer Web-ArchitekturExtensible Markup Language (XML)

XML-Dokument

DTD oderXML-Schema

XSL-StylesheetTrans-formations-regeln

Struktur

Inhalt

HTML-Dokument

Darstellung

XML-Parser

Transformation in ein HTML-Dokument

• XSL (XML Stylesheet Language) beschreibt die Transformation eines XML-Dokuments in ein HTML-Dokument, das ein Web-Browser dann anzeigen kann

• 2 Varianten der Konvertierung– auf dem Server: es wird

eine HTML-Datei an den Browser geschickt

– auf dem Client: wobei das XML-Dokument und das Stylesheet an den XML-fähigen Browser übertragen werden, der die Konvertierung selbst vornimmt

Page 39: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 39

Übung: Identifizieren Sie die illegalen Beziehungen im 3-Schichten-Modell

<<GUI>>

<<class>>

<<class>>

<<class>>

Präsen-tations-logik

Applika-tions-logik

Daten-logik

<<GUI>>

<<GUI>>

<<GUI>>

<<interface>><<interface>><<interface>>

<<class>>

<<class>><<class>>

<<class>> <<class>>

Benutzungsbeziehungen

Page 40: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 40

Entwurf einer Web-Architektur Komponentenmodell

Beispiel für ein J2EE Komponenten-modell in UML

Data

Page 41: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 41

Entwurf einer Web-Architektur Scriptsprache PHP

• Eingebettet in HTML:– SGML Processing: <? echo „Hi!“; ?>– Script-Tag: <script language=„php“> echo „Hi!“; </script>– XML Processing: <?php echo „Hi!“; ?>

• PHP-Interpreter filtert die Einbettungen heraus• Syntax ähnlich wie C, Java oder Javascript• Über SQL Zugriff auf Datenbanken (ODBC, Oracle, ..)• Session-Management erlaubt die Definition von Variablen mit einer Lebensdauer über

eine Seite hinaus• …..

In Arbeit

Page 42: DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010 Seite 1 Inhalt: Schichtenmodell Client-Server-Architektur Componentware Web-Architektur

DHBW Stuttgart, Informatik, SW-Engineering, Kapitel 4.1 Okt 2010

Seite 42

Anhang Lösung zur Übung auf Seite 39

<<GUI>>

<<class>>

<<class>>

<<class>>

Präsen-tations-logik

Applika-tions-logik

Daten-logik

<<GUI>>

<<GUI>>

<<GUI>>

<<interface>><<interface>><<interface>>

<<class>>

<<class>><<class>>

<<class>> <<class>>

Benutzungsbeziehungen