=== Top of the Swiki === Attachments ===

PluggableWebServer

The Pluggable WebServer (http://www.cc.gatech.edu/fac/mark.guzdial/squeak/pws/) is a web server and toolkit for flexibly creating CGI scripts. I designed and implemented it to help me create different kinds of collaborative tools: e.g. Virtual Other-Than-Communities. PWS builds on the work of GeorgGollmann

http://macos.tuwien.ac.at/Squeak/webServer.html

and is strongly influenced by TimJones

PWS is pluggable in three ways:

  • Decoupled URL Parsing and CGI Execution: The core of PWS is Georg's WebServer: the networking components and the parsing of the HTTP header. But, the interpreting the URL is decoupled from PWS; in Georg's WebServer, the URL is interpreted as an object and message; in Tim's WebTalk, the URL is a class name; and in most servers, the URL is a file reference. Instead, a separate ServerAction is handed the PWS request, and the ServerAction can determine how to interpret the URL and what to do to return: e.g., pass on a file, execute a CGI script and return the result, etc. A PWS contains a table of ServerActions, so one server can interpret URLs in several different ways.

  • Pluggable Server Actions: There are two ServerActions provided that are "pluggable" in the traditional sense: The instances hold the blocks to be executed for URL interpretation, and as instance variables. PluggableServerAction takes a processBlock and a returnBlock for processing any forms input and then computing a return HTML page, respectively. A SinglePlugServerAction just takes a processBlock and requires the processing block to get the response back to the request.

  • Embedded HTML: EmbeddedServerAction serves files, but wherever it encounters tags, it evaluates the embedded string as Smalltalk, and replaces the tag with the result. Actual interpretation and replacement occurs in the HTMLformatter class, which can be used as-is in Georg's or Tim's servers, too.

  • Examples include SqueakWiki