Gliederung Anforderungen Entwurf Beispiel Implementierung

Slides:



Advertisements
Ähnliche Präsentationen
Strukturen in C Spelz, Sievers, Bethke.
Advertisements

Hochschule Fulda – FB ET Sommersemester 2010
Java-Servlets Gliederung: Allgemeine Informationen zu Servlets
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Sortieren I - Bubblesort -
Aufbau des Internets Überblick Prof. Dr. T. Hildebrandt
Kurze Einführung in ASP
Objektorientierte Programmierung
Datenbankzugriff im WWW (Kommerzielle Systeme)
Internetzugriff mit Strings und Streams
NATURAL Web-Integration 1 / 27/28-Feb-98 TST NATURAL Web-Integration Arbeitskreis NATURAL Süd Theo Straeten SAG Systemhaus GmbH Technologieberater Stuttgart.
Java 2 Enterprise Edition (J2EE)
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Sendeautomatisierung auf Windowsebene
Java: Dynamische Datentypen
FoPra-Vortrag von Bernadette Blum und Marvin Schiller
Repräsentation von Datenstrukturen im -Kalkül Simon Pinkel, Betreuer: Guido Tack Seminar: Theorie kommunizierender Systeme: Der -Kalkül.
Simon Georg Pinkel Alice Server Pages Funktionale Programmierung und das Web.
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Architektur von Web- Informationssystemen. © Prof. T. Kudraß, HTWK Leipzig Techniken zur DB-Server- Anbindung Client-Seite Java Applet ActiveXPlugInCGISSIServer.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Java Server Pages Implementierung eines Web-Service-Clients Pea 13: Maik Opitz, Martin Melle, Philipp Hake.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Seminarvotrag: PHP Von Stefan Niemczyk.
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
Zurück zur ersten Seite SEP Entwurf und Implementierung einer effizienten Rechenstruktur zur Baumdarstellung mittels Java-Texteditoren Betreuer : Matthias.
Systementwicklungsprojekt:
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
1) Download Programmpaket: Vector NTI Advance 9.1.
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Einführung Servlets/JSPs
Einführung in die Programmierung
Einbinden von Web-Videos in PowerPoint 2010
Learning By Doing Thema 1: Dynamische Webseiten und Online Datenbanken (Jarka Arnold) Thema 2: Simulationen, Sound, Schnittstellen (Aegidius Plüss) Thema.
Applets Java für’s Web.
PPS-Design einer eigenen WWW-Homepage SS 2003 Applets.
Die .NET Common Language Runtime
Die .NET Common Language Runtime
Proseminar an der TU München Martin Levihn
Grundlagen: Client-Server-Modell
Developer Day Office APPs entwicklen Simon Amrein Trivadis AG Die ersten Schritte in eine neue Office-Welt.
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 4 Folie 2 REST Web Services (1)
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 8 Folie 2 ASP.NET Zustandsverwaltung
Vergleich verschiedener Konzepte für das Software Engineering Praktikum.
Seminar: Entwicklung verteilter eingebetteter Systeme WS05/06 Betreuer: Info:
Programmierprojekt Java Server Pages
Oliver Spritzendorfer Thomas Fekete
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
Datenanbindung in Webapplikationen
Einführung in PHP.
Einführung in PHP 5.
Webseiten mit PHP, SQL, XML und Webservices Anhand praktischer Beispiele.
Datenbankanbindung in Web-Applikationen
Objektorientierte Modellierung mit UML
PHP PHP ( „PHP Hypertext Preprocessor") ist eine Skriptsprache
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Funktionsweise von CMS
7.-8. März 2013, Rosenheim Brand my SharePoint grafische Gestaltung von SharePoint 2013-Webseiten Fabian Moritz | MVP SharePoint Server.
Datenbanken im Web 1.
PERL Eike Busse2 Gliederung 1.Einleitung 2.Geschichte 3.Eigenschaften/Merkmale von Perl 4.HTTP Server und Perl 5.Sicherheit 6.Perl programmieren.
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
1 2nd Review, 13. Oktober 2000, Dortmund BMBF: IR 803 Erweitertes DSMS Lars-Olof Burchard.
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
Grundstruktur einer HTML-Seite 1 Thema Die Grundstruktur einer HTML-Seite.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
Datenbanken
 Präsentation transkript:

Funktionale Programmierung und das Web Alice Server Pages Funktionale Programmierung und das Web Simon Georg Pinkel, Betreuer: Guido Tack & Thorsten Brunklaus

Gliederung Anforderungen Entwurf Beispiel Implementierung Architektur Syntax Cookies Beispiel Implementierung Compileserver Word Sequences verwandte Projekte Zusammenfassung Fazit Ausblick Demo

Anforderungen Compiler zur Bearbeitung/Interpretation von HTML-seiten mit eingebetteten Programmfragmenten Handhabung von dynamischem Input wie Formularvariablen oder Cookies Datenbankschnittstelle Niedrige Reaktionszeiten

Architektur Datenbank Compiler index.asp Http Server

Architektur : ML Server Pages Datenbank Msp-Compiler index.msp Http Server Cache index.cgi CGI

Architektur : Alice Server Pages Http Server CGI Cache Interfaceclient (C) index.stc Datenbank Compileserver (Alice) index.amsp

Syntax Alice lässt sich folgendermassen einbetten: <?AMSP [alice-programm] ?> <?AMSP= [alice-ausdruck beliebigen typs] ?> <?AMSP$ [wordsequence] ?>

Syntax Alice lässt sich folgendermassen einbetten: <?AMSP [alice-programm] ?> <?AMSP= [alice-ausdruck beliebigen typs] ?> <?AMSP$ [wordsequence] ?> Um auf Formularvariablen/Cookies zuzugreifen, muss ein Skript einen speziellen Typ „formvar“ bzw. „cookies“ nach dieser Grammatik deklarieren: start ::= recordTy ty | primTy option | primTy eoption recordTy | ty * ... * ty ( ty ) ty list | ty vector (*) { tyrow } tyrow lab : ty [, tyrow] primTy int | real | char | string | bool | file (*) nicht erlaubt bei cookies

Cookies Lokal(beim Browser) gespeicherte Datenpakete  verteilter Zustand der Server Page Programmierer muss Typ „cookies“ definieren  Wert „cookies:cookies“ enthält eingehende Cookiedaten können über folgende Funktionen gesendet/gelöscht werden: val setCookies : cookies -> unit val deleteCookie : string -> unit

Beispiel ../index.amsp?n=6 <?AMSP type formvar = { n : int option } ?> ../index.amsp?n=6 <html><head>...</head> <body> <ul> </ul></body></html> val _ = List.app (fn x=> print("<li>" ^ Int.toString x) List.tabulate(#n formvar,fak)

Beispiel ../index.amsp?n=6 ../amspcache/<md5>.aml type formvar = { n : int option } ?> ../index.amsp?n=6 <html><head>...</head> <body> <ul> </ul></body></html> val _ = List.app (fn x=> print("<li>" ^ Int.toString x) List.tabulate(#n formvar,fak) type formvar = { n : int option } val _ = print („ ") val _ = List.app ... ../amspcache/<md5>.aml </ul> </body></html> val formvar = ... <html><head>...</head> <body> <ul>

Beispiel ../index.amsp?n=6 ../amspcache/<md5>.aml type formvar = { n : int option } ?> ../index.amsp?n=6 <html><head>...</head> <body> <ul> </ul></body></html> val _ = List.app (fn x=> print("<li>" ^ Int.toString x) List.tabulate(#n formvar,fak) type formvar = { n : int option } val _ = print („ ") val _ = List.app ... ../amspcache/<md5>.aml </ul> </body></html> val formvar = ... <html><head>...</head> <body> <ul> <html><head>...</head> <body> <ul> <li>1 <li>2 <li>6 <li>24 <li>120 </ul> </body></html> HTML-output

Implementierung: Compileserver Anfrage auf index.amsp: mit .amsp assoziiertes CGI-Programm(Interfaceclient) wird aufgerufen CGI Cache Interfaceclient (C) <md5sum>.stc Compileserver (Alice) index.amsp

Implementierung: Compileserver Anfrage auf index.amsp: mit .amsp assoziiertes CGI-Programm(Interfaceclient) wird aufgerufen Interfaceclient sammelt Daten und sendet sie an Compileserver CGI Cache Interfaceclient (C) <md5sum>.stc Socket - Kommunikation Compileserver (Alice) index.amsp

Implementierung: Compileserver Anfrage auf index.amsp: mit .amsp assoziiertes CGI-Programm(Interfaceclient) wird aufgerufen Interfaceclient sammelt Daten und sendet sie an Compileserver Compileserver checkt, ob Cache Eintrag (MD5-summe vom lokalen Pfad der Source) vorhanden bzw. up-to-date und kompiliert gegebenenfalls CGI Cache Interfaceclient (C) <md5sum>.stc Socket - Kommunikation Compileserver (Alice) index.amsp

Implementierung: Compileserver Anfrage auf index.amsp: mit .amsp assoziiertes CGI-Programm(Interfaceclient) wird aufgerufen Interfaceclient sammelt Daten und sendet sie an Compileserver Compileserver checkt, ob Cache Eintrag (MD5-summe vom lokalen Pfad der Source) vorhanden bzw. up-to-date und kompiliert gegebenenfalls Compileserver ruft über ComponentManager.Eval das Kompilat auf CGI Cache Interfaceclient (C) <md5sum>.stc Socket - Kommunikation Struktur mit Zustand Compileserver (Alice) index.amsp

Implementierung: Compileserver Anfrage auf index.amsp: mit .amsp assoziiertes CGI-Programm(Interfaceclient) wird aufgerufen Interfaceclient sammelt Daten und sendet sie an Compileserver Compileserver checkt, ob Cache Eintrag (MD5-summe vom lokalen Pfad der Source) vorhanden bzw. up-to-date und kompiliert gegebenenfalls Compileserver ruft über ComponentManager.Eval das Kompilat auf gesammeltes HTML/Cookiedaten werden an Interfaceclient geschickt CGI Cache Interfaceclient (C) <md5sum>.stc Socket - Kommunikation Struktur mit Zustand Compileserver (Alice) index.amsp

Implementierung: Compileserver Anfrage auf index.amsp: mit .amsp assoziiertes CGI-Programm(Interfaceclient) wird aufgerufen Interfaceclient sammelt Daten und sendet sie an Compileserver Compileserver checkt, ob Cache Eintrag (MD5-summe vom lokalen Pfad der Source) vorhanden bzw. up-to-date und kompiliert gegebenenfalls Compileserver ruft über ComponentManager.Eval das Kompilat auf gesammeltes HTML/Cookiedaten werden an Interfaceclient geschickt Interfaceclient sendet Daten an http Server CGI Cache Interfaceclient (C) <md5sum>.stc Socket - Kommunikation Struktur mit Zustand Compileserver (Alice) index.amsp

Implementierung: Word Sequences Von den ML Server Pages übernommen: datatype wseq = $ of string | && of wseq * wseq | ...

Implementierung: Word Sequences Von den ML Server Pages übernommen: datatype wseq = $ of string | && of wseq * wseq | ...  Einsparung von string-Konkatenationen: Konkatenation ist Baumkonstruktion Projektion des Baums ist der dargestellte string Bei Versendung wird der Baum traversiert und die Blätter sequenziell versendet

verwandte Projekte Alice Server Pages ML Server Pages + High-level Interface zum Zugriff auf Formulardaten/Cookies mit statischer Typprüfung - low-level Interface - Cookies müssen im Header deklariert werden - Effizienz erkauft durch Tricks(Compileserver, Caching) + auch ohne Tricks schnell + Architektur portabel bezüglich Http Server-Interface - nur CGI

verwandte Projekte Alice Server Pages PHP + High-level Interface zum Zugriff auf Formulardaten/Cookies mit statischer Typprüfung + dynamische Daten werden in PHP-Datenstrukturen konvertiert - setzt Kenntnis von HTTP voraus - Effizienz erkauft durch Tricks(Compileserver, Caching) + auch ohne Tricks schnell - nur MySQL-API + reiche Bibliothek mit vielen Datenbank-APIs + Typsystem mit statischer Typprüfung - keine Typen

Zusammenfassung Compileserver kompiliert Skripte Formulardaten/Cookies werden geparst und in Alice-record konvertiert Niedrige Reaktionszeiten dank: Compile Server Umgehung der Startup-zeiten von Alice Von Skripten importierte Komponenten werden im Arbeitsspeicher gecacht Kann unabhängig vom Http Server betrieben werden Caching MySQL-API Aufwand: z4500 Zeilen Kern + z2000 Zeilen Beispielanwendung & Demos

Fazit Alice bietet einige Features, die sich zur Erstellung von Server Pages nutzen lassen: Statische Typprüfung für Formulardaten/Cookies  frühe Fehlerlokalisierung Höherstufige Funktionen bei der Erzeugung der Formulardaten/Cookies First-class compiler zur Skriptkompilierung Component Manager zur Ausführung von Skripten und Caching importierter Komponenten

Ausblick Compile Server noch nicht nebenläufig Anzeige von Kompilierungsfehlern im Browser High-level Bibliothek für Sitzungs-management Mehr Datenbank-schnittstellen (ODBC?)