Personal tools

Web/Frameworks/HAppS

From HaskellWiki

< Web | Frameworks(Difference between revisions)
Jump to: navigation, search
(Added info about happs being out of date, go to see happstack)
m (HAppS moved to Web/HAppS)

Revision as of 14:28, 3 October 2010

Haskell Web Development

Software:
Servers - Libraries - Frameworks
Deploy - Cloud
Interfaces to frameworks
Databases and Persistence
Testing and Verification
Content Management

Community & Research:
Forums and Discussion
Literature (research, talks and blogs)
Existing Haskell web applications
Ongoing projects and ideas

Note: HAppS is now unmaintained and out of date. See Happstack

HAppS (short for Haskell Application Server) is a web framework.

Features:

  • monadic framework for ACID transactions
  • an HTTP server (outperforms Apache/PHP in informal benchmarks)
  • SMTP server and mail delivery agent
  • DNS resolver in pure Haskell
  • XML and XSLT support.

Disadvantages:

  • By using HAppS's state management, you are committing yourself to keeping your entire state in memory at all times, rather than disk -- YOUR STATE MUST ALWAYS FIT IN MEMORY
  • Nearly undocumented, rapidly changing. Since there is little documentation, you may find yourself looking at blog post tutorials, but since it is rapidly changing, about half of these tutorials are out of date.
  • Large set of available library functions. You don't need most of them, but because documentation is poor, it can be intimidating.

Introductions to the big idea:

"...data is kept hot in Memory with changes journaled for system recovery.

Prevayler' s architecture is illustrated in the diagram shown here. Prevayler [1] serves as a transactional barrier for the business objects [2] of your application, held in Memory. You encapsulate all modifications of your business objects into instances of the Transaction interface [3], much like a " command " pattern (though different from a command in some details of the pattern). Whenever you ask Prevayler to execute a transaction on your business objects [4], Prevayler first writes the transaction object to a journal [5] so that data is not lost if your system crashes. Prevayler can also write a snapshot of your entire business object graph [6] as often as you wish. Prevayler uses the latest snapshot together with the journals to automatically recover your business objects from disk [7] on application startup by restoring the snapshot and then re-executing every transaction that was originally executed after that snapshot was taken." (see the diagram at [1])

Tutorials / tutorial blog posts / examples:

Combining HAppS with other stuff:

Websites using HAppS:

Other lists of HAppS links:

Old, out-of-date tutorials:

Email list: http://groups.google.com/group/HAppS

IRC logs: http://tuukka.iki.fi/tmp/logindex

Some of the devs:

For alternatives to HAppS, see Applications_and_libraries/Web_programming.