Как стать автором
Обновить
0

Mono и Moonlight *

Opensource-воплощение системы .NET Framework

Сначала показывать
Период
Уровень сложности

Android портирован на C#

Время на прочтение1 мин
Количество просмотров32K
В разгар битвы между Oracle и Google за право использовать Java/Dalvik в системе Android, компания Xamarin представила альтернативу — более производительную и энергоэффективную версию Android на С#. Тесты производительности говорят сами за себя.



В отличие от Sun и языка Java, компания Microsoft направила C# и .NET VM для стандартизации в ECMA, система защищена от патентных исков строгими требованиями ISO, а также обязательством Microsoft.
Читать дальше →

Новости

Обмануть Мигеля?

Время на прочтение5 мин
Количество просмотров39K

Как-то раз Мигель…
(Хотя нет, история не совсем о нем, попробую начать иначе)
Однажды в мире Open Source…
(Тоже мимо, OSS в истории затронуто лишь частично)
Когда жажду наживы называют здравым смыслом, начинается обман.
(Почти афоризм)

Предыстория

Стукнуло мне в голову написать программу под Мак на C#. Я поблагодарил Мигеля де Икасу за отличный Open Source проект Mono, воздал хвалу за его же библиотеку MonoMac, чуть ругнулся на сыроватый MonoDevelop и принялся за работу. Через некое время был оплачен аккаунт в AppStore, программа была в шаге от завершения, когда начался большой проект по основной работе и ее пришлось отложить. И вот через год пришло сообщение, что пустующий аккаунт в AppStore будет закрыт через 30 дней — это был знак, что надо что-то делать. MonoDevelop, обновившийся сам до Xamarin Studio, предложил сразу проект MonoMac преобразовать в Xamarin.Mac и повел меня на сайт, где было предложено купить этот самый Xamarin.Mac всего за $999, иначе деплоймент в AppStore будет невозможен.
Читать дальше →

Поговорим про отличия Mono от MS.NET

Время на прочтение9 мин
Количество просмотров77K


С каждым днём кроссплатформенная разработка под .NET становится всё более реальной. А после недавнего анонса официальной поддержки Linux/MacOS счастливое будущее стало ещё немножечко ближе. Вышеприведённая картинка утратила свою былую актуальность, ведь исходники теперь будут под MIT. Впрочем, писать кроссплатформенные .NET-приложения можно достаточно давно — в этом нам помогает Mono. Но вот отношение к нему в сообществе довольно неоднозначное. Мне зачастую приходится слышать изречения вроде «Mono тупит, под него всё в три раза медленнее работает» или «Под Mono вообще нормально ничего не запускается». Причём очень редко доводится слышать от этих людей конкретные факты. Вопросы «А что конкретно тупит?» или «А что конкретно не работает?» повергают их в ступор. Не всех (некоторые способны на конструктивную дискуссию), но большинство. Чаще всего начинаются возмущённые ответы в духе «Да вообще ничего не работает! А если и работает, то очень медленно!». В конце беседы создаётся впечатление, что каждая конечная машинная команда под Mono работает в несколько раз медленнее, а в половине исходников стоят throw new Exception().

В этом посте мне хотелось бы немножко поделиться опытом. Не так давно мы портировали наш продукт PassportVision (анонс на Хабре) под Linux. Могу заявить, что работает он вполне нормально. Да, чутка медленнее, чем под Windows на классическом .NET от Microsoft (далее — MS.NET). Но работает вполне стабильно, а падение производительности не принципиальное. При этом продукт у нас достаточно большой и вполне попадает под категорию enterprise, а возможности C#/.NET мы используем на полную катушку. Так что завести большое серверное приложение под .NET реально — было бы желание. Также мне довелось беседовать с разными разработчиками, которые пишут что-то под Mono — истории в большинстве своём успешные.

Но почему же тогда встречается столько негатива в сторону Mono? Я считаю, что проблема в том, что люди не особо хотят разбираться в разнице между рантаймами. Запустили разок какое-нибудь .NET-приложение под Linux на Mono 2.4, а оно с ходу не запустилось — всё, Mono целиком плохой, не будем его использовать. А в итоге виноват оказывается один-единственный метод, у которого реализация немного отличается от MS.NET. Новые версии Mono выходят раз в пару месяцев, реализацию уже давно поправили, но люди всё равно продолжают ходить и хаять бедный Mono, не желая разбираться в деталях.

Сегодня я приведу несколько примеров того, чем вообще могут отличаться разные рантаймы.
Читать дальше →

Доступна поддержка Mono в Visual Studio 2010!

Время на прочтение1 мин
Количество просмотров5.4K
Одна из крутых фишек в Visual Studio 2010 — это улучшенная поддержка мультиплатформенности. Изначально, эта функция предназначалась для возможности поддержки обеих версий .NET 2.0 и 4.0, но в действительности это означает, что и Mono может быть одной из плафторм для выбора в Visual Studio 2010.

