[Mono-dev] proxygen bindings

Nikita Tsukanov keks9n at gmail.com
Wed Dec 3 20:33:46 UTC 2014


I figured out that the most costly thing is the creation of 2 RCW (Runtime
Callable Writer) per request. As long as I don't spam COM object instances
it should be fine. Althrough it wouldn't be really COM-way for
request/response objects.

2014-12-03 23:29 GMT+03:00 Rafael Teixeira <monoman at gmail.com>:

> 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/20141204/013a614f/attachment.html>


More information about the Mono-devel-list mailing list