Что такое моно система

Что такое моно система

Mono — проект по созданию полноценного воплощения системы .NET Framework на базе свободного программного обеспечения. Основной разработчик проекта Mono — корпорация Xamarin [3] , ранее Novell. Проект возглавляет Мигель де Икаса, известный разработчик, основатель проекта GNOME. Реализации Mono существуют для следующих операционных систем: Windows, Linux, BSD (FreeBSD, OpenBSD, NetBSD), Solaris, Mac OS X, Apple iOS, Wii [4] . Поддерживаются платформы: s390, SPARC, PowerPC, x86/x86-64, IA-64, ARM, Alpha, MIPS, HP PA [4] .

Содержание

Состав и функциональность [ править | править код ]

Mono включает в себя компилятор языка C# — dmcs [5] , среду исполнения .NET — mono (с поддержкой JIT) и mint (без поддержки JIT), отладчик, а также ряд библиотек, включая реализацию WinForms, ADO.NET и ASP.NET, а также компиляторы smcs (для создания приложений для Moonlight) и vbc (для приложений, написанных на VB.NET).

В рамках проекта также разрабатываются привязки для графической библиотеки GTK+ на платформу .NET.

Также Mono содержит альтернативу структуре WPF-приложений (XAML + C# или любой другой язык, который поддерживается в данной среде исполнения). Данный язык называется Glade, при помощи него можно собирать GTK-приложения.

Mono может исполнять модули, написанные на языках C#, F#, Visual Basic .NET, Java, Boo, Nemerle, Python, JavaScript, Erlang, SmallTalk, Lisp, PHP и Object Pascal (при наличии компилятора в среде .Net/Mono). Ожидается также поддержка языков C, Ada 2005 и Eiffel.

Юридические вопросы [ править | править код ]

После заключения Microsoft договорённости с компанией Novell [6] платформа Mono была официально признана реализацией .NET на Unix-подобных операционных системах (Linux, Mac OS X и других). Однако договорённость касается только Novell и клиентов Novell; также технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы ECMA/ISO, и использование их в Mono находится под угрозой юридических претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение [7] ). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует не использовать эти API. [7]

Принятая в проекте лицензия на компилятор и другие программы — GNU GPL. Лицензия на среду исполнения и другие библиотеки — GNU LGPL. Лицензия на библиотеки классов —MIT.

Компания Microsoft объявила, что стандарты C# (ECMA 334) и инфраструктуры CLI (ECMA 335) теперь попадают под действие документа Community Promise (Обещание Сообществу), официально заявляющего отсутствие патентных или иных претензий на стандартизированные таким образом разработки. Данный шаг снимает многочисленные противоречия, касающиеся платформы Mono, которая фактически является opensource реализацией этих стандартов, и дает ей иммунитет на случай, если патентный вопрос будет поднят вновь.

Данное заявление опубликовал Старший менеджер по связям с общественностью Департамента Стратегий платформ Peter Galli как ответ на недавние запросы Мигеля де Икасы относительно лицензирования стандартов ECMA 334 и 335. В нём, в частности, говорится, что, давая обещание сообществу, Microsoft добровольно отказывается от патентного преследования юридических и частных лиц производящих, использующих, распространяющих, рекламирующих, продающих любые оговоренные в патентах реализации, независимо от модели их разработки и распространения, включая открытые модели разработки, такие как LGPL и GPL.

При этом открытым остается вопрос реализации технологий, не упомянутых в Community Promise. В связи с этим вице-президент Novell Мигель де Икаса объявил, что с этого момента проект Mono будет разбит на две ветки:

Кондиционеры, как девушки, — бывают разные. Но принцип работы у этих устройств один: компрессор перекачивает хладагент из одного блока в другой. В первом (испарителе) хладагент становится газом, охлаждая при этом воздух, а в другом, (конденсаторе), отдавая тепло, снова превращается в жидкость. И так — по кругу: сперва в конденсатор, чтобы стать жидкостью, затем обратно, в испаритель, чтобы вновь стать газом и все вокруг охладить.

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