Например, вот так:

Читать дальше →

MonoTouch и другие средства разработки под запретом в iPhoneOS 4?

Время на прочтение2 мин
Количество просмотров2.9K
На Хабре уже успели сообщить о удивительном (или неудивительном, кому как) решении Apple о запрете сторонних инструментов разработки для платформы iPhone. Вот короткая выдержка из лицензии:

«Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited».

В том топике многие неверно восприняли этот шаг Apple, под вопрос поставили возможность существования Flash-based рзработки под iPhone и в ответ посыпались аргументы: «флэш — тормозит», «не надо», «придет куча быдлокодеров» и тому подобные заявления.

Тут я хотел бы указать на то, что этим пунктом лицензии Apple убивает не просто Flash to iPhone, но вообще всякую альтернативу. Например, MonoTouch. MonoTouch — это альтернативное средство разработки под iPhone/iPad, которое позволяет компилировать бинарный код для платформы с помощью компилятора языков .NET. Поддерживается разработка на С# и VB. Как человек, который следит за проектом Mono и MonoTouch скажу, что про инструменты MonoTouch восторжено отзывается большинство разработчиков, которые имели с ними дело. Вместо Objective-C они получают мощности C# со сборщиком мусора, LINQ и прочими многочисленными плюшками, которых просто нет в Objective-C. Плюс свои редакторы кода, отладчики и удобнейшие библиотеки кода. Я уже не говорю про кроссплатформенность, когда одно и тоже приложение можно разрабатывать для iPhone, Zune, Windows и Windows Phone 7 используя одну кодовую базу.

MonoTouch очень быстро развивалась. Не стоило ожидать, что простота разработки привлекла бы кучу быдлокодеров на ваш уютный iPhone, потому что MonoTouch стоила денег. Падения производительности тоже не было, поскольку код C# компилировался в полностью нативный код для iPhone. В целом, это платформа была крайне удачной и теперь — вне закона.

Почему это важно? Можно сказать, что Apple — хозяин-барин, если бы не одно но. Apple всюду говорит о своем подавляющем положении на рынке: больше всего приложений, чаще всего выходят в сеть, огромные продажи и т.д. В связи с этим, представьте себе, что завтра Microsoft запретит писать под Windows на Java? Или объявит вне закона Air? Абсурдная ситуация? Точно.

Apple, конечно, не потеряет в продажах от того, что MonoTouch и Flash2iPhone объявлены вне закона. Но, господа разработчики, как вы оцениваете ситуацию когда компания запрещает ваши инструменты? Когда вместо шага навстречу разработчикам, Apple еще сильнее закрывает платформу. Мне этот шаг крайне неприятен. И я надеюсь, что под давлением разработчиков и общественного мнения, Apple изменит свою политику.

PS: кроме MonoTouch и Flash to Phone не ясна судьба инструментов: Titanium, PhoneGap и Unity3D. Последний так же использует технологии Mono и C#.

Повесть о невозможном баге: big.LITTLE и кэширование

Время на прочтение3 мин
Количество просмотров12K
Когда кто-то произносит слово многоядерный, то мы бессознательно подразумеваем SMP. Это успешно срабатывало для нас до недавнего времени, пока ARM не объявила о big.LITTLE. Архитектура ARM big.LITTLE является первым массово производимым примером архитектуры AMP, и как мы увидим далее, она поднимает планку сложности многоядерного программирования еще выше.
Читать дальше →

PVS-Studio: 25 подозрительных фрагментов кода из CoreCLR

Время на прочтение13 мин
Количество просмотров21K

Корпорация Microsoft выложила в открытый доступ исходный код движка CoreCLR, который является ключевым элементом .NET Core. Эта новость, конечно же, не могла не привлечь наше внимание. Ведь чем больше аудитория у проекта, тем тревожнее будут выглядеть найденные подозрительные места. Несмотря на авторство Microsoft, как в любом крупном проекте, тут есть на что посмотреть и над чем задуматься.

Введение


CoreCLR является средой исполнения .NET Core, выполняя такие функции как сборку мусора или компиляции в конечный машинный код. .Net Core — это модульная реализация .Net, которая может быть использована как база для огромного количества сценариев.

Исходный код с недавнего времени доступен на GitHub и проверялся с помощью PVS-Studio 5.23. Как и я, желающие могут получить полный лог проверки с помощью Microsoft Visual Studio Community Edition, выход которой тоже был недавней новостью от Microsoft.
Читать дальше →

Пишем первое приложение на Mono Android

Время на прочтение13 мин
Количество просмотров58K
Здравствуйте. В этой статье я бы хотел поделиться своим опытом создания приложений для мобильной платформы Android с использованием Mono и разобрать простой пример.

