Serversoftware

Hunchentoot

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

Hunchentoot ist ein Webserver und -Framework, das komplett in Common Lisp geschrieben wurde, unter einer freien, BSD-ähnlichen, Lizenz steht, und ähnliche Ziele wie das inzwischen inaktive Projekt AllegroServe verfolgt. Mit Hunchentoot ist es möglich, dynamische Webseiten in der Programmiersprache Common Lisp herzustellen, weiterhin bauen wichtige Frameworks für diese Sprache, z.B. das Webframework UCW und das Ajax-Framework HT-Ajax darauf auf.

Inhaltsverzeichnis

[Bearbeiten] Funktionsweise

Hunchentoot kann als autonomer Webserver fungieren, hinter einem Webserver einbindbar, der als Proxy fungieren kann, und mithilfe des Apache-Mods mod lisp auch direkter in Apache eingebunden werden. In jedem dieser Fälle muss allerdings eine komplette Common-Lisp-Session am Laufen sein.

[Bearbeiten] Portabilität und Verbreitung

Hunchentoot ist unter den meisten verbreiteten Common Lisp-Implementationen lauffähig (wenn auch teilweise mit Einschränkungen) und ist einer der wichtigsten Webserver für Common Lisp. Auf den meisten Unix-Artigen Systemen kann Hunchentoot somit lauffähig gemacht werden. Trotz dieser Tatsache wird Hunchentoot im kommerziellen Bereich eher selten eingesetzt, was unter anderem wohl auf die Ablehnung gegenüber Lisp-Dialekten, das genutzte Garbage-Collecting und die Tatsache, dass eine Common-Lisp-Session permanent laufen muss, zurückzuführen ist. Außerdem existieren für den kommerziellen Nutzen Alternativen wie AllegroServe und das Webserver-Framework von LispWorks.

[Bearbeiten] Programmierung

Im Zusammenhang mit Hunchentoot und anderen Webservern für Common Lisp wird häufig die Ausdrucksstärke und Flexibilität dieser Sprache genutzt, um HTML-Seiten mittels Markup-Bibliotheken zu generieren. Das folgende sehr rudimentäre Codebeispiel erstellt eine einfache „Hallo Welt“-Seite und benutzt dazu die Markup-Bibliothek cl-who.

 ;Einbinden der Bibliotheken, Paket definieren
 (require :hunchentoot)
 (require :cl-who)
 (defpackage hallo-welt (:use :cl :hunchentoot :cl-who))
 
 ;In das Paket wechseln
 (in-package :hallo-welt)
 
 ;Seite definieren
 (defun http-seite ()
   (with-html-output (out (send-headers))
     (:html (:head (:title "Hallo-Welt-Seite"))
            (:body (:h1 "Hallo Welt")))))
 
 ;Webseite veroeffentlichen und Server starten
 (setf *dispatch-table* (list (create-prefix-dispatcher "/hallo-welt" 'http-seite)))
 (defvar *server* (start-server :port 8000))

Die Webseite ist nun unter

http://hostname:8000/hallo-welt

zu erreichen, wobei hostname den Hostname des Servers bezeichnet. Mit Root-Rechten funktioniert dieses Beispiel natürlich auch mit dem Port 80. Hunchentoot bietet auch noch ein eigenes Session-System und die Nutzung von Cookies. Auch SSL-Verbindungen werden unterstützt.

[Bearbeiten] Trivia

Der Name Hunchentoot ist dem Werk des US-amerikanischen Komponisten und Gitarristen Frank Zappa entlehnt. Hunchentoot ist dort Titelfigur eines (unveröffentlichten) Musicals, von dem Fragmente Eingang in Zappas 1979 erstmals erschienenes Album Sleep Dirt fanden.[1]

[Bearbeiten] Einzelnachweise

  1. Barry Miles: Zappa, S. 263. Rogner & Bernhard, Berlin 2005. ISBN 3-8077-1010-8

[Bearbeiten] Externe Links

Copyright © 2005-2010 Hardware-Aktuell. Alle Rechte vorbehalten.