[Haskell-cafe] ANN: Webwire 0.1.0, netwire 1.2.5
Michael Snoyman
michael at snoyman.com
Fri Sep 16 10:58:14 CEST 2011
On Fri, Sep 16, 2011 at 11:44 AM, Ertugrul Soeylemez <es at ertes.de> wrote:
> Michael Snoyman <michael at snoyman.com> wrote:
>
>> Nice to see another project taking advantage of WAI and Shakespeare. I
>> look forward to seeing some example code as well, though I personally
>> am very wary of continuation-based frameworks.
>
> AFRP uses continuations under the hood, so you can view webwire as
> continuation-based to some extent. But out of interest, why are you
> wary? This is highly experimental work, and I see some problems coming:
>
> * Lower performance, though that can be fixed. Right now I'm getting
> up to about 8000 requests per second using apachebench with -n 10000
> and -c 1000, which is probably not enough for high volume sites.
>
> * Sessions are a runtime-only phenomenon. This is a more serious
> problem, for which I don't currently have a general solution, though
> for most applications specialized solutions can be written.
>
> * FRP and netwire in particular have a steep learning curve.
>
> If you see any further potential problems, I'd be very grateful, if
> you'd let me know.
I'm not sure what you mean by runtime-only, could you clarify? The
reason I'm wary of continuation-based frameworks is that (at least
from what I've seen) they are purposely non-RESTful. I know REST is a
buzzword, but the other way to put it is: you're going to end up
working against most of what HTTP is doing. There are good reasons why
HTTP is stateless, and that shouldn't be circumvented lightly.
I don't want to go too far on this right now, as I'm not an expert on
cont-based frameworks, and I'm certainly not sure how webwire works.
But from what I've seen in the past, you end up with ugly URLs and bad
caching behavior. I think web developers *should* have to think about
the fact that a page request is an inherently stateless operations,
and storing state data should be a huge exception[1], not the norm.
Michael
[1] Obviously, there are some *common* exceptions, like authentication.
More information about the Haskell-Cafe
mailing list