[Mono-dev] Mono and ASP.NET vNext

Nikita Tsukanov keks9n at gmail.com
Thu May 15 17:51:37 UTC 2014


There are some existing wrappers:
https://github.com/kersny/libuv-csharp  - Dead, no commits for 3 years
https://github.com/txdv/LibuvSharp - uses Task (
https://github.com/txdv/LibuvSharp/blob/master/Examples/TcpAsync.cs ), so
it should have same problems with thread pool


2014-05-15 21:41 GMT+04:00 Greg Young <gregoryyoung1 at gmail.com>:

> That would make sense as the models are different. Also that libuv wrapper
> from looking looks fairly promising.
>
>
> On Thu, May 15, 2014 at 8:38 PM, Nikita Tsukanov <keks9n at gmail.com> wrote:
>
>> I think we should have something like Mono.Sockets with abstraction of
>> event loop and I/O code based on libuv or whatever, and build classes like
>> HttpListener on top of it.
>>
>>
>> 2014-05-15 21:30 GMT+04:00 Nikita Tsukanov <keks9n at gmail.com>:
>>
>> I suspect that having libuv behind socket code won't help much, since
>>> most of socket performance problems are related to the fact that
>>> BeginSend/Recieve, event loop and AsyncCallback run in different threads.
>>> Because of that we have overhead even with simple
>>> void ReadNext()
>>> {
>>>    _socket.BeginRecieve(buf, blablabla, res=>
>>>    {
>>>        _socket.EndRecieve(res);
>>>        ReadNext();
>>>    });
>>> }
>>> On windows that works fine because of IOCP behind that abstraction that
>>> is designed to be used with thread pool. *nix platforms doesn't have
>>> anything like IOCP, only epoll/kqueue, so for actual performance
>>> improvement one have to use single-threaded approach (with round-robin
>>> connection dispatch between workers), when all I/O operations and event
>>> loop run in single thread.
>>>
>>>
>>>
>>>
>>>
>>> 2014-05-15 20:55 GMT+04:00 Miguel de Icaza <miguel at xamarin.com>:
>>>
>>> Hello,
>>>>
>>>> Well, i want to see a prototype, and then decide.
>>>>
>>>> So this needs to be done with some kind of peer framework where this is
>>>> done.
>>>>
>>>>
>>>> On Thu, May 15, 2014 at 9:29 AM, Greg Young <gregoryyoung1 at gmail.com>wrote:
>>>>
>>>>> Yes I would say moving both to libuv would be a good move :)
>>>>>
>>>>>
>>>>> On Thu, May 15, 2014 at 4:22 PM, Roope Kangas <roope at grandcrugames.com
>>>>> > wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> On a tangent...
>>>>>>
>>>>>> It would be really nice if something like libuv would the thing
>>>>>> behind Socket code.
>>>>>>
>>>>>> Could that be something to investigate?
>>>>>>
>>>>>> Mono could basically piggyback on nodejs development.
>>>>>>
>>>>>> --
>>>>>> Roope Kangas
>>>>>>
>>>>>> On 15.5.2014, at 15.00, Greg Young <gregoryyoung1 at gmail.com> wrote:
>>>>>>
>>>>>> So the one issue I have seen with the libevent implementation is that
>>>>>> it seems to perform very poorly in windows (+-5k hello worlds/second where
>>>>>> as its closer to 100k/second in linux). From researching libevent they
>>>>>> supposedly now use IOCP in windows and should be better but I have not been
>>>>>> able to make this happen. It may also be worth looking at libuv which is
>>>>>> pretty close to a drop in replacement for libevent as it seems to get much
>>>>>> better performance in windows and similar performance in linux. @Nikita I
>>>>>> will hopefully have some time next week and likely will send some more pull
>>>>>> requests in relation to the memory allocation patterns.
>>>>>>
>>>>>>
>>>>>> On Thu, May 15, 2014 at 6:56 AM, Miguel de Icaza <miguel at xamarin.com>wrote:
>>>>>>
>>>>>>> Hello Nikita!
>>>>>>>
>>>>>>> Your approach looks fabulous!   I look forward to trying it out!
>>>>>>>
>>>>>>> Miguel
>>>>>>>
>>>>>>>
>>>>>>> On Wed, May 14, 2014 at 11:40 AM, Nikita Tsukanov <keks9n at gmail.com>wrote:
>>>>>>>
>>>>>>>> I'll try to implement OWIN host on top of my libevent built-in http
>>>>>>>> server ( https://github.com/kekekeks/evhttp-sharp ) since for now
>>>>>>>> it's the fastest thing for handling HTTP-requests on Mono I know (now it
>>>>>>>> has host implementation for NancyFx which we are using in production for
>>>>>>>> half of a year).
>>>>>>>> Although both evhttp-sharp and FastCGI servers like HyperFastCGI
>>>>>>>> and Fos, are incapable of serving websockets (one because of underlying
>>>>>>>> implementation, another because of limitations of FastCGI protocol), so it
>>>>>>>> would be great to wrap something like
>>>>>>>> https://github.com/kekekeks/evhttp-sharp which has websocket
>>>>>>>> support and positioned as evhttp drop-in replacement.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Nikita
>>>>>>>>
>>>>>>>>
>>>>>>>> 2014-05-14 19:29 GMT+04:00 Marcelo Zabani <mzabani at gmail.com>:
>>>>>>>>
>>>>>>>> Wow! This is such great news!!
>>>>>>>>>
>>>>>>>>> As for running Owin applications with Unix HTTP servers, I've
>>>>>>>>> developed Fos <http://github.com/mzabani/Fos> on a very
>>>>>>>>> permissive license and a focus on good documentation and running with Mono
>>>>>>>>> on *nix. I would very much love getting contributions on this, because my
>>>>>>>>> spare time is running lower these days.
>>>>>>>>>
>>>>>>>>> Hope it helps,
>>>>>>>>> Marcelo.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, May 14, 2014 at 12:44 AM, Miguel de Icaza <
>>>>>>>>> miguel at xamarin.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hello guys!
>>>>>>>>>>
>>>>>>>>>> Microsoft has open sourced ASP.NET vNext:
>>>>>>>>>>
>>>>>>>>>> http://github.com/aspnet/home
>>>>>>>>>>
>>>>>>>>>> This is an entire new web stack that only needs the core of Mono
>>>>>>>>>> (does not even use System.Web.dll!).
>>>>>>>>>>
>>>>>>>>>> So these are of course great news, because (a) The core Mono has
>>>>>>>>>> been in active development, and (b) that means that Mono's on the server
>>>>>>>>>> can be used without all those pesky limitations that have been plaguing us
>>>>>>>>>> for years.
>>>>>>>>>>
>>>>>>>>>> So we ran into a couple of limitations in Mono: some classes that
>>>>>>>>>> they need are not implemented (I filed a bug, and a couple of Xamarin folks
>>>>>>>>>> decided to take on that on their copious spare time) and we have a couple
>>>>>>>>>> of bugs on FileSystemWatcher on OSX.
>>>>>>>>>>
>>>>>>>>>> But this is a great time to:
>>>>>>>>>>
>>>>>>>>>>    - Get involved with the github.com/aspnet project and submit
>>>>>>>>>>    contributions that will make the software run on Unix.
>>>>>>>>>>
>>>>>>>>>>    - Look into technologies like Owin and Katana (sp?) and help
>>>>>>>>>>    us have a story that plugs into Unix HTTP servers (the equivalent of our
>>>>>>>>>>    bridge between Apache and mono: mod_mono, or our Fast CGI bridge to mono).
>>>>>>>>>>
>>>>>>>>>>    - Take Mono's new profiling tools and performance counters
>>>>>>>>>>    for a spin and help us fine tune the runtime to run .NET code faster on
>>>>>>>>>>    Unix than you can on Windows.  While this is a tall order, my friend David
>>>>>>>>>>    Miller would expect nothing less from us.
>>>>>>>>>>
>>>>>>>>>> Hugs and love,
>>>>>>>>>> Miguel
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Mono-devel-list mailing list
>>>>>>>>>> Mono-devel-list at lists.ximian.com
>>>>>>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Mono-devel-list mailing list
>>>>>>>>> Mono-devel-list at lists.ximian.com
>>>>>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Mono-devel-list mailing list
>>>>>>>> Mono-devel-list at lists.ximian.com
>>>>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Mono-devel-list mailing list
>>>>>>> Mono-devel-list at lists.ximian.com
>>>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Studying for the Turing test
>>>>>>
>>>>>> _______________________________________________
>>>>>> Mono-devel-list mailing list
>>>>>> Mono-devel-list at lists.ximian.com
>>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Mono-devel-list mailing list
>>>>>> Mono-devel-list at lists.ximian.com
>>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Studying for the Turing test
>>>>>
>>>>> _______________________________________________
>>>>> Mono-devel-list mailing list
>>>>> Mono-devel-list at lists.ximian.com
>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Mono-devel-list mailing list
>>>> Mono-devel-list at lists.ximian.com
>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>
>>
>
>
> --
> Studying for the Turing test
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20140515/1c9f42ae/attachment.html>


More information about the Mono-devel-list mailing list