Upload
sigmund-necker
View
105
Download
0
Embed Size (px)
Citation preview
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
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 ?)
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 ?
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,...)
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
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
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
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.
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
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 ?
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.
Web-DB-Kopplung, © Till Hänisch
2003,2005
Schnittstellen
Bei N Systemen N*(N-1)/2 Schnittstellen !
SAP UPS
System 1System 2
System 3
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
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
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
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
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
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,...)
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
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)
Web-DB-Kopplung, © Till Hänisch
2003,2005
JVM
JavaCompiler
BytecodeVerifier
ClassLoader
JVM
JITCompiler
Interpreter
JavaSource
Inte
rnet
Hardware
Byte-code
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
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
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;}
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
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; }'
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
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)
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
Web-DB-Kopplung, © Till Hänisch
2003,2005
Architektur
Browser WebserverServlet-Engine
ServletServletServletServlet
Browser Servlet-Engine mit
eingebautemWebserver
ServletServletServletServlet
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
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();
}}
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
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>");...
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<%}%>
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 !!
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
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];
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