[Mono-dev] proxygen bindings

Rafael Teixeira monoman at gmail.com
Wed Dec 3 20:29:55 UTC 2014


I would say in the interop calls, you'll need to drop COM and implement
custom marshalling to avoid messy copying/conversion of structs and strings
(CLR uses UTF-16 strings internally and I didn't dig into proxygen or your
COM wrapper to see what it uses, but probably it is utf-8 or some
multi-byte encoding, so at least some conversions will be needed)

On Wed Dec 03 2014 at 3:59:40 PM Nikita Tsukanov <keks9n at gmail.com> wrote:

> 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
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20141203/3e75b6cb/attachment.html>


More information about the Mono-devel-list mailing list