<p>So you will have one executable for totally different applications? <br> <br>I think there could be some problems on compilation with different package-versions and/or the same module-names from different packages. <br>
I don&#39;t know could it be resolved painlessly or not.</p>
<p>Dmitry</p>
<div class="gmail_quote">2010/11/23 Michael Snoyman <span dir="ltr">&lt;<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Just thought I&#39;d throw out an idea I&#39;ve been bouncing around and see<br>if anyone would be interested in either using or implementing it.<br>
Basically, it allows multiple WAI applications to be run as a single<br>app and switch which app responds to a request based upon the Host,<br>the same way virtual hosting works in web servers like nginx, Apache<br>or lighttpd. I would imagine the type signature would look something<br>
like:<br><br>vhost :: [(String, Application)] -&gt; Application -&gt; Application<br><br>The first argument would be a list of applications and their<br>respective virtual hosts (this would probably be better as a Map for<br>
performance, kind of irrelevant at this point). The second argument<br>would be the default application to run when none of the vhosts match.<br>This could even just be an app that always returns a 404. It returns a<br>new application handles all of this transparently.<br>
<br>I can see two immediate uses:<br><br>* Instead of running a whole bunch of WAI fastcgi processes on a<br>server, you could run just a single process that automatically deals<br>out requests to the right app. This would save on memory usage,<br>
especially when your apps are all sharing the same Haskell libraries.<br><br>* Instead of needing a dedicated web server like nginx to handle<br>vhosting, you could use the Snap handler with this and be running a<br>pure Haskell stack. Advantage would be easier maintenance, plus better<br>
performance from cutting out the middleman.<br><br>At this point, it&#39;s just an idea. I don&#39;t think it&#39;s hard to<br>implement, but I wouldn&#39;t mind some feedback first. And if someone<br>else wants to take a crack at it, please speak up! I wouldn&#39;t mind<br>
having one less package to maintain.<br><br>Michael<br>_______________________________________________<br>web-devel mailing list<br><a href="mailto:web-devel@haskell.org">web-devel@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/web-devel" target="_blank">http://www.haskell.org/mailman/listinfo/web-devel</a><br>
</blockquote></div><br>