You are here:
(27 Nov 2007,
<!-- * Set PREV_SKIN = customtitle * Set CUSTOMHEADTITLE = Home page of the <nowiki>WebFunctions</wiki> Project * Set CUSTOMTOPICTITLE = <it><nowiki>WebFunctions</wiki></it> * Set WEBTITLE = --> %TOC% ---+++ Project Overview <nowiki>WebFunctions</nowiki> is a domain specific embedded language for web authoring, implemented in Haskell. The functionality of the <nowiki>WebFunctions</nowiki> framework was inspired by Apple's [[http://www.apple.com/WebObjects][WebObjects]]. We claim it is easier to use since the Haskell type checker makes a lot of extra checks, that are absent from the Apple framework. Unfortunately we do not yet have all the nice tooling and special editors, but we are working on this. Some important features of the <nowiki>WebFunctions</nowiki> system are: loose coupling between model, view and controller code, transparent handling of session and application state, the ability to run the whole web application inside a single process, type safe HTML generation and database interaction and abstracted database interaction. For HTML generation, [[http://www.informatik.uni-freiburg.de/~thiemann/haskell/WASH/][WASH/HTML]] is used. [[http://haskelldb.sourceforge.net/][HaskellDB]] is used for database interaction. An important difference from some other Haskell software in the same field is that a <nowiki>WebFunctions</nowiki> application comes with a built-in web server. Because of this, no CGI is used to handle the request and the state is persistent at the server. This also means no serialization/deserialization of the state is needed. Furthermore, a database abstraction mechanism is implemented that provides the programmer with concurrency support, caching, and transaction management per session. ---+++ Using <nowiki>WebFunctions</nowiki> You can download <nowiki>WebFunctions</wiki> from the [[Releases]] topic. Source code is available from [[SourceCode]]. You need a new version of the [[http://www.haskell.org/ghc][Glasgow Haskell Compiler]] (6.4 or newer). Cd into the =src= directory and do =make=. This will compile an example web application you can start by doing =./example=. See [[Documentation]] for more details. ---+++ <nowiki>WebFunctions</wiki> is based upon * The ideas used in the (object oriented) Apple's [[http://www.apple.com/WebObjects][WebObjects]] * [[http://www.haskell.org/~simonmar/bib/webserverjfp_abstract.html][Simon Marlow's ideas]] about writing a web server in Haskell. ---+++ <nowiki>WebFunctions</wiki> reuses * The HTML generation monad [[http://www.informatik.uni-freiburg.de/~thiemann/haskell/WASH/][defined in WASH]] * [[http://haskelldb.sourceforge.net/][HaskellDB]], for database interaction ---+++ People * Main.RobertVanHerk, for whom the development was his master thesis project * Main.DoaitseSwierstra, who supervised Robert * Main.AtzeDijkstra, who is one of our local <nowiki>WebObjects</nowiki> experts
ore topic actions
Topic revision: r39 - 27 Nov 2007,
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding UUCS?