UnCommon Web
Features
Linear Page Flow Logic
UnCommon Web provides developers with the
illusion that web pages are nothing more than function
calls. This characteristic allows developers to write
the page flow control logic as if it was a
"regular" sequence of function
calls. Developers can now ignore all of the accidental
complexities introduced by the stateless HTTP
protocol, the browser's "back" button and
window cloning and concentrate on creating complex web
applications.
Component Oriented UI
Components are CLOS objects which are used for
representing both the "look and feel" of an
application and the presentation logic. This component
oriented system allows both the graphical elements and
the presentation logic to be easily reused and
adapted.
UnCommon Web provides a library of
standard components which applications can tailor to
their specific needs. This library includes, among
others: a tabbed pane widget, a generic login form, a
"select from options" component and a range
view component.
Adaptability
The core request->eval->response loop is
written in terms of a well defined protocal based on
generic functions. Extending or modifying the core can
be accomplished by simply redefining generic functions
and defining classes. Modifications to the UI
generation or i18n sub-systems can be made with the
same ease.
Dynamic HTML Generation
UnCommon Web provides a programmer
friendly HTML generation library which uses intuitive
HTMLish macros and compiles to efficent text
generation code. UnCommon Web also provides a
designer friendly HTML templating system.
Both of these HTML generations systems are
available in an independent library yaclml.
Portable
UnCommon Web has been ported to various
Common Lisp
implementations: OpenMCL, CMUCL
and SBCL, CLISP
and Allegro.
UnCommon Web is able to use multiple HTTP server backends:
Apache + mod_lisp,
aserve (and
portableaserve),
or araneida. UnCommon
Web also contains a small pure lisp http
server.
Normal Web App Fare
UnCommon Web, like most web frameworks,
also provides: transparent session management (url
rewriting or cookie based); logging (via the arnesi
library); interactive error handling based restarts
and, for non interactive sessions and production
environments, web based inspectable backtraces and
customizable "user friendly" 501 error pages.
|