Внутренний блок сплит-системы Panasonic CS-E9GKDW

Что же определило популярность сплит-систем и моноблоков? Какие плюсы имеют эти устройства, и в чем кроются их недостатки? Попробуем разобраться, а начнем со сплит-системы (все-таки, она победила в проведенном мною опросе).

Сплит-система состоит из двух раздельных блоков, которые соединяются герметичными трубками. По ним и циркулирует хладагент. На улице, на кронштейнах, находится блок внешний, вмещающий в себя компрессор, конденсатор и вентилятор. В помещении же устанавливается красивый внутренний блок, обычно небольших размеров. Этот блок призван не только «выдавать на гора» определенное производителем и указанное в характеристиках модели «количество» прохлады или тепла, но и радовать глаз владельца. Внутренний блок может быть напольным, потолочным или настенным (последний чаще всего и используется в быту).

Сплит-системы способны не только охлаждать или нагревать воздух. Благодаря специальным фильтрам они эффективно фильтруют пыль и грязь, а с помощью режима осушения воздуха поддерживают относительную влажность в заданном владельцем диапазоне (от 35 до 60 %). Некоторые модели снабжены специальным «ночным режимом». Такие устройства спать не мешают: ночью они снижают уровень шума внутреннего блока, а заодно и экономят электроэнергию.

И, наконец, сплит-системы управляются с дистанционного пульта, а посему нет необходимости каждый раз подходить к агрегату, чтобы выбрать оптимальный режим работы.

Внешний блок сплит-системы Daikin

Стоят сплит-системы по-разному. На цену влияет не только количество заложенных в устройство функций, но и его мощность. Мощный кондиционер, в отличие от «хилого», способен эффективно охладить больший объем воздуха за меньший промежуток времени. Наиболее дешевые кондиционеры, предлагаемые за 9-10 тысяч рублей, большой мощностью не обладают (

1800Вт). Впрочем даже ее достаточно для охлаждения комнаты, площадью в 15-20 м 2 . А вот сплит-систему, которая будет эффективна в больших помещениях (площадью от 40 м 2 ), купить дешевле, чем за 28 тысяч рублей вам вряд ли удастся.

Итак, мы выяснили, что представляет собою сплит-система и ее примерную стоимость. Теперь пора рассмотреть поближе и ее «конкурента» — кондиционер-моноблок.

Моноблочный кондиционер ( высотой, обычно, не более 70 см и шириной около 40 см) вмещает внутри себя все, что сплит-система развела друг с другом. Хладагенту в таком кондиционере далеко «бегать» не надо, ведь все части кондиционера собраны в одном небольшом корпусе. Хорошо это или плохо? Попытаемся выяснить.

В отличие от своей «коллеги по цеху» — сплит-системы, моноблок никуда не вешается, ни к чему не прикрепляется, снабжен колесиками и может передвигаться по дому. Правда, пока ему для этого требуется помощь хозяина, но, возможно, близок тот час, когда он сам будет определять, где в квартире стало жарко и направляться туда. Сплит-системе такие передвижения даже в будущем вряд ли удадутся.

Горячий воздух из моноблока выводится по специальной пластиковой трубе довольно большого сечения (10-15 см). Её, как правило, выводят за пределы помещения (в форточку, приоткрытое окно или дверь). Через форточку или окно в комнату также поступает и воздух извне (ведь герметично вывести на улицу теплоотводную трубу кондиционера удается не всегда). Считается, что это снижает эффективность кондиционера. Однако опрошенные мною владельцы моноблоков хором заявили мне, что это все — чепуха. Поступает воздух с улицы через зазор в окне или не поступает, кондиционер справляется с охлаждением комнаты достаточно эффективно. Что ж, поверим им на слово.

Читайте также:  Виртуализация процессора в bios

Моноблок DeLonghi PAC 45 способен охладить помещение в 30 квадратных метров

