41
Web-Anwendungen

Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Embed Size (px)

Citation preview

Page 1: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-Anwendungen

Page 2: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Page 3: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Host

Mainframe enthält vollständige AnwendungTyp. COBOL, C

„dumme“ Terminals stellenAusgaben dar undnehmen Eingaben an

Page 4: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Mainframe contd. Nachteile

Mainframe ist teuer (Millionen !) (damals) keine grafische Oberfläche Kaum Integrationsmöglichkeiten (anderer Systeme) Proprietäre Systeme (OS, DB, Anwendung,...)

Vorteile Nur ein System (das ausfallen kann, gewartet werden

muss,...) Clients (Terminals) benötigen keine Konfiguration,

Installation,...

Entwicklung PCs sind billig und leistungsfähig Zentral nur noch Datenbank, der Rest (Anwendung,...) läuft

auf Client --> Mainframe wird entlastet (überflüssig ?)

Page 5: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Client Server

Server hält Daten zentral (unddamit konsistent).Nur Datenbank --> auch mit wenigleistungsfähiger HW können vieleClients bedient werden

Anwendung läuft auf Clients (PC)Typ. C++ Programm (Visual Studio)Beispiel: SAP R3, WWW ?

Page 6: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Client Server contd. Vorteile

HW (auf Clients) wird optimal ausgenutzt Grafische Oberfläche Client kann auf mehrere Server zugreifen Kleiner Server --> billig, flexibel (verschiedene Hersteller,

Unix-Plattform)

Nachteile Client erfordert Konfiguration/Installation --> hoher

Installations-/ Support-Aufwand Unter Umständen hohe Anforderungen an Client-HW,

Netzwerk

Entwicklung Thin Clients: Client ist nur für Ausgabe/Eingabe zuständig Aber wie ? Browser ! (und ggf. Applet,...)

Page 7: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Thin Client, 3 tier

Typ. ASP, JSP, Servlet, PHP usw. Anwendung läuft im Webserverund greift auf Datenbank zu

Page 8: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Thin Client contd. Vorteile

Wie bei Mainframe + „modern“

Nachteile Bei hohem Interaktionsgrad Anwendungsentwicklung

komplex und aufwendig

Probleme Enge Kopplung zwischen Webserver und Datenbank Skalierung, Flexibilität ! Anwendungsprogramm enthält Geschäftslogik

Lösung Trennung durch Applikationsserver, Middleware

Page 9: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Einschub: Architekturen Von „Client/Server“ zu EAI Überblick, technische Details komplex Szenario:

Unternehmen verwendet SAP als ERP-System wickelt Versand über Dienstleister, hier UPS ab UPS bietet Verfolgung der Lieferung über Web-

Schnittstelle Daten im ERP (z.B. Auftrag) und beim Dienstleister

müssen abgeglichen werden Verschiedene Lösungswege

Page 10: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Separate Clients

SAP

UPS

SAP GUI

Browser

Spezieller Client für jede AnwendungAbgleich erfolgt manuell (copy-paste,...)Probleme: Effizienz, Konsistenz usw.

Page 11: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Spezieller Client

SAP

UPS

Client

Spezieller Client für diese Anwendungintegriert die DatenProbleme: Aufwand !Für jede mögliche Anwendung muss neuerClient entwickelt werden (und installiert,Gewartet,...)

ClientClientClientClient

Page 12: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Integration

SAP

UPS

SAP-GUI

Kopplung zwischen den (Server-) SystemenSAP greift auf Daten aus Fremdsystem zuProblem: Programmierung (auf Server) nötigWie kommunizieren die verschiedenen Systeme ?

Page 13: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Middleware Techniken zur Kopplung von Systemen Selbst gebastelt (TCP/IP sockets) RPC (Remote Procedure Call) CORBA (Common Object Request Broker Architecture) COM+ (Common Object Model, .NET) RMI (Remote Method Invocation) XML-RPC SOAP (Simple Object Access Protocol) Web Services usw.

Page 14: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Schnittstellen

Bei N Systemen N*(N-1)/2 Schnittstellen !

SAP UPS

System 1System 2

System 3

Page 15: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

EAI

Keine Punkt zu Punkt Schnittstellen sondern gemeinsameArchitektur mit (mehr oder weniger) zentraler Vermittlung

Bus

Hub Sieht einfach aus,ist es aber nicht

Page 16: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Portal

SAP

UPS

Browser

Verlagerung der Komplexität an eineStelle (Portal)Konsequenz für Informationsanbieter ?Wie kommt das Portal an die Daten ?z.B. Web Services

Client Webserver

Portal

Page 17: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Anbieterseitez.B. DBBrowser

Webserverz.B. PHPklassisc

h

z.B. DBBrowserWebserver

z.B. PHPjetzt

Web-service

Applikation mussmehrfach entwickeltwerden !!

DB

BrowserWeb-serverdeshal

bWeb-

service

Applikations-server

Page 18: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

4 tier Architektur

Verschiedene Middleware Technologien, etwa CORBA, .NET, J2EE, Webservices usw. zur Kommunikation (insb.) zwischen Webserverund Applikationsserver