Для начала работы с Mono Android необходимо установить:
Читать дальше →

Ищем ошибки в Mono: сотни их

Время на прочтение34 мин
Количество просмотров16K


Крупные проекты проверять интересно. Как правило, в них удаётся найти различные интересные ошибки и рассказать о них людям. Также это хороший способ тестирования нашего анализатора и улучшения различных его аспектов. Я давно хотел проверить 'Mono', и наконец-то такая возможность появилась. И, стоит сказать, проверка себя оправдала, так как удалось найти много занимательного. О том, что же нашлось, какие нюансы возникли при проверке, и будет эта статья.
Читать дальше →

Что Mono 4.0.0 нам готовит

Время на прочтение2 мин
Количество просмотров23K


В последнее время многие обсуждают недавние открытие CoreCLR и CoreFX от Microsoft. Напомню, что ядро CLR и реализация базовых классов .NET у нас теперь открытые, кроссплатформенные и распространяются под MIT. Таким образом, вы можете собрать свою собственную версию рантайма, которая будет работать под Windows, Linux и Mac. И многих терзал вопрос: а что же теперь будет с Mono? Недавно появились черновики Mono 4.0.0 Release Notes, из которых мы можем узнать о будущих планах компании Xamarin. Итак, сегодня в номере:
  • Adoption of Microsoft’s open source code
  • Floating point optimizations
  • We dropped support for the 2.0, 3.5 and 4.0 assemblies
  • Updated IKVM
Обсудим грядущие изменения чуть подробней.
Читать дальше →

Погружение в F#. Пособие для C#-разработчиков

Время на прочтение12 мин
Количество просмотров84K

Этот пост будет не о том, как «перевести» код с C# на F#: различные парадигмы делают каждый из этих языков лучшим для своего круга задач. Однако вы сможете оценить все достоинства функционального программирования быстрее, если не будете думать о переводе кода из одной парадигмы в другую. Настало время любопытных, пытливых и готовых изучать совершенно новые вещи. Давайте начнем!



Все материалы из серии переводов русскоязычного сообщества F#-разработчиков вы сможете найти по тегу #fsharplangru.
Читать дальше →

Первые шаги к онлайн-офису на Linux или как мы портировали под Mono (о сложностях и их преодолении)

Время на прочтение5 мин
Количество просмотров36K


Вчера мы выпустили ONLYOFFICE под Linux и спешим поделиться не только новостями, но и полезной информацией для тех, кто, как и мы, 5 лет назад оказался в собственной ловушке под названием «ASP.Net»

Попытки портировать приложение на Unix с использованием проекта Mono мы начали предпринимать еще 4 года назад, однако, долгое время у нас ничего не получалось, поскольку на тот момент Mono сильно отставал по функционалу при портировании с .Net под Windows. В частности, в Mono была сильно урезана поддержка wcf, а также плохо работал asp.net mvc. Впрочем, к счастью разработчиков все эти годы проект Mono активно развивался — добавилась поддержка .Net 4.0 и .Net 4.5, так что весной 2013 мы решили возобновить работу.

Здесь мы расскажем о том, с какими проблемами столкнулись в процессе портирования облачного офиса под Mono, как их решили, что имеем в итоге, и как один инициативный пользователь уже через пару часов после релиза обернул всё в Dockerfile.
Читать дальше →

Используем фичи C# 5 (async и await) в .NET 2.0

Время на прочтение3 мин
Количество просмотров24K
Посвящается тем 45% .NET разработчиков, что до сих пор сидят на фремворках 2.0-3.5.

Да, вы не ослышались. async и await во втором дотнете. Но обо всём по порядку.

Зачем?

В какой-то момент мне надоело вручную возиться с написанием асинхронного кода. Async/awat выглядели слишком вкусными, чтобы не попробовать. Зная, что Microsoft при добавлении новых возможностей в язык и компилятор не привязывает их жёстко к фреймворку (так, extension-методы и LINQ отлично можно использовать во втором .NET, если где-нибудь объявить System.Runtime.CompilerServices.ExtensionAttribute), и видя Async CTP, добавляющего возможность использования async/await в 2010-ую студию при использовании в качестве целевого фреймворка .NET 4.0, я подумал, а почему бы и нет?

Читать дальше →

Ближайшие события

Mono 3.0

Время на прочтение1 мин
Количество просмотров17K
18-го октября вышла новая версия свободной кроссплатформенной реализации .NET Framework: Mono 3.0. Полный список новых фич можно найти в Release Notes на официальном сайте, а пока что некоторые из них:
  • Поддержка асинхронной модели программирования C# 5.0
  • Единый C#-компилятор для всех профилей
  • C# Interactive Shell
  • 4.5 Async API Profile
  • Работа с ASP.NET MVC 4, ASP.NET WebPages, Entity Framework, Razor, System.Json
  • Сборщик мусора с улучшенной производительностью
  • Поддержка CodeContracts
  • Частичная поддержка Portable Class Libraries

