<div dir="ltr"><div><div><div><div><div><div><div><div>Hello. Have you guys heard of the proxygen ( <a href="https://github.com/facebook/proxygen/">https://github.com/facebook/proxygen/</a> ) - an HTTP stack library recently released by Facebook? It supports HTTP, SPDY, websockets and will support HTTP/2.0 later.<br><br></div></div>I was playing around with it and created some initial bindings that allow to write code like this:<br><a href="https://github.com/kekekeks/prowingen/blob/master/managed/Sandbox/Program.cs">https://github.com/kekekeks/prowingen/blob/master/managed/Sandbox/Program.cs</a> <br><br></div>It performs rather good, I've got 41K requests/sec on my laptop, but obliviously needs a lot more work for production use.<br></div><div><br></div>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 ( <a href="https://github.com/kekekeks/evhttp-sharp/">https://github.com/kekekeks/evhttp-sharp/</a> ) 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.</div><br>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.<br></div><br>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 - <a href="https://github.com/kekekeks/prowingen/blob/master/native/include/com.h">https://github.com/kekekeks/prowingen/blob/master/native/include/com.h</a> ). Is there a better way?<br><br></div>Regards,<br></div>Nikita<br></div>