По своим основным функциям современные моноблоки мало чем отличаются от сплит-систем: есть фильтры для очистки, пульт дистанционного управления. Наличествуют режимы осушения и увлажнения воздуха (для этого в специальный съемный резервуар наливается вода). Присутствует и ночной режим. Так же как и сплит-системы, их собранные в одном корпусе визави не только охлаждают, но и нагревают воздух в помещении. Отличие между этими системами — в максимальной площади, которую они могут качественно «обработать». Самый мощный моноблок способен охладить около 35 м 2 , поэтому и наиболее уместен он небольших комнатах (на рынке присутствуют модели рассчитанные на работу в помещениях, площадью в 15, 20, 25, 30 и 35 м 2 ).

Недавно появился некий гибрид моноблока и сплит-системы — мобильная сплит-система. Он представляет собой ту же «тумбочку» на колесиках, только вместо шланга на улицу (на ремнях, реже на специальных кронштейнах) выводится компактный внешний блок. Очень похожий на внешний блок сплит-системы, он выполняет ту же функцию — выводит тепло. Благодаря этому приспособлению увеличивается эффективная мощность кондиционера: устройство способно «обработать» помещение площадью до 60 квадратных метров.

Цена на моноблоки примерно такая же, как на сплит-системы: от 10 до 35 тысяч рублей.

НЕМНОГО О ТИШИНЕ И ДИЗАЙНЕ

Главным достоинством сплит-системы является тишина. Удивляться тут нечему: как мы знаем, все самые шумные части этого кондиционера «удалены» на свежий воздух. Однако «звенящей» тишины от сплит-системы ждать не нужно: внутренний блок все-таки шумит, хоть и не очень громко, на уровне 35-40 дБ.

У моноблока показатель шума значительно выше (сказываются конструктивные особенности аппарата). Однако те, кто считает, что такой кондиционер тарахтит, как трактор «Беларусь» во время сбора урожая сахарной свеклы, слишком несправедливы. Я прослушал несколько моноблоков и не скажу, что у меня заложило уши. Да, производителям пока не удалось сделать их бесшумными, но уровень шума в 50 дБ вполне терпим. Тех же, кто считает, что даже такой шум будет мешать спать, могу заверить: храпят люди куда громче. Но ведь к храпу со временем привыкают, следовательно, можно привыкнуть и к мерному сопению кондиционера.

Теперь поговорим о дизайне. Сторонники сплит-системы порой заявляют, что ее внутренний блок, в отличие от моноблоков, можно подобрать под интерьер помещения. Это утверждение, на мой взгляд, является преувеличением. Во-первых, такая возможность предоставляется при покупке далеко не всех моделей сплит-систем, а во-вторых, выбор вариантов не так уж и велик (как правило, три, максимум — четыре панели). Да и нужно ли уделять столько внимания дизайну внутреннего блока кондиционера? Вряд ли. Подавляющее большинство покупателей выбирает кондиционер, прежде всего, ориентируясь на его технические характеристики и функциональность. Тонкости же дизайна волнуют покупателя в меньшей степени.

Сплит-система: дизайн тоже важен, но эффективность — прежде всего!

СПЛИТ-СИСТЕМА: ГЛАВНЫЙ НЕДОСТАТОК

Главный недостаток сплит-системы — трудность её установки. Это устройство самостоятельно, по инструкции, не соберешь. Требуется помощь квалифицированных мастеров, которые проделают перфоратором отверстие в стене, подвесят на кронштейнах внешний блок, соединят оба модуля системы шлангами, зальют в агрегат фреон. Но мастеров, увы, значительно меньше, чем клиентов, желающих установить сплит-систему. И вы можете столкнуться, казалось бы, с ушедшей в советское прошлое проблемой очередей. Не исключено, что ждать придется долго (два-три месяца). В этом ожидании пройдет и лето, и осень . Конечно и зимой кондиционер (если он обладает функцией обогрева и возможностью работы при минусовой температуре) будет полезен. Однако согласитесь: мы покупаем кондиционер, в первую очередь, ради охлаждения в жару, а не для согрева в мороз. Да и для согрева некоторые используют другие, проверенные столетиями, способы.

Кстати, установка кондиционера — удовольствие не из дешевых. Цена за эту услугу может достигать трети от стоимости устанавливаемого агрегата! Я позвонил в одну из фирм, торгующих кондиционерами, и выяснил, что установка кондиционера (стоимостью в 1000 долларов), обойдется в 7500 тысяч рублей! С такой ценой обладатель сплит-системы вынужден согласится: «кустарная» установка может вывести аппарат из строя, а платить за ремонт изделия в этом случае будет покупатель.

Есть и еще одна проблема, связанная с установкой сплит-системы. Правда, касается она не всех, а лишь жильцов первых этажей. Наружный блок сплит-системы достаточно защищен от дождя, ветра, града и снега. Но эффективна ли эта защита от воров и вандалов? Боюсь, что нет. Не стоит относиться к «человеческому фактору» с пренебрежением. Немало внешних блоков, находящихся в досягаемости для вандалов, было выведено дикарями из строя. Эту проблему, впрочем, можно решить, заплатив установщикам побольше, и подвесив кондиционер повыше, вне приделов досягаемости хулиганов. Конечно, если ваш сосед сверху согласится с таким решением проблемы.

На западе жители частных домов не боятся за сохранность внешних блоков сплит-систем. А в России?

В заключение, обратим внимание еще на одну проблему, с которой изредка приходится сталкиваться обладателям сплит-систем. Если ваш дом признан памятником архитектуры, то повесить на его стену сплит-систему, вам вряд ли разрешат. Хотя, пока в нашей стране редко уделяют внимание проблеме эстетики фасадов, тем не менее, местные власти начинают наводить порядок и в этой сфере. Возможно, что очень скоро в крупных российских городах к внешнему виду зданий будут относиться как в Европе. А там, что не дом — то реликвия. Например, в Италии власти зорко следят за тем, чтобы фасады домов (даже во дворах) не уродовались наростами кондиционеров. Жители Апеннинского полуострова вынуждены устанавливать моноблоки, которые пользуются там огромной популярностью. Только вот трубы, по которым отводятся излишки теплого воздуха, итальянцы выводят не в форточки или окна, а в вентиляционную систему дома. Не ясно, что испытывают при этом соседи сверху (ведь, как мы знаем, теплый воздух стремится вверх), но наверняка у них тоже стоит моноблок, и шланг его выведен в ту же вентиляцию. Так и живут, и не особо жалуются.

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

Любительская фотография. Моноблок, как мы видим, не мешает ребенку спать

Некоторые склонны также полагать, что мобильный кондиционер, на самом деле, никакой не мобильный. Ибо вся его способность к маневрированию зависит от того, насколько длинной он снабжен трубой для отвода тепла. На самом деле, это банальная подмена понятий. Разве сплит-систему вы сможете перевезти с собой на дачу? Или хотя бы перенести в соседнюю комнату? Да, на даче можно установить сплит-систему (а заодно и посмотреть, через сколько дней ее унесут вместе со стеной) и в каждой комнате квартиры поставить по отдельному внутреннему блоку Но все-таки подобные решения доступны не всем. А вот «тумбочку на колесиках» можно и перевозить, и перемещать — одним словом, пользоваться моноблоком там, где это наиболее необходимо.

Читайте также:  Vid 2537 pid 1066

Тем не менее, дать окончательный ответ на вопрос «какой же кондиционер лучше» я не рискну, хоть и склоняюсь к выбору моноблока в качестве источника прохлады в доме. Кондиционеры — они как люди: идеальных не бывает. В каждом есть и позитивные, и негативные стороны.

Посему оставляю выбор за вами. Хороших вам кондиционеров. И людей!

Серия контента:

Этот контент является частью # из серии # статей: Работаем с Mono. Часть 1

Этот контент является частью серии: Работаем с Mono. Часть 1

Следите за выходом новых статей этой серии.

Mono — программная платформа, позволяющая разработчикам достаточно просто создавать развитые кроссплатформенные приложения. Технология Mono разрабатывается в виде open source реализации технологии .NET Framework от Microsoft и поддерживает стандарты ECMA-334 (стандарт языка C#) и ECMA-335 (стандарт среды исполнения (Common Language Runtime, CLI). Открытость указанных стандартов позволяет уменьшить проблемы создания кроссплатформенных приложений.

В базовом варианте Mono состоит из нескольких компонентов:

  • Компилятор языка C# — компилятор с полной поддержкой версий 1.0 и 2.0 языка C#. Кроме того в последних версиях поддерживаются практически все возможности версии C# 3.0, а начиная с версии Mono 2.6 включена поддержка возможностей версии C# 4.0 (пока только как опция, полноценная поддержка заявлена в версии 2.8).
  • Среда исполнения Mono — состоит из среды исполнения (CLI) непосредственно, компилятора среды исполнения (Just-In-Time, JIT), генератора машинного кода (Ahead-Of-Time, AOT), загрузчика сборок, сборщика мусора, подсистемы управления многопоточностью и компонентов поддержки взаимодействия между сборками и COM (или аналогами в Linux, например XCOM).
  • Базовая библиотека классов — набор стандартных классов, совместимых с классами Microsoft .NET Framework.
  • Библиотека классов Mono — набор классов, поддерживающих дополнительные функции для разработки Linux-приложений. Например, классы для поддержки Zip, OpenGL, Cairo, Gtk+.

Совместимость Mono и Microsoft .NET Framework

В текущей версии Mono поддерживаются следующие версии и возможности Microsoft .NET Framework:

  1. поддержка версии .NET 1.1:
    • язык C# 1.0;
    • базовые библиотеки версии 1.1: mscorlib, System, System.Xml;
    • ASP .NET 1.1 (разработка веб-приложений);
    • ADO .NET 1.1 (модель доступа к данным);
    • Winforms/System.Drawing 1.1 (пользовательский интерфейс Microsoft Windows);
    • базовые классы пространств имен System.Management (информация о системе, работа с устройствами) и System.EnterpriseServices (разработка масштабируемых бизнес-приложений, преимущественно на базе COM+ технологии) не поддерживаются в связи с отсутствием близких по идеологии технологий в Linux.
    • поддержка версии .NET 2.0:
      • язык C# 2.0 (поддержка дженериков (шаблонов, generics);
      • базовые библиотеки версии 2.0: mscorlib, System, System.Xml;
      • ASP .NET 2.0 (кроме WebParts);
      • ADO .NET 2.0;
      • Winforms/System.Drawing 2.0 (не поддерживаются языки с письмом справа налево);
      • поддержка версий .NET 3.0 и 3.5:
        • C# 3.0;
        • System.Core (базовая библиотека классов);
        • LINQ (Language Integrated Query, интегрированный язык запросов);
        • ASP .NET 3.5;
        • ASP .NET MVC (создание веб-приложений с поддержкой шаблона “модель-представление-поведение”);
        • LINQ to SQL — поддержка большинства (но не полного комплекта) функций;
        • WCF (Windows Communication Foundation) — частичная поддержка на уровне библиотек Silverlight 2.0;
        • WPF (Windows Presentation Foundation) — не поддерживается и пока поддержка не планируется;
        • WF (Workflow Foundation) — не поддерживается, планируется поддержка с версии WF4;
        • поддержка версии .NET 4.0, реализованная в версии Mono в SVN:
          • C# 4.0;
          • ASP .NET 4.0 (пока частичная поддержка);
          • LINQ 4.0.

          Описание основных компонентов и возможностей Mono

          Компилятор Mono C# поддерживает версии языков C# 1.0, 2.0 и 3.0. Для создания кода можно использовать один из нескольких вариантов компилятора, в зависимости от потребностей:

          • mcs — компилятор, поддерживающий версию 1.1 среды исполнения. Компилирует код на языках C# 1.0 и C#3.0 (без поддержки дженериков и всего, что с ними связано). Данный компилятор планируется исключить в версии Mono 2.8, как устаревший.
          • gmcs — компилятор, поддерживающий версии от 2.0 до 3.5 среды исполнения и обладающий полной поддержкой C# 3.0.
          • smcs — опциональный компилятор для создания Moonlight (аналог Microsoft Silverlight) приложений.
          • dmcs — опциональный компилятор, реализованный в тестовом варианте в версии Mono 2.6 и планируемый к включению в версию 2.8. Поддерживает среду исполнения версии 4.0 и язык C# 4.0.

          Начиная с версии Mono 2.2 реализована поддержка классов компилятора Mono.CSharp.Evaluator (сборка Mono.Sharp.dll) для создания собственных сервисов компиляции.

          Среда исполнения Mono поддерживает инфраструктуру промежуточного языка CLI (Common Language Infrastructure), соответствующую стандарту ECMA-335. Виртуальная машина среды исполнения допускает возможность запуска приложений и сборок, скомпилированных в других системах (например, возможно запускать в Linux без перекомпиляции приложения, созданные при помощи Microsoft Visual Studio для исполнения в Microsoft Windows).

          Также, вместо использования виртуальной машины, среда исполнения может быть интегрирована в приложение с целью создания встраиваемой системы, не требующей установки Mono для запуска и обладающей высоким быстродействием. При этом, в приложение включаются только необходимые компоненты среды исполнения.

          В среде Mono реализован Ahead-Of-Time (AOT) компилятор промежуточного языка. Цель этого компилятора в том, чтобы уменьшить время запуска программы и оптимизировать ее код, путем компиляции промежуточного языка CLI в машинный код. Аналогом в Microsoft .NET Framework является утилита Ngen. Для запуска приложения в этом режиме можно воспользоваться опцией —aot среды исполнения (также можно включить полную оптимизацию кода при помощи опцее -O=all). Например:

          В качестве сборщика мусора в данный момент используется Boehm’s GC, однако в текущей разрабатываемой ветке SVN присутствует совершенно новый сборщик мусора, разработанный специально для Mono.

          Установка Mono

          Mono входит в репозитории огромного количества дистрибутивов, поэтому проблем с установкой из репозитория возникнуть не должно. Другой вопрос, какие версии располагаются в репозиториях. На данный момент на сайте проекта Mono предлагается скачать бинарные файлы версии 2.4.x. Эти же версии лежат в репозиториях современных дистрибутивов. Последней стабильной версией Mono считается 2.6.3, которая имеется только в виде исходных текстов.

          Если есть желание установить Mono 2.6.3, то придется заняться самостоятельной сборкой версии из исходных текстов.

          В качестве подопытной системы выберем недавно вышедшую Ubuntu 10.04. Тем не менее пользователям других версий и дистрибутивов это не должно особенно огорчать, потому что разница будет только в менеджерах пакетов и именах пакетов.

          Для чистоты эксперимента, чтобы определить все пакеты, которые нужны, возьмем систему Ubuntu 10.04 установленную с нуля и обновленную (при помощи Synaptic или aptitude) до текущего состояния.

          Первым делом создадим каталог для исходных текстов и сборки проектов:

          Для работы с пространством имен System.Windows.Forms (на классах которого построен графический интерфейс операционных систем семейства Microsoft Windows) необходимо установить библиотеку libgdiplus, которая реализует функции Microsoft GDI+ для Mono. Взять исходные тексты этой библиотеки можно с сайта проекта Mono:

          Распакуем исходные тексты и перейдем в каталог проекта:

          При базовой установке Ubuntu устанавливается минимальный набор инструментов для разработчика, поэтому необходимо проследить, чтобы нужные инструменты присутствовали в системе. Для установки и работы потребуются компилятор g++, парсер Bison, интерпретатор макроязыка M4, библиотека Glib 2.0, GetText для поддержки интернационализации. Для работы с Mono требуется также Pkg-config. При отсутствии в системе эти пакеты (и их зависимости) нужно будет установить. Для Ubuntu это делается командой:

          Для работы библиотеки libgdiplus нужна библиотека libcairo2 версии не ниже 1.6.4. Эта библиотека входит в состав исходных текстов libgdiplus и может быть скомпилирована совместно с ней, однако при наличии более свежей версии рекомендуется пользоваться именно ей. В репозиториях Ubuntu 10.04 лежит libcairo2 версии 1.8.10. Установим ее из репозитория:

          Читайте также:  Программа для сведения дорожек

          Остается только сконфигурировать и собрать libgdiplus. По умолчанию установка производится в каталог /usr/local/bin для библиотеки и /usr/local/include для заголовочных файлов, что не всегда удобно, так как в будущем понадобится настройка переменных окружения LD_LIBRARY_PATH и LD_RUN_PATH. Удобнее, если библиотеки и заголовочные файлы будут расположены в /usr/bin и /usr/include соответственно.

          Скачиваем mono runtime:

          Рассмотрим наиболее интересные параметры конфигурации исходных текстов:

          Этот параметр установлен в yes по умолчанию. При этом mono оптимизмруется для работы под средствами виртуализации Xen. В реальной среде производительность несколько ниже. Мы в нашем случае будем использовать no.

          Возможность выделения приложением больших объемов памяти (свыше 3 Гб). По умолчанию no.

          Включение поддержки Moonlight — свободного аналога Microsoft Silverlight.

          Местоположение библиотеки libgdiplus для поддержки классов System.Windows.Forms. Значение installed означает, что библиотека установлена в системе (как в нашем случае), sibling — исходные тексты библиотеки лежат в каталоге с текстами mono,

          — библиотека установлена по указанному пути (используется, если библиотека установлена в нестандартный каталог или установлено несколько разных версий в разных каталогах).

          Включение поддержки больших массивов, у которых индекс выходит за пределы Int32.MaxValue. По умолчанию такие массивы не поддерживаются даже в 64-битных системах (в том числе и в Microsoft Windows для архитектуры x64).

          Включение многопоточного сборщика мусора при наличии нескольких процессоров. По умолчанию сборщик мусора однопоточный. Следует заметить, что разработчики Mono предупреждают, что возможность является экспериментальной и не протестирована тщательно.

          Конфигурируем и устанавливаем Mono:

          В моем случае изначально сборка закончилась неудачно в связи с тем, что make почему-то не хватило прав, хотя собиралось все в домашнем каталоге пользователя. Если вдруг такое произошло, помогает sudo make вместо make.

          Mono Runtime готов к работе.

          Создание первого приложения

          С целью протестировать работоспособность Mono создадим традиционное приложение Hello World с выводом в терминал и вариант с созданием окна.

          Для вывода в терминал воспользуемся методом WriteLine класса Console.

          Скомпилируем программу с поддержкой .NET версии 1.1:

          Или с поддержкой .NET версии 2.0:

          Компиляция должна пройти без ошибок и запуск:

          приводит к выводу в консоль сообщения “Hello World! This is our first Mono program”

          Сделаем ознакомительное приложение с использованием графического интерфейса. В среде Linux уместнее всего было бы использовать библиотеки Gtk#, однако в данный момент эта библиотека не установлена и это будет темой одной из будущих статей. Воспользуемся библиотекой Winforms, которая входит в состав Mono по умолчанию. Работа с этой библиотекой также будет описана в будущих статьях, поэтому код дается без комментариев.

          Скомпилируем программу с поддержкой .NET версии 1.1:

          Или с поддержкой .NET версии 2.0:

          Не забываем указать ключ -pkg:dotnet, подключающий библиотеки, содержащие пространство имен System.Windows.Forms.

          на экране появится пустое окно с заголовком “Hello World! This is our first Mono program” и кнопками сворачивания, разворачивания и закрытия.

          MoMA — анализатор “чужих” сборок

          Как было сказано выше, Mono совместим с .NET Framework на уровне исполняемых файлов и сборок. Однако, как это часто бывает, запуск скомпилированных, например, в Microsoft Visual Studio программ заканчивается ошибочно. В этом случае не помешает определить, стало ли причиной ошибки отсутствие какой-либо библиотеки в среде Mono в Linux (и решить проблему установкой этой библиотеки) или проблема связана с тем, что та или иная возможность не поддерживается в Mono.

          В этом поможет инструмент Mono Migration Analyzer (MoMA), который можно скачать с сайта проекта Mono.

          Для запуска MoMA его нужно распаковать в отдельный каталог и запустить сборку MoMA.exe:

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

          Следует отметить, что MoMA — инструмен достаточно простой, поэтому возможны варианты, что какие-то проблемы в коде найдены не будут, а также возможно нахождение проблемы, которая, тем не менее, не помешает исполнению кода.

          Все проблемы, которые находит MoMA можно свести к четырем видам.

            Missing Methods — отсутствующие методы.

          В сборке присутствует вызов методов, которые не имеют никакой реализации (в том числе даже заглушки) в Mono. Если такое приложение попытаться скомпилировать в Mono, это приведет к ошибке вида:

          Если же данный код скомпилировать, например, в Visual Studio, а затем запустить в среде Mono, это приведет к исключению System.MissingMethodException при вызове отсутствующего метода.

          Бороться с этой проблемой можно двумя способами. Первый состоит в том, чтобы заменить отсутствующий метод другими методами, реализующими ту же задачу. Второй состоит в том, чтобы реализовать отсутствующий метод и, по возможности, предложить его для включения в новую версию Mono.

          MonoTodo — вызов методов, реализованных частично.

          Вызов подобных методов может привести к проблеме, а может и не привести. Как правило атрибутом [MonoTodo] помечаются методы, в которых либо нереализована какая-то небольшая часть функциональности, либо метод нуждается в чистке и оптимизации. При использовании данных методов проблем, скорей всего не будет, хотя часть функциональности может оказаться недоступной.

          Если проблема возникает, можно обойти использование данного метода, дождаться его более полной реализации в будущих версиях Mono или реализовать самостоятельно и включить в будущие версии.

          NotImplementedException — исключение “метод не реализован”.

          Проблема очень похожа на предыдущую с той разницей, что при каких-то обстоятельствах метод может вернуть исключение NotImplementedException. Проявится проблема или нет можно понять только после тестирования приложения в среде Mono. Если проблема проявляется, то пути для ее решения будут такими же, как и в предыдущем случае.

          P/Invokes (Platform Invokes) — вызов функций, написанных на неуправляемых языках.

          Проблема может возникнуть, если, например, используется вызов методов COM-объектов в среде Microsoft Windows. Само собой разумеется, что эти объекты не имеют реализации в Linux. Решить проблему можно реализовав схожую функциональность в управляемом коде или создав необходимую библиотеку для Linux.

          Если же вызов происходит из COM-объектов, написанных самостоятельно, то должна быть обеспечена их кроссплатформенность, тогда ошибок при исполнении кода не будет. В противном случае лучше изменить реализацию так, чтобы вызовы из COM-объектов не использовались.

          Работа с MoMA из командной строки

          В случае, если использование графического интерфейса не нужно или невозможно, можно использовать MoMA из командной строки.

          При этом указывается параметр —nogui, может быть указан параметр —out с указанием месторасположения отчета об анализе, а затем указывается одна или несколько анализируемых сборок. Например:

          Заключение

          Мы рассмотрели основные возможности среды исполнения Mono. К сожалению, большинство подробностей о внутренней работе среды исполнения и библиотеках (в том числе и более подробное рассмотрение кода простых приложений этой статьи) остались не охваченными, однако многие из пробелов будут рассмотрены в будущих статьях. Кроме того, большая часть информации о функционировании .NET Framework актуальна и для Mono. Так, например, рекомендуется ознакомиться с обзором .NET Framework.

          Ссылка на основную публикацию
          Что значит спящий режим компьютера
          В операционной системе Windows есть несколько режимов выключения компьютера – это обыкновенный режим, (который полностью выключает PC), режим гибернации и...
          Чем открыть файл с расширением dat
          После установки каких-нибудь программ, получения почты при помощи почтовых клиентов, на компьютере создаются .dat файлы. Чаще всего они почти не...
          Чем отличается frontend от backend
          Переводы , 13 апреля 2017 в 19:58 Мая Устинова Вы наверняка уже слышали эти модные в сфере программирования слова «фронтенд»...
          Что значит сторнировать документ
          Сто́рно (итал. storno — перевод на другой счёт, отвод; от stornare — поворачивать обратно) — в общем смысле возврат к...
          Adblock detector