Кроссплатформенный IDE для .NET/C# от JetBrains

Время на прочтение1 мин
Количество просмотров62K
Сегодня анонсирован новый продукт от JetBrains на платформе IntelliJ. Кодовое имя прокта — Project Rider. Сообщается, что IDE содержит большое количество фич, соответствующих возможностям ReSharper.



Для своей работы IDE использует Resharper, который запускается в отдельном процессе, и служит в качестве бэкенда для редактора кода. IDE поддерживает .NET Framework, Mono и DNX/CoreCLR, и работает на платформах Windows, Mac OS X и Linux. Сообщается, что выход данного продукта связан в том числе и с движением Microsoft в сторону Open Source, а также, с растущей популярностью альтернативных платформ в мире .NET.

Предполагаемая дата релиза — осень 2016 года, но пользователи получат возможность протестировать продукт раньше, воспользовавшись Early Access Program.

Выпущена новая версия Mono 2.8

Время на прочтение1 мин
Количество просмотров1.1K
imageВыпущена новая версия свободной реализации платформы .NET Mono 2.8. Эта версия является важным обновлением, которое привносит значительные усовершенствования:
  • поддержка C# 4.0;
  • новый производительный сборщик мусора Generational Garbage Collector (ниже);
  • новые компоненты:
    • ASP.NET 4.0;
    • Parallel Framework и PLINQ;
    • System.XAML;
    • System.Dynamic;
    • MEF;
    • MVC 2;
    • System.Data.Services.Client (OData);
    • WCF Routing;
    • CodeContracts;
    • System.Numerics
    • LINQ to SQL;
    • в пакет включена DLR.
  • вторая версия embedding API;
  • поддержка OpenBSD.
Подробное описание нововведений доступно по этой ссылке. Загрузка Mono 2.8 доступна по этому адресу.

Под катом результаты тестирования производительности нового сборщика мусора.
Читать дальше →

ASP.NET vNext. Open Source и с поддержкой Linux

Время на прочтение1 мин
Количество просмотров14K
Microsoft анонсировали новую версию стека ASP.NET под лицензией Apache 2 с поддержкой запуска на платформе Mono. Помимо открытости исходников распространяться это дело будет через NuGet, а разработка вестись под эгидой .NET Foundation. Так же новый стек оптимизирован под облачные платформы, а инструментарий разработки позволяет вносить изменения в код без перкомпиляции и перезапуска.

Изменения касаются так же MVC, Web API, Web Pages, SignalR и EF. MVC, Web API и Web Pages теперь придерживаются единой програмной модели, например, используется один и тот механизм маршрутизации, а базовый контроллер один на всех, с одного адреса можно возвращать как вьюшки, так и ответы WebAPI. Оптимизация под облака по большей части заключается в том, что механизмы типа кеширования прозрачно переключают свою реализацию в зависимости от того, где запущено приложение.

Miguel de Icaza про ASP.NET MVC, Moonlight и суд над Android

Время на прочтение5 мин
Количество просмотров2.7K


Предлагаю перевод недавнего интервью Мигеля для портала InfoQ.

У нас появился шанс связаться с Мигелем де Икаса, основателем проекта Mono и материнской компании Xamarin. Мы затронули несколько тем, включая будущее ASP.NET MVC в Mono и прекращение разработки Moonlight.
Читать дальше →

Вышел MonoDevelop 3.0

Время на прочтение2 мин
Количество просмотров16K
Релиз был бы ничем не примечателен, если бы состоял только из тонн багфиксов и улучшений производительности. Однако же помимо них присутствуют два заметных глазу улучшения:
1) Поддержка сборки приложений для Mac App Store
2) Кардинальные улучшения в редакторе текста

На последнем стоит остановиться подробнее.

Читать дальше →

Большие события из мира Mono/.NET — подробно обо всем

Время на прочтение4 мин
Количество просмотров2.3K
imageЗа прошедшие дни произошел целый ряд крупных анонсов и релизов из мира Mono – open source реализации платформы .NET для разнообразных операционных систем (Unix, FreeBSD, Linux, MacOS X).

Во-первых, 10 декабря вышел фреймворк MonoTouch, об этом событии более подробно можно почитать тут. Этот фреймворк позволяет .NET-разработчикам писать программы на знакомом и мощном языке C# и использовать знакомые и полюбившиеся приемы, библиотеки и наработанный код. Например, MonoTouch в полной мере поддерживает такую технологию как LINQ. Для разработчиков под MonoTouch уже доступны печатная литература, вышла книга.

Читать дальше →