simple web server, mongrel, D

Marcio mqmnews123 at sglebs.com
Thu Oct 12 12:58:02 PDT 2006


May be of interest to people doing web server stuff in D.

marcio

http://mongrel.rubyforge.org/faq.html
Q: How is Mongrel designed?

The design of Mongrel most closely matches Simple 
(http://simpleweb.sourceforge.net/) which is a very nicely designed web 
server framework for Java. Despite being written in Java, Simple is very 
clean and simple, thus the name (clever eh?). The main difference 
between Mongrel and Simple is that Simple monitors returned output from 
handlers so that it can modify the results. Mongrel instead uses Ruby’s 
blocks to get the same effect.

As for the internals of Mongrel there are a few key technologies being used:

     * A custom HTTP 1.1 parser written based on the RFC standard and 
using an ABNF dump thankfully put online by someone. The parser is 
written using Ragel and is written C as a Ruby extension.
     * A URIClassifier that uses a Ternary Search Trie written by Peter 
A. Friend and modified to quickly look up handlers for a URI based on a 
prefix. This makes finding any handler from any URI quick and painless 
and is much faster than the alternative of parsing the path and using 
nested Hash structures.
     * A simple server that uses the parser and URIClassifier to process 
requests, find the right handlers, and then pass the results on to the 
handler for processing.
     * Handlers are responsible for using HttpRequest and HttpResponse 
objects to do their thing and then return results.

Other than this there’s not much more to it.



More information about the Digitalmars-d mailing list