A quick update.
Progress is slow. Customers keep getting in the way - weeks without a bug reported and then loads come in at once. Typical eh?
However, I have had some feedback and the next release should address at least some of these:
- HTTP Headers are currently not passed from IIS to the back-end server
- Unicode characters are currently mangled
- The auth_user and remote_user environment variables need to be passed through to the back-end server as pseudo-HTTP-header values to allow integrated Windows authentication
- RForwards does not currently deal with multiple applications installed into a single web-site
- Currently RForwards stores its state in the registry. Not only is this incompatible with the "multiple applications/single web-site" scenario above but it is likely to slow performance. Instead I am going to rely on IIS loading the DLL once and critical section a global variable for the state.
- Likewise, RForwards configuration is stored in the registry. Again, incompatible with multiple applications. Instead I am going to use a local INI file that is read on DLL-load.
Why bother? Lots of "corporate" clients want to have IIS as their web-front end and won't trust a poxy Ruby server (plus WEBrick only handles a single request at a time as ActionPack has a great big, fat mutex on entry). So RForwards makes it appear as if IIS is serving the requests while actually acting as a load balancer to many WEBrick processes. In this way, the pointy-hairs are kept happy ("oh yes, we use IIS to serve our Web 2.0 Rails AJAX tag-soup application just like Scoble suggested") and the mutex isn't overloaded as each WEBrick process in turn gets the chance to handle a request.
My personal deadline for this work is the end of May. So, as long as I can clear these bugs off my desk (and finish some other development also due at the same time) we should have a new, beta quality release by June.