Darstellung Logik Daten

Page 19: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Midleware Vorteile

„modern“, flexibel,.... SW-technisch optimal: Trennung in einzelne

Funktionalitäten: Präsentation, Anwendung, Geschäftslogik, Datenhaltung

Stand der Technik

Probleme Komplexität, Administration,.... Unübersichtliche Technologie-Vielfalt: Ebene 1 und 4

meist klar, aber 2 und 3 bieten Vielzahl an Technologien

Entwurf der Middleware-Schnittstelle nicht einfach: Auf welcher Ebene soll hier abstrahiert werden (Daten, Funktionen, Prozesse,....)

Performance teilweise schlecht

Page 20: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Schicht 1: HTML Auszeichnungssprache Tags stellen Semantik des Dokuments dar Präsentation durch Browser heute auch Präsentation durch HTML

Formatierung <FONT>, ... Logik JavaScript, DHTML,...

Trennung Inhalt/Layout durch CSS (teilweise) Statische (Text-) Inhalte Dynamische teilweise durch JavaScript

(Navigation,...)

Page 21: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Schicht 1: XML XML ist standardisiert XML ist eine Methode strukturierte Information zu speichern XML ist HTML ähnlich (aber sehr anders) XML ist Text, der nicht zum Lesen gedacht ist XML ist eine Familie von Technologien (XSLT...) XML ist neu! (oder doch nicht?) XML ist lizenzfrei, Plattform unabhängig, unterstützt

standardisierte XML-Programmierschnittstellen (SAX, DOM) XML-Applikationen sind nicht standardisiert! Wichtigste Anwendung: Datenaustausch zwischen Systemen

Aber auch im Browser: IE unterstützt XML-Darstellung mit CSS Verstärkt auch zwischen den anderen Schichten

Page 22: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Schicht1: Java-Applets Was tun, wenn Anwendung interaktiv sein muss

? Beispiele

Aktien-Ticker Spiele Komplexere Navigation

Programm, das im Browser abläuft Portabel (versch. Hardware, Betriebssystem,...) Sicher (Content aus dem Web)

Alternative: Microsoft ActiveX (COM,....) Windows-Komponenten, die vom IE ausgeführt werden Sicherheit !! (ActiveX-Komponenten sind beliebige

Windows-Programme)

Page 23: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

JVM

JavaCompiler

BytecodeVerifier

ClassLoader

JVM

JITCompiler

Interpreter

JavaSource

Inte

rnet

Hardware

Byte-code

Page 24: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Schicht 2 Verschiedene Techniken, hier: Auswahl

CGI (Common Gateway Interface) PHP (bekannt) Java-Servlets/Java Server Pages (JSP) Viele andere, wichtig insb. Microsoft ASP (.NET)

Kommunikation zwischen Schicht 1 und 2 HTTP

Immer bei statischen Anwendungen Applets/ActiveX können beliebige Protokolle

verwenden WAP/WML

Optimiert für mobile Endgeräte

Page 25: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

CGI

Browser WebserverTCP/IP

ProzeßWebserver erzeugt neuenProzeß, übergibt notwendigeParameter (im Environment)

Prozeß erzeugt HTTP-Header und Inhalt(meistens HTML, aber nicht zwingend)Liefert dies über stdout an Webserver,wird zum Client durchgereicht

Page 26: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Beispiele

Hello world: #!/bin/shecho Content-type: text/plainechoecho Hallo

In C (die restlichen 4711 Sprachen sparen wir uns):#include <stdio.h>

int main(int argc, char **argv){ printf("Content-type: text/plain\n\n"); printf("Ich bin ein C-Programm\n"); return 0;}

Page 27: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Beispiele contd.

Aktuelles Datum: #!/bin/shecho Content-type: text/plainechoecho `date`

Counter #!/bin/shecho Content-type: text/plainechoread val < val.datecho $valval=`expr $val + 1 `echo $val > val.dat

Problem:mehrere gleichzeitig ?--> Transaktionen

Page 28: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Warum CGI cool ist

#von http://www.macosxhints.com/article.php?story=20030207070436563echo Content-type: text/plainechocurl -s http://www.thinkgeek.com/fortune.shtml | \sed -n '/(refresh for another)/,/table\>/p' | \sed -n '/<p>/,/<\/p>/{/[.]/p; }' | \sed '{/^<[/]*p>/d; s/<[BbRr]*>//g; s/<\;/</g; s/>\;/>/g; }'

Page 29: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

CGI - Lösung für alle ? Ja

CGI kann alles tun, was man für Anwendungen braucht

flexibel (beliebige Programmiersprache,...) einfach portabel

Nein Performance, Sessions,...

Ablauf Webserver erkennt, daß Programm aufgerufen

werden soll erzeugt neuen Prozeß (ggf. mit Skript Interpreter) dieser läuft ab und terminiert

Page 30: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Performance

Index.html actual (msec): 79 long term 258/cgi-bin/hello actual (msec): 396 long term 528/cgi-bin/chello actual (msec): 241 long term 413/examples/servlet/HelloWorld actual (msec): 135 long term 261

