Pull to refresh

Comments 24

Спасибо за интересную статью.
Я в работе тоже встретился с проблемой не закрывающихся транзакций к MySQL, но к сожалению так и не нашёл решения. Судя по багтраку, проблема известна и встречается крайне часто. Обещали исправить, но до сих пор встречается и очень часто.
Отлично! Спасибо вам за такую обширную работу. Кросплатформенность — сложная, но вместе с тем укрепляющая ядро проекта вещь.
Надеюсь, в новом году число ваших клиентов приумножится =) с наступающим!
К сожалению, на данный момент SignalR не позволяет использовать вебсокеты под Mono, поэтому была предпринята попытка в качестве транспорта использовать Long Polling.

Пилю понемногу OWIN-сервер на базе фейсбучного proxygen. Учитывая, что proxygen вебсокеты поддерживает, тут они тоже будут, когда более-менее стабилизируется всё остальное. Пока на живом проекте это дело не использовалось, но на локалхосте удалось из WebApi на нём выжать 22K запросов в секунду. Если интересно, можете присоединяться.

В чем дело: HTTP WCF Mono сервис имеет много мелких различий по сравнению с Microsoft версией (например, небольшие различия в xml при сериализации; в mono версии расширения нельзя указать через атрибуты, только через конфигурационный файл; отсутсвует HttpContext.Current, и так далее).
WCF скоро скопипастят из .NET 4.6, прогресс копипасты можно смотреть тут, а при желании просто собрать самостоятельно и таскать за собой нужную реализацию.
Пару лет назад пришлось приводить в чувства проект под моно, доставшийся «в наследство». Сделал вывод — моно не подходит, на тот момент он был слишком сырой. Не думаю, что за это время что-то изменилось. Приложение было серверным и падало на продакшене где-то раз в два дня в коредамп. Установить истиную причину падений так и не удалось, хорошо что заказчика устроил перезапуск.

И еще там запомнился странный баг компилятора. Если в одном из файлов проекта в определенном месте добавить пробел — в шарпдевелопе под линуксом оно не собиралось. В последующих версиях, я пробовал — этот баг уже исправили, но все равно сам факт такого бага выглядит странным.

Кроме того, там была еще веб-морда, которая работала под вебсервером xsp2. И все хорошо, но стактрейсы оно показывало урезано — без номеров строк и имен процедур. Т.е., была видна только вложенность. Происходило это по той причине, что вижуалстудия дебажную информацию клала в отдельный файл, который под линуксом не понимался. Шарпдевелоп тогда вообще не умел делать проекты для xsp2, как сейчас — не знаю. Из за этого редкий глюк, который проявлял себя раз в несколько дней, найти так и не удалось. В итоге сошлись на том, что если глюк появляется — просто перегружают страничку.

С тех пор для меня решен вопрос «mono vs java». Если надо делать что-то под линукс — моно даже не рассматриваю как серьезную альтернативу.
И все хорошо, но стактрейсы оно показывало урезано — без номеров строк и имен процедур.
переменная окружения MONO_OPTIONS=--debug включает загрузку символов. Если они в pdb, то их надо сконвертить в mdb специальной утилитой.
Шарпдевелоп тогда вообще не умел делать проекты для xsp2, как сейчас — не знаю.
MonoDevelop сто лет как умеет под XSP запускать, вероятно, у вас что-то было недоустановлено.
И еще там запомнился странный баг компилятора. Если в одном из файлов проекта в определенном месте добавить пробел — в шарпдевелопе под линуксом оно не собиралось. В последующих версиях, я пробовал — этот баг уже исправили, но все равно сам факт такого бага выглядит странным.
Не понимаю, зачем собирать чем-то кроме студии, но вам виднее.

Ещё есть мнение, что вы зачем-то его запускали на Mono 2.6 при живом 2.10.8 (это же 2 года назад было, верно?) да ещё и с Boehm вместо GC.
Насколько помню, студия делала mdb, а моно их просто не читало, хотя опцию --debug включал. Но инфа не 100%, т.к. это было давно. Делал еще какой-то финт ушами, но уже не помню что. Было это не менее, чем 2 года назад — т.е., так давно что уже точно неприпомню когда.

По этой же причине версию моно тоже не помню, могу лишь сказать что ставил самую последнюю на тот момент. Помню, что ставил из пакетов, с исходниками не возился. Поэтому какой там GC стоял — тоже сказать не могу.
Студия не умеет писать mdb, только pdb. Есть специальная утилита pdb2mdb, её надо натравливать. В штатных репозиториях очень долгое время был 2.6 в то время как в разных PPA и прочем были более свежие и рабочие версии.
В этом году Microsoft многих удивил, открыв исходники .NET Core. Обещали открыть Runtime в 2015, были слухи о слиянии C# и Mono. Поэтому на данный момент всё может быть не так плохо (сам с C#/Mono не работаю, только новости пробегаю глазами).
Честно говоря, глядя на то, как работает скайп под линуксом — я бы неособо надеялся, что в ближайшем обозримом будущем под линуксом будет полноценный стабильный шарп.
Вы путаете компанию, которая пилит Скайп, и принадлежит МС и сам МС. Даже внутри МС каждая команда может сама выбирать свой стиль и подход к разработке. Это совершенно разные команды разработки. В свете открытия исходников и возможности к выходу следующей студии переехать на кроссплатформенный стек — для меня Java потеряла всякий смысл и интерес. Как и для нескольких проектов о которых я знаю. А если товарищ kekekeks допилит свои биндинги для OWIN — вообще будет сказка)
Если не хочется ждать этих биндингов, можно пока вот эту штуку на базе libevent/evhttp использовать, вебсокетов нет и не планируется, зато в продакшне уже больше года крутится. Оно, правда, для NancyFx преимущественно делалось, но перед конфой .NEXT я туда докрутил OWIN-хост. С WebApi использовать так.
У меня все проекты используют MVC+WebApi. Пока максимально отвязался от Sytem.Web, перенес все модули в OWIN middleware и жду порта) Но спасибо за наводку. Попробую в одном из своих личных проектов.
Там не будет слияния как такового — в Mono будут перетаскиваться куски дотнета, которые не прибиты гвоздями к Win32 API.
UFO just landed and posted this here
Ясно. Ну что ж. Значит, развивается моно!

Все равно, по моему мнению, это нелинуксовая технология. Какая будет завтра политика микрософта — мы знать не можем. При должном желании микрософт, как более крупная компания, может это моно как потопить, так и выкупить. Или выкупить и прекратить поддержку. Например.

Посмотрим, что будет дальше. Пока будущее моно неясно, а настоящее ненастолько светлое, чтоб можно было на эту технологию перейти.
Но на этапе нагрузочного тестирования SignalR-сервер падал с исключением System.IO.IOException: «Too many open files» — примерно после тысячи подключений клиентов.


Почитайте про ulimit — проблема возможно решится без правки SignalR
Дело в том, что происходит утечка сокетов, а не просто сервер упирается в ограничения по открытым сокетам. ulimit только отсрочит падение сервера.
Какую боль вы решаете? Пока я вижу, что вы боль создаёте. А это плохо — карму портит.
Не могли бы вы уточнить версию mono, версию asp.net mvc,… Давно хочу поиграться с asp.net mvc под mono.
Инфраструктура именно ASP.NET работает не очень хорошо и местами подтормаживает. Лучше играйте пока с WebAPI, ServiceStack, NancyFx и прочими фреймворками, умеющими хоститься поверх OWIN, там всё практически идеально. В vNext это исправят, перетащив ASP.NET MVC и WebPages на OWIN, но пока оно в ранней бете.
Интересно, а насколько в итоге получились соизмеримы трудозатраты на портирование и коммерческий выхлоп от этого?
UFO just landed and posted this here
Sign up to leave a comment.

Articles