[Mono-dev] proxygen bindings

Nikita Tsukanov keks9n at gmail.com
Wed Dec 3 17:59:30 UTC 2014


Hello. Have you guys heard of the proxygen (
https://github.com/facebook/proxygen/ ) - an HTTP stack library recently
released by Facebook? It supports HTTP, SPDY, websockets and will support
HTTP/2.0 later.

I was playing around with it and created some initial bindings that allow
to write code like this:
https://github.com/kekekeks/prowingen/blob/master/managed/Sandbox/Program.cs

It performs rather good, I've got 41K requests/sec on my laptop, but
obliviously needs a lot more work for production use.

1) Is anyone interested in this sort of thing? I was initially planning to
implement an OWIN server on top of proxygen, but now I'm not so sure, since
I'm currently using my wrapper to libevent's HTTP server (
https://github.com/kekekeks/evhttp-sharp/ ) and quite happy with it's
performance which is almost the same (up to 38K rps on the same machine,
both benchmarks without thread pooling). The only thing it lacks is
websocket support, but I can live with that. Proxygen also can't be
compiled for Windows platform at all, so that server will be mono-only.

2) Does anyone have benchmark data on Kestrel? When I hammer it with ab or
wrk it just hangs and stops responding to any requests. If it can keep up
with proxygen in terms of performance, such bindings would be useless.

3) Is there any way to speed up interop calls? When I replace C++ handler
implementation with managed one that does essentially the same thing, the
performance drops drastically, i. e. from 130K to 40K rps). Currently I'm
using COM as a bridge ( with some basic infrastructure
native->managedimplementation -
https://github.com/kekekeks/prowingen/blob/master/native/include/com.h ).
Is there a better way?

Regards,
Nikita
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20141203/7b8c5d4a/attachment.html>


More information about the Mono-devel-list mailing list