Pull to refresh

Comments 24

Тоже смотрел эту презентацию. Но из нее не ясно как запустить на Маке исполняемый файл веб-сервера.
И правильно ли я понял, что в ближайшие месяцы они выложат веб-сервер для linux который позволит хостит asp.net mvc приложения на линукс-хостинге? Типа bye bye iis!
Я подозреваю, что там обычный HttpListener используется.
По сути там Nancy. Да и разработчики там из того же комьюнити.
update: там — Project K
Вообще не понял написанного вами, если честно. Пожалуйста, изложите мысль более развёрнуто.
Касетельно нэнси — её в основном пилят достаточно адекватный и профессиональный thecodejunkie и наркоман grumpydev (сей персонаж считает допустимым тот факт, что ошибки при сериализации ответа и рендеринге вьюшки принципиально невозможно нормально обработать средствами фреймворка, молча рендерит ошибки компилятора в качестве ответа сервера и т. п.). Причём тут Nowin и разработчики ASP.NET мне не особо ясно.
В участниках Project K — Damian Hickey, который также работает над Nancy и за пивом рассказал, что благодаря этому и ряду других проектов попал в этот проект.
github.com/orgs/aspnet/members
Веб-сервер на Linux как бы и сейчас есть, например nginx + Mono-FastCGI или Apache + mod_mono. Или даже nginx + xsp.

На самом деле, главная фишка новой платформы — KRuntime, этакий CLR в песочнице. Учитывая, что на Mono сейчас работает далеко не 100% функционала, доступного в .NET (требует костылей или вовсе никак), это очень упрощает жизнь. Может быть, и не все будет так гладко, но тут уж не привыкать.
mono-fastcgi-server и xsp — страшные тормоза. И дело даже не в том, что сетевой стек небыстрый (поверх HyperFastCGI ASP.NET работает вполне неплохо), а в том, что очень неоптимально передаются запросы между AppDomain-ами, и есть ещё несколько ботлнеков, которыми никто не занимается. Самое шустрое что есть сейчас для обработки сырых запросов — мой враппер над встроенным в libevent HTTP-сервером. Поверх него есть хост для NancyFx (мы используем в production уже полгода), но по идее сделать поддержку OWIN — дело одного-двух вечеров. Мы с автором HyperFastCGI обсуждали некий унифицированный хост для ASP.NET с заменяемым http-сервером, но это дело заглохло из-за нехватки времени.
А насколько страшные тормоза? Можно узнать порядок цифр? То есть на данный момент нет возможности использовать ASP.NET приложение на Mac/Linux? Я NancyFx ковыряю периодически сам фреймворк нравится, но запускать в production не пробовал.
Я скинул ссылку на бенчмарки же. Там есть запуск NancyFx поверх обычного моновского ASP.NET-хоста и поверх моего враппера над libevent2, разница производительности в 23 раза. HyperFastCGI даст прирост тоже немаленький, автор там обошёл несколько ботлнеков (например, приложение и http-сервер живут в одном AppDomain). Он (автор HyperFastCGI) сейчас проводит рефакторинг этого дела с целью дать возможность подключать сторонние реализации http-сервера, использовать вместо System.Web OWIN, разхардкодить настройки и т. п. У меня так же в планах переехать с libevent на libwebsite, которая умеет сокеты. Если всё будет хорошо, то через пару месяцев будет достаточно быстрая реализация хоста без привязки к fastcgi.

Оу, не заметил ссылку. Пардон. Это очень интересно, но пока почему-то ссылка не открывается. Было бы неплохо по результатам работы пост на хабре.
Спасибо за наводку на HyperFastCGI! С ним, наконец-то, удалось настроить keepalive на nginx, что дало прирост req/s для MVC4 приложения в 1.5 раза (115.6 против 177.2). Это, хоть и не отменяет факта, что IIS все равно сильно быстрее (~400), само по себе уже хорошо.
Как-то маловато. У нас инстанс приложения на NancyFx на виртуалке на херцеровской железке выдаёт на простых запросах (там, где надо 1-2 запроса к базе) порядка 900-1000 rps, там, где нет необходимости в запросах е БД — 5-6К rps. Попробуйте посмотреть, что у вас с настройками пула потоков и пула соединений к БД, вполне вероятно, что именно в них что-то и упирается.
Я хоть и не использую ASP.NET, но новость, считаю, отличная. Надеюсь, что наконец-то у Java будет полноценный конкурент на платформах, отличных от Win.
Вот бы полноценно работало на MAC, плюс к этому IDE от jetbrains — цены бы небыло!
А вы попробуйте Xamarin, может быть уже работает. Я тут игрался как-то с некоторыми open source проектами (библиотеки и консольные приложения) — отлично открываются в Xamarin, никаких лицензий не нужно, так как это не мобильная разработка.
А Xamarin уже позволяет без танцев с бубном создавать бандлы для проектов, чтобы не требовался Моно в комплекте? Месяц назад смотрел — как были проблемы, так и остались.
Mkbundle в mono вроде идет в комплекте, там даже xamarin не нужен.
Или вы про другие бандлы?
В маковской версии от mkbundle толку мало. Я подозреваю, что ему для нормальной сборки бинарника нужен всё-таки GCC, так как XCode со всему тулзами ему не хватает. Надо попробовать на виртуалке, так как не могу произвольно доустанавливать софт на подопытной машине, там другие сборки делаются.
Как RaveNoX сказал — все идет в комплекте. Поставил и работает. По крайней мере так было у меня.
Т.е. вы на чистую систему с XCode поставили MDE и у вас не возникло проблем со сборкой статического бинарника???

Я столкнулся вот с такой штукой — скорее всего — не я один:

stackoverflow.com/questions/23089844/mono-3-4-0-mkbundle-under-mac-os-x-failed?rq=1

Если подскажете, как у вас собирается бандл — буду очень признателен.
У меня нормально собирается бандл. Там с версии 3.4 надо указать флаг на линковку с Foundation и Obj-C Runtime
Из описания к релизу
Breaking changes

mkbundle on Mac OS X now must always link against the Objective-C Runtime (-lobjc, however, it is recommended to link against the Foundation framework as well (-framework Foundation).
XamrinStudio очень неплоха. Они довольно активно ее дорабатывают. И mono под маком хорошо работает. Есть небольшие косяки, но их быстро исправляют и они не критичные .(Работаю с Xamarin.Mac)
Sign up to leave a comment.

Articles