Achtung: Messungen wurden unter vollständig willkürlichenund nicht reproduzierbaren Bedingungen (iBook, OS X 10.2.4 mit Apache Webserver bzw. tomcat 4.1.18, JDK 1.4.1, Java Client, 10 Threads, jeweils 100 msec Wartezeit zwischen Anfragen, Mittel über ca. 2 min...)Messungen von Webserver-Performance sind schwierig !!(Machen Sie‘s besser - und geben mir die Ergebnisse)

Page 31: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Alternativen (technisch) 1) Programme als Module in Webserver gelinkt

Apache modules, nsapi, IIS dll Performance sehr gut Portabilität/Flexibilität weg Aufwendige Programmierung (APIs,...)

2) Webserver mit eingebautem Skript-Interpreter z.B. Perl, PHP, ASP, OWAS (?), ... Portabilität/Flexibilität eingeschränkt Performance gut einfache Programmierung

3) Servlets/JSP im Prinzip wie 1) kombiniert Vorteile von beiden

Page 32: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Architektur

Browser WebserverServlet-Engine

ServletServletServletServlet

Browser Servlet-Engine mit

eingebautemWebserver

ServletServletServletServlet

Page 33: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Servlet Engines Java Webserver (SUN)

Referenzimplementierung

Websphere (IBM) Application Server komplex Load Balancing ....

Jserv (Apache) Apache module + Servlet Engine

Tomcat (Apache) standalone oder Apache module einfach und schnell

und viele andere

Page 34: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Hello World

mit GET

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

{// Was liefern wir zurueck ?// Hier: ASCII Text, kein HTMLresponse.setContentType("text/plain");

// Output liefern wir ueber "normale" Java IOPrintWriter pw = response.getWriter();

pw.println("Hello World");pw.close();

}}

Page 35: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Java Server Pages Warum ?

Servlets sind Programme Werden von Programmierern erstellt Wer schreibt HTML ? unterschiedliche Kenntnisse/Personen ! Viel Logik/viel Design

Wie ? Java Code wird in HTML-Seiten eingebettet Oder besser: ausgelagert (Beans,...)

Trennung zwischen Layout und Funktionalität

Page 36: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Hello.jsp<HTML><HEAD><TITLE>Hallo</TITLE></HEAD><BODY>Hallo</BODY></HTML>

Jede (gültige) HTML-Seite ist eine JSP !Engine erzeugt ein servlet (pagecompile)

public class Hello_jsp extends HttpJspBase {... public void _jspService(HttpServletRequest request, ... { ... out = pageContext.getOut(); out.write("<HTML>\n"); out.write("<HEAD>"); out.write("<TITLE>Viel Hallo"); out.write("</TITLE>");...

Page 37: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

MuchHello.jsp

<HTML><HEAD><TITLE>Viel Hallo</TITLE></HEAD><BODY><% for (int i=0;i<10;i++) out.print(„Hallo“);%></BODY></HTML>

Eher Programm, besser (?) Trennung:

<% for (int i=0;i<10;i++){%>Hallo<%}%>

Page 38: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Parameter<HTML><HEAD><TITLE>Viel Hallo</TITLE></HEAD><BODY>Hallo<%if (request.getParameter("Name") != null){%> lieber <%=request.getParameter("Name")%><%}%></BODY></HTML>

(zu) viel Code in JSP reduziert Übersichtlichkeit !!

Page 39: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Beans

<html><%@ page session="false"%><body bgcolor="white"><jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type="dates.JspCalendar" />

<font size=4><ul><li> Year: is <jsp:getProperty name="clock" property="year"/><li> Month: is <jsp:getProperty name="clock" property="month"/><li> Time: is <jsp:getProperty name="clock" property="time"/><li> Date: is <jsp:getProperty name="clock" property="date"/></ul>...

Logik/Code steckt in Bean, in JSP nur Darstellung--> JSP für Ebene 2, Bean in Ebene 3

Page 40: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Dates/JspCalendar.javapackage dates;...public class JspCalendar { Calendar calendar = null;

public JspCalendar() { calendar = Calendar.getInstance();

public int getYear() { return calendar.get(Calendar.YEAR); } public String getMonth() { int m = getMonthInt(); String[] months = new String []

{ "January", "February", "March","April", "May", "June", "July", "August", "September",

"October", "November", "December" }; if (m > 12) return "Unknown to Man"; return months[m - 1];

Page 41: Web-Anwendungen. Web-DB-Kopplung, © Till Hänisch 2003,2005 Überblick Dynamische Webseiten Architekturen Middleware Überblick Technologien

Web-DB-Kopplung, © Till Hänisch

2003,2005

Schicht 3 Hier noch unübersichtlicher, wichtigste Techniken:

J2EE .NET CORBA

Kommunikation zwischen Schicht 2 und 3 je nach verwendeter Technologie, Ausnahme: Web-Services

J2EE .NET CORBA Webservice

Sprachen Java C#, C++, VB,..

Fast alle alle

Plattform alle MS Fast alle alle

Performance

gut Sehr gut mittel schlecht

Verbreitung

mittel hoch mittel niedrig