Übersicht. Web (Site) Engineering (WebE) Ablauf: Anfrage/Antwort. Definition Server Web(S)E. Server allgemein. Architekturen Servertypen



Ähnliche Dokumente
Übersicht. Web (Site) Engineering (WebSE) Definition Server Web(S)E. Rückblick XPath. Server allgemein. Architekturen Servertypen

Web (Site) Engineering (WebSE)

Web (Site) Engineering (WebSE)

Web (Site) Engineering (WebSE)

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Existierende Systeme I Bibliotheken & Frameworks

Java zur Realisierung von Internetanwendungen

Architekturen. DB-Anwendungen: Aufgaben. Aufteilung der Funktionen. ƒ Datenbankanwendungen

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Programmieren II. Timer. Vorlesung 11. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Timer. Sockets.

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

André Maurer Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten

Internetanbindung von Datenbanken

Apache HTTP-Server Teil 2

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Einführung in die Scriptsprache PHP

Java - Webapplikationen

Themen. Apache Webserver Konfiguration. Verzeichnisse für Web-Applikationen. Server Side Includes

Internet Information Services v6.0

Herzlich willkommen im Modul Web-Engineering

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

Internet und WWW Übungen

Java Server Pages (JSP)

Inhaltsverzeichnis. Einleitung... 11

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Kommunikationsnetze. 7. Das World Wide Web 7.4 Client- vs. Server-basierte Techniken für dynamische Webseiten

Step by Step Webserver unter Windows Server von Christian Bartl

Java RMI, CORBA und Firewalls

Übung: Verwendung von Java-Threads

Multimedia im Netz Wintersemester 2011/12

Sicherheit in Rich Internet Applications

Weborientierte Programmiersprachen am Beispiel PHP

HTTP-Server. Frank Wübbeling Universität Münster

Plunet BusinessManager. Technische Anforderungen

Dataport IT Bildungs- und Beratungszentrum. HTML- Grundlagen und CSS XML Programmierung - Grundlagen PHP Programmierung - Grundlagen...

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

Content-Management- Systeme (CMS) Inhaltsverwaltungssystem, Redaktionssystem

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Eine Anwendung mit InstantRails 1.7

Lokale Installation von DotNetNuke 4 ohne IIS

Online-Publishing mit HTML und CSS für Einsteigerinnen

Applets I. Grundlagen der g Applet-Programmierung

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Datenbank-basierte Webserver

1 Konfigurationsanleitung Hosted Exchange

Proseminar: Website-Management-Systeme

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Programmierung von MS-Office mit Visual Basic

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

Session Management und Cookies

Das Lern-Management System (LMS) StudIP an der Universität Osnabrück

SAP NetWeaver Gateway. 2013

Web- Applikationen. in Java-Web

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Verteiltes Monitoring. 23. Oktober 2014

Inhalt. Vorbemerkungen... 1

Apache. O'REILLY Beijing Cambridge Farnham Köln Paris Sebastopol Taipei Tokyo. Das umfassende Handbuch. Ben Laurie und Peter Laurie 2.

Schwachstellenanalyse 2012

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

ObjectBridge Java Edition

Einrichtung Secure-FTP

Herzlich willkommen im Modul Informatik Grundlagen

Client/Server-Programmierung

Teil 5: Server-Side- Programmierung

Tobias Wassermann. Sichere Webanwendungen mit PHP

6.9 Java Server Pages

Client/Server-Systeme

Sicherheit in Webanwendungen CrossSite, Session und SQL

Prozesse. Stefan Janssen. Alexander Sczyrba

Objektorientierte Programmierung für Anfänger am Beispiel PHP

JSP und Servlet Programmierung

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

AS/point, Ihr Partner die nächsten 10 und mehr Jahre -

Programmiermethodik. Übung 13

Web Engineering.

LINUX Schulung. FrauenComputerZentrum Berlin. Jutta Horstmann, Mai 2006

Übungen zu Softwaretechnik

A361 Web-Server. IKT-Standard. Ausgabedatum: Version: Ersetzt: Genehmigt durch: Informatiksteuerungsorgan Bund, am

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

Transmission Control Protocol (TCP)

Verwendung des Terminalservers der MUG

Windows Server 2012 R2 Essentials & Hyper-V

NETZWERKINSTALLATION DER MAGIX ACADEMIC SUITE

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

Skalierbare Webanwendungen mit Python und Google App Engine

ASP: Active Server Pages

Architektur des agimatec-validation Frameworks

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck

Application Performance Management. Auch eine Frage des Netzwerkes?

Überblick über Internet-Technologien

Inhaltsverzeichnis. Hinweise zum Gebrauch des Buches... XIII. Teil I Grundlagen der Web-Programmierung

Grundlagen Internet-Technologien INF3171

Installation Hardlockserver-Dongle

Client-Server-Beziehungen

easylearn Webservice lsessionservice Interface für Single Sign On (SSO)

PHP-Schwachstellen und deren Ausnutzung

Transkript:

Übersicht Web (Site) Engineering (WebE) Vorlesung 8: Serverseitige Verarbeitung P.Reiß, B. Schiemann Lehrstuhl für Informatik 8 Universität Erlangen-Nürnberg 08. 12. 2009 Server allgemein Statisch vs. dynamisch SSI PHP CGI 1 / 37 2 / 37 Server allgemein Definition Server Web(S)E Server allgemein Ablauf: Anfrage/Antwort Zur Erinnerung: Ein Web(S)E Server ist ein Programm, das eine Socketverbindung bereitstellt, per Internet o.ä. Requests erhält, verarbeitet und Antworten generiert und ausliefert. Festlegung bzw. Spezialisierung zur allgemeinen Definition: Netzwerk Internet o.ä. System Programm Dienst einzelne Serverinteraktion Client: eindeutig bestimmte Anfrage einer Ressource (URL) Server: Auswertung der Anfrage Lokalisierung/Generierung der Ressource Bearbeitung Übertragung an Client Client: Interpretation, Darstellung, Speicherung, Ausführung,... 3 / 37 4 / 37

Server allgemein Server: Funktionale Sicht Servertypen 1. Warten auf Anfragen 2. Interpretieren der Anfragen 3. Bearbeiten der Anfragen 4. Beantworten der Anfragen Start on Request Metaserver überwacht Ports Bei Anfrage wird zugehöriger Server gestartet Weiterleitung der Anfrage Nach Bearbeitung Beendigung inetd bzw. xinetd Permanenter Betrieb Start bei Systemstart Unix: /etc/init.d/ Windows: Services 5 / 37 6 / 37 Servertypen: Nebenläufigkeit Codebeispiel: Server ohne Nebenläufigkeit Nicht nebenläufige Server Öffnen eines Sockets Client-Verbindung Socket belegt Nur eine Verbindung auf einmal Nicht für echte Server geeignet #! / usr / bin / python from socket import s = socket ( AF_INET, SOCK_STREAM) s. bind ( (, 50007)) s. l i s t e n ( True ) conn, addr = s. accept ( ) p r i n t Connected by, addr while True : data = conn. recv (1024) i f not data : break conn. send ( data ) conn. close ( ) 7 / 37 8 / 37

Nebenläufigkeit II: Echte Nebenläufigkeit Nebenläufigkeit III: Multi-Thread Getrennte Verarbeitung pro Verbindung Vor allem dann vorteilhaft, wenn Multiprozessor-Server vorhanden Häufiges Warten auf Ressourcen Komplexere Architektur Verwaltung der Verarbeitungsstränge! Öffnen eines Sockets Client-Verbindung: Starten eines neuen Threads Übergabe der Verbindung Hauptprogramm bereit für neue Verbindungen Mehrere (gleichzeitige) Verbindungen möglich 1 Thread pro Verbindung Leichter Zugriff auf globale Daten 9 / 37 10 / 37 Multi-Thread: Codebeispiel Multi-Thread: Codebeispiel II public class TCPServer { public s t a t i c void main ( S t r i n g [ ] args ) { t r y { ServerSocket ss = new ServerSocket (50007); while ( true ) { Socket cs = ss. accept ( ) ; Connection c = new Connection ( cs ) ; catch ( IOException IOE ) {... class Connection extends Thread { DataInputStream i n ; DataOutputStream o u t ; Socket s ; public Connection ( Socket aclientsocket ) { t r y { s = aclientsocket ; i n = new DataInputStream ( s. getinputstream ( ) ) ; o u t = new DataOutputStream ( s. getoutputstream ( ) ) ; this. s t a r t ( ) ; catch ( IOException IOE ) {... 11 / 37 12 / 37

Multi-Thread: Codebeispiel III Nebenläufigkeit IV: Multi-Prozess public void run ( ) { t r y { S t r i n g data = i n. readutf ( ) ; out. writeutf ( data ) ; s. close ( ) ; catch ( EOFException EOFE ) {... catch ( IOException IOE ) {... Öffnen eines Sockets Client-Verbindung: Starten eines neuen Prozesses (fork) Übergabe der Verbindung Hauptprogramm bereit für neue Verbindungen Mehrere Verbindungen möglich 1 Prozess pro Verbindung 13 / 37 14 / 37 Nebenläufigkeit V: Thread-/Prozess-Pools Thread-Pool: Codebeispiel [Com] Nachteile der Multi-Thread/Multi-Prozess-Verbindung: Verwaltungsoverhead Starten der Threads/Prozesse Überwachung der Threads/Prozesse Verzögerung der Verarbeitung Bereithalten von Threads/Prozessen: Pools Bei Serverstart werden im Pool befindliche Instanzen gestartet Verteilung der Clients auf Instanzen Pools dynamisch erweiterbar ThreadPool (Jakarta Commons): / / l e t s s t a r t with 5 threads ThreadPool threadpool = new DefaultThreadPool ( 5 ) ; / / l e t s use a s p e c i f i c Runnable Runnable sometask =... ; threadpool. invokelater ( sometask ) ; / / l e t s j u s t wrap up some code i n a Runnable threadpool. invokelater ( new Runnable ( ) { public void run ( ) { someobject. dosomeslowthing ( ) ; ) ; 15 / 37 16 / 37

Übersicht Attribute für den Serverentwurf Anzahl der Clients, Anfragen Anzahl der Clients, Anfragen Komplexität der Anfragen, Antworten (Roh)Datenmenge Variabilität der Daten, Konfiguration Zuverlässigkeit Grundsystem Sicherheit Situation: 1. Viele Clients gleichzeitig 2. Hohe Anfragerate Skalierbarkeit Lastverteilung (Load Balancing) Sessions (?) Parallelität (Netz, Prozesse) 17 / 37 18 / 37 Komplexität der Anfragen, Antworten (Roh)Datenmenge Situation: 1. Analyse der Anfragen schwierig (Parsing) 2. Zusammenstellen der Antwort rechenintensiv Shallow-Parsing (Templates, NLP-NLG Techniken) Lastverteilung (1+ Host/Tier) Multi-Thread- und Multi-Prozess-Lösungen Situation: Antwort benötigt hohe unbearbeitete Datenmenge SAN oder NAS Einbettung von Teillösungen von anderen Servern (z.b. <img />) Rückmeldung an den User Netzwerkperformance! 19 / 37 20 / 37

Variabilität der Daten, Konfiguration Zuverlässigkeit Grundsystem Situation: 1. Konfiguration zur Laufzeit 2. Das CMS -Problem Gracefull Restarts des Servers Konfigurationsmanagement (Backup, Rollback,... ) Content-Caching vs. neu auslesen Session- und Usermanagement Templates gegen Komplexität Situation: 1. Möglichst hohe Uptime 2. Upgrades (Sicherheit, Hardware,... ) Speicherverwaltung, -löcher, Garbage Collection Hotplug an JEDER Stelle vs. Kosten OS: Tauschbare Kernel, Virtualisierung,... Robuste Basisserver (z.b. Apache) 21 / 37 22 / 37 Sicherheit Statisch vs. dynamisch Statisch vs. dynamisch Situation: 1. Sicherheitsrelevante Daten in der Applikation 2. Clients, Protokolle, evtl. Lückenquellen Verschlüsselung, Transaktionen vs. Performance Protokolllücken durch weitere Schichten schliessen Ausschluss von Clientversionen (bestimmte Browser) Pluginmöglichkeiten: Virenscanner, Malware-Erkennung,... Statisch: Anfrage nach Datei Lokalisieren und ausliefern Dynamisch: (Teile der) Antwort vor Auslieferung generiert Datenbankabfragen (cf. Tier-Architektur) Spezielle Aufbereitung Sessions 23 / 37 24 / 37

SSI SSI Server Side Includes Server Side Includes II Erweiterung existierender HTML-Seiten durch dynamisch generierten Inhalt Direktiven in HTML-Kommentaren Auswertung der Seiten vor Auslieferung Ersetzen des Inhalts der Direktiven Beispiel Apache [Apa]: mod_include installieren und aktivieren Allgemeine Syntax: <!--#element att=val att2=val2... --> Zeit ausgeben: <!--#config timefmt="%a %B %d, %Y" --> Today is <!--#echo var="date_local" --> Gemeinsamer Footer: <!--#include virtual="/footer.html" --> 25 / 37 26 / 37 PHP PHP PHP (Hypertext Preprocessor) PHP II PHP is a server-side HTML embedded scripting language. Kontrollstrukturen, getypte Variablen, Arrays, Stringfunktionen Implementierungen für verschiedene Webserver Einfache Integration von Systemfunktionen, Dateizugriffsfunktionalität Stringmanipulation Datenbankzugriff Medientypen (Manipulation von Bildern, Erzeugung von PDF,... ) Syntax ähnlich zu C, Perl, Java In HTML-Syntax eingebettet ( PHP-Tags ) Beispiel: <?php i f ( $a==10) {?> <b>a i s t 10 </b> <?php else {?> <b>a i s t n i c h t 10 </b> <?php?> 27 / 37 28 / 37

CGI CGI (Common Gateway Interface) Servlets Format zum Datenaustausch zwischen serverseitigen Programmen (Skripts) und aufrufenden Clients Schnittstelle stellt den Skripts zur Verfügung: Umgebungsvariablen (z.b. SERVER_NAME) Weiterleitung von Ein- und Ausgaben Verarbeitung von HTTP-GET und HTTP-POST (Formularwerte und Aufrufparameter) Beliebige Programmiersprache (C, C++, v.a. Perl) CGI-Programm wird jeweis separat gestartet (eigener Prozess) Hohe Serverlast FastCGI Programme am Server Web-Server verfügt über JVM, Interpretation des Bytecode im Server (Java) Generierung von HTML durch Servlets Bibliotheken Anfrage- und Antwortobjekte,, Sessionverwaltung 29 / 37 30 / 37 Java Server Pages Active Server Pages Antwort von SUN auf Microsofts ASP Java-Syntax Kombination der Skript- und Servlet-Idee JSP-Compiler erzeugt Java-Quellcode Kompilation in Bytecode Aufruf eigener oder externer Java-Klassenbibliotheken (Beans) (Mögliche) Trennung von Darstellung und Logik Programmierung und HTML-Design Counter Bsp. von [uia05] <% Dim fs, getcounterfile, makecounttmpfile, CounterHits Set f s = Server. CreateObject ( " S c r i p t i n g. FileSystemObject " ) CounterFile = Server. MapPath ( " counter. t x t " )... CounterHits = CounterHits + 1 makecounttmpfile. WriteLine ( CounterHits ) makecounttmpfile. Close... response. w r i t e ( CounterHits ) %> 31 / 37 32 / 37

ASP.NET [Gmb05] ActiveX [Cor05] Nächste Version ASP In.NET Framework eingebettet MS IIS integriert Speichermanagement Managed Code Klassenbibliothek (vgl. java.net) Web Forms vs. XForms Komplementär zu.net Ansatz Controls: Zugriffsvermittlung zu COM(+), DCOM Einbettung der Windows- und Officeobjekte z.b. Bearbeitung eines Excel Dokuments auf dem Server Serverseitig für: 1. Thin -Servers 2. Weiterverarbeitung auf dem Server 33 / 37 34 / 37 Technik Zusammenfassung Server allgemein Allgemein verbreitete Lösung Technik : 1. Server sendet Keks -Datei 2. Client speichert diesen transparent 3. Interessante Daten (Mailadresse, SessionID,... ) Sicherheitsproblem: 1. Default-Einstellungen der Browser 2. Cookie-Zwang auf Webseiten Statisch vs. dynamisch SSI PHP CGI 35 / 37 36 / 37

Vielen Dank Für Ihre Aufmerksamkeit! Fragen? Apache. Apache Tutorial: Introduction to Server Side Includes. http://httpd.apache.org/docs/1.3/howto/ssi.html. Apache Jakarta Commons. Commons Threadpool. http: //jakarta.apache.org/commons/sandbox/threadpool/. Microsoft Corporation. COM: Component Object Model Technologies. http://www.microsoft.com/com/default.mspx, 2005. Microsoft Deutschland GmbH. Webanwendungen mit ASP.NET. http://www.microsoft.com/germany/msdn/library/ net/aspnet/webanwendungenmitaspnet.mspx, 2005. 1 und 1 Internet AG. 1 und 1 WebHosting FAQ. 37 / 37 37 / 37 http: //faq.1und1.de/hosting/search/go.php?t=n39116, 2005. 37 / 37