Статьи

Начните с Mono

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

Именно с такой точки зрения, эта статья продемонстрирует, как любой (даже я!) Может запустить Mono на новом чистом Linux-компьютере. Я расскажу о своем опыте установки пакета и расскажу обо всех компонентах, необходимых для запуска Mono.

Что такое моно?

Mono — это проект с открытым исходным кодом, используемый для кодирования большей части .NET Framework в кроссплатформенный исполняемый код. При поддержке Novell Mono дает разработчикам возможность разрабатывать приложения ASP.NET и Windows Forms не только для Windows, но теперь, главным образом, для Linux.

Хотя они еще не завершены, приложения, написанные для стандартной платформы Microsoft .NET, теперь можно переносить и запускать в Linux через Mono. Однако пробелы в реализации фреймворка в Mono означают, что вам все равно нужно будет проверить, что ваше приложение не использует сервисы, которые еще не реализованы.

Что можно использовать в моно?

В настоящее время Mono находится в разработке, но проект достиг значительных этапов, которые делают его подходящим и достаточно стабильным для развертывания сегодня. Компилятор C # — единственный полнофункциональный компилятор для Mono. Да, все верно: разработчикам VB.NET и J # потребуется полностью переключиться на C #, чтобы полностью использовать Mono. Смотрите прогресс компилятора VB.NET здесь .

Сам компилятор написан на C #. Вы можете загрузить все 1,7 миллиона строк кода C # и скомпилировать их самостоятельно, или, как мы увидим в ближайшее время, вы можете использовать один из множества дистрибутивов, чтобы упростить процесс установки.

ASP.NET является полнофункциональным и поддерживается в Mono. На самом деле, это большая сила Mono в настоящее время. Вы можете создавать и развертывать как веб-формы, так и веб-службы, используя либо встроенный веб-сервер, который поставляется с Mono (XSP), либо через модификацию Apache, Mod Mono . Для тех, кому неудобно использовать Windows и IIS для размещения приложений, Mono предоставляет жизнеспособную альтернативу.

Windows Forms в настоящее время находится в стадии разработки, но функциональность развивается. Хотя сложные приложения WinForm, такие как Web Matrix, в настоящее время недоступны, есть альтернативы WinForms в Mono, которые создают приложения с графическим интерфейсом. Gtk # и #WT являются обертками для популярных инструментов графического интерфейса в Linux. Сам WinForms создается как расширение библиотеки для Wine, реализации Win32 для Linux. Прогресс проекта задокументирован здесь .

Классы ADO.NET и System.Data также достаточно развиты; однако, они не находятся на уровне производства на момент написания. Это один из крупнейших проектов в Mono, и в настоящее время вы можете подключаться к широкому спектру баз данных. Собственная поддержка предоставляется для многих баз данных, обычно связанных с Linux, таких как PostgreSQL.

Mono успешно используется в коммерческих и тяжелых условиях эксплуатации. Novell использовала этот инструмент для создания двух своих продуктов, iFolder и ZenWorks. Кроме того, SourceGear использовал веб-сервисы, развернутые в Mono в своем приложении Vault.

Начало работы: скачать Mono

Mono доступен во многих пакетах. Вы можете загрузить последнюю версию сборки исходного кода и ежедневной сборки снимка исходного кода через CVS, пакет RPM или установку Red Carpet для тех, кто работает с Xiamian Desktop. Безусловно, самой простой в использовании является система Red Carpet, которая, хотя и похожа на RPM, предлагает хороший контроль версий, что позволяет очень легко обновить Mono на вашей машине.

На странице загрузки Mono подробно описаны различные пакеты и способы их загрузки, а также специальные пакеты для конкретных разновидностей Linux.

http://www.mono-project.com/downloads/

Я скачал tar-архив Mono Runtime и использовал следующую команду для распаковки дистрибутива:

tar -zxvf mono-1.0.tar.gz

После того, как архив был извлечен, я мог начать процесс установки, используя:

./configure
make
make install

Именно в этот момент я понял, что мне нужно обновить pkg-config в системе, поскольку при установке возникли некоторые ошибки. Я нашел для этого дистрибутив RPM и установил его с помощью следующей команды:

 rpm -Uvh pkgconfig-0.15.0-4mdk.i586.rpm

Процесс сборки теперь работает без проблем.

Hello World в C # работает на Linux

Всегда полезно использовать выделенный пример «Hello World» для проверки установки!

Откройте ваш любимый текстовый редактор Linux (я использовал vi) и введите следующий простой код приложения C #:

 public class HelloWorld  
{
 static void Main()  
 {
   System.Console.WriteLine("Hello World!");
 }
}

Сохраните этот файл как HelloWorld.cs и скомпилируйте класс с помощью компилятора Mono C #:

mcs HelloWorld.cs

В каталоге, в который вы сохранили HelloWorld.cs, вы должны увидеть файл HelloWorld.exe. Это стандартный код MSIL, который можно выполнить на любом компьютере, на котором установлена ​​платформа .NET, включая Windows.

Существует два способа запуска приложений Mono. Одним из методов является использование «mint», который является интерпретатором для байт-кода MSIL. Mint не компилирует и не запускает ваши приложения в машинный код, поэтому это не среда выполнения JIT. Однако Mono — это среда выполнения JIT, которая при первом запросе компилирует байт-код в машинный код, родной для платформы и процессора, для которого он был разработан.

Это означает, что для производительности приложение Mono намного быстрее, чем mint, хотя оно не так переносимо, как привязано к конкретной операционной системе. Mint, с другой стороны, гораздо более переносим и, как написано в ANSI C, может использоваться на множестве платформ развертывания.

Чтобы запустить наше приложение Hello World, мы можем использовать следующую команду, которая вызывает Mono:

 mono hello.exe

Мы используем следующую команду для вызова mint:

 mint hello.exe
Dishing Up ASP.NET

Mono поставляется с собственным веб-сервером, готовым использовать ваши приложения ASP.NET. Моно. XSP очень прост в использовании и делает его простым веб-сервером ASP.NET, который почти аналогичен серверу Cassini, который поставляется с Web Matrix для Windows. Для большего доминирования вы можете скачать модуль с именем mod_mono, который позволяет Apache поддерживать ASP.NET. В этой статье, однако, мы рассмотрим формирование простого веб-приложения и разместим его с помощью XSP.

Я должен признать, что я обманул, когда создал код для веб-приложения: я использовал Visual Studio для создания веб-приложения и связанных с ним файлов. Затем я скопировал код в окно Linux, которое было готово для размещения.

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

 <%@ Page Language="C#" %>  
<script runat="server">  

void Button1_Click(object sender, EventArgs e)  
{  
  titleTag.InnerText = "You clicked the button!";  
}  

void Page_Load(object sender, EventArgs e)  
{  
  if (!IsPostBack)  
    titleTag.InnerText = "Page has loaded";  
}  

</script>  
<html>  
<head>  
<title runat="server" id="titleTag"/>  
</head>  
<body>  
<form runat="server">  
  <asp:Button id="Button1" OnClick="Button1_Click" runat="server" Text="Button"/>  
</form>  
</body>  
</html>

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

Если вы используете codebehinds для своего приложения, вам также необходимо скомпилировать исходные файлы с помощью компилятора Mono, чтобы получить скомпилированную сборку для приложения. Как и в случае с ASP.NET в Windows, вам нужно поместить это в каталог / bin в корневом каталоге.

XSP по умолчанию прослушивает порт 8080, чтобы не мешать работе Apache; однако вы можете настроить сервер через командную строку для прослушивания через другой порт. Вы также можете указать корневой каталог приложения, которое вы хотите разместить:

xsp.exe  [--root rootdir]  
               [--port N]

Когда сервер работает, вы можете получить доступ к своей странице через любой стандартный веб-браузер. И вот, у нас это есть: ASP.NET обслуживается через Linux!

Сторонние инструменты

Существует множество инструментов, помогающих вашим разработкам в Mono, так что, в отличие от меня, вам не нужно возвращаться к Visual Studio.

  • MonoDevelop:
    Поскольку в Mono все еще отсутствуют функции графического интерфейса, MonoDevelop действительно продвигает текущие реализации, чтобы показать, чего можно достичь в Mono. Напоминая #develop для Windows, MonoDevelop поддерживает подсветку синтаксиса и компиляцию проектов из простого в использовании интерфейса. Однако этот инструмент все еще находится на ранней стадии разработки и в настоящее время не имеет функций, необходимых для того, чтобы сделать его действительно полезным инструментом.
  • Затмение:
    Eclipse — это своего рода универсальная инструментальная платформа — открытая расширяемая среда IDE для чего угодно и ничего особенного. Это отличное решение для разработки приложений Mono. Загрузив и установив плагин Improve C # для Eclipse, вы можете получить полнофункциональную и бесплатную среду разработки на Java для ваших разработок в Mono.
  • MonoDoc:
    Это браузер для документации Mono. Он не устанавливается по умолчанию через стандартные пакеты Mono, но это спасение для тех, кому нужно проверить, доступны ли определенные API и части инфраструктуры в Mono.
Резюме

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

Mono может только укрепиться, и, возможно, в ближайшем будущем разработчики .NET смогут разрабатывать для Linux так же легко, как мы разрабатываем для Windows сегодня.