Начните с 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.
Я скачал tar-архив Mono Runtime и использовал следующую команду для распаковки дистрибутива:
После того, как архив был извлечен, я мог начать процесс установки, используя:
./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 #:
В каталоге, в который вы сохранили HelloWorld.cs, вы должны увидеть файл HelloWorld.exe. Это стандартный код MSIL, который можно выполнить на любом компьютере, на котором установлена платформа .NET, включая Windows.
Существует два способа запуска приложений Mono. Одним из методов является использование «mint», который является интерпретатором для байт-кода MSIL. Mint не компилирует и не запускает ваши приложения в машинный код, поэтому это не среда выполнения JIT. Однако Mono – это среда выполнения JIT, которая при первом запросе компилирует байт-код в машинный код, родной для платформы и процессора, для которого он был разработан.
Это означает, что для производительности приложение Mono намного быстрее, чем mint, хотя оно не так переносимо, как привязано к конкретной операционной системе. Mint, с другой стороны, гораздо более переносим и, как написано в ANSI C, может использоваться на множестве платформ развертывания.
Чтобы запустить наше приложение Hello World, мы можем использовать следующую команду, которая вызывает Mono:
Мы используем следующую команду для вызова mint:
Dishing Up ASP.NET
Mono поставляется с собственным веб-сервером, готовым использовать ваши приложения ASP.NET. Моно. XSP очень прост в использовании и делает его простым веб-сервером ASP.NET, который почти аналогичен серверу Cassini, который поставляется с Web Matrix для Windows. Для большего доминирования вы можете скачать модуль с именем mod_mono, который позволяет Apache поддерживать ASP.NET. В этой статье, однако, мы рассмотрим формирование простого веб-приложения и разместим его с помощью XSP.
Я должен признать, что я обманул, когда создал код для веб-приложения: я использовал Visual Studio для создания веб-приложения и связанных с ним файлов. Затем я скопировал код в окно Linux, которое было готово для размещения.
Для нашего примера мы создадим веб-страницу с простой кнопкой и меткой. Когда кнопка нажата, метка покажет, что пользователь нажал кнопку.
Вы можете сохранить этот файл в каталоге, который будет служить вашим корнем для веб-приложения.
Если вы используете 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 сегодня.
Запуск exe файла из Mono на сервере
Добрый день! Допустим, я под Дебианом с графической средой в Mono соберу свой проект как консольный, а после захочу его запустить на сервере под управлением всё того же Дебиана. Какие пакеты мне необходимо установить на сервере, чтобы иметь возможность запускать на нём exe файлы, собранные на другом линуксе, с помощью проекта моно? РЕШЕНИЕ. Как оказалось, для запуска необходимо установить пакет mono-complete, для того, чтобы всё работало (у меня, по крайней мере — простое серверное приложение). После разрешения всех зависимостей (достаточно много на голом Debian 7.8), команда mono ExeName.exe работает. Для установки пакета добавить репозитории, всё как указано в документации по установки Mono:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list apt-get update
1 ответ 1
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.7.13.43531
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Mono Basics
After you get Mono installed, it’s probably a good idea to run a quick Hello World program to make sure everything is set up properly. That way you’ll know that your Mono is working before you try writing or running a more complex application.
Console Hello World
To test the most basic functionality available, copy the following code into a file called hello.cs.
using System; public class HelloWorld < public static void Main(string[] args) < Console.WriteLine ("Hello Mono World"); >>
Note: csc compiler is not available on all platforms or in very old Mono versions, in such cases use mcs instead.
The compiler will create “hello.exe”, which you can run using:
The program should run and output:
HTTPS connections
To make sure HTTPS connections work, run the following command to check whether you can connect to nuget.org:
csharp -e 'new System.Net.WebClient ().DownloadString ("https://www.nuget.org")'
The program prints the website contents if everything works or throws an exception if it doesn’t.
WinForms Hello World
The following program tests writing a System.Windows.Forms application.
using System; using System.Windows.Forms; public class HelloWorld : Form < static public void Main () < Application.Run (new HelloWorld ()); >public HelloWorld () < Text = "Hello Mono World"; >>
To compile, use csc with the -r option to tell the compiler to pull in the WinForms libraries:
csc hello.cs -r:System.Windows.Forms.dll
The compiler will create “hello.exe”, which you can run using:
NOTE: on macOS you’ll have to wait around a minute the very first time you run this command. You also need to use mono32 since WinForms isn’t supported on 64bit yet. As of macOS 10.15 Catalina there’s no 32bit support anymore so WinForms doesn’t work there at the moment.
ASP.NET Hello World
Create a text file with the name hello.aspx and the content:
Then run the xsp4 command from that directory:
Gtk# Hello World
The following program tests writing a Gtk# application.
using Gtk; using System; class Hello < static void Main () < Application.Init (); Window window = new Window ("Hello Mono World"); window.Show (); Application.Run (); >>
To compile, use mcs with the -pkg option to tell the compiler to pull in the Gtk# libraries (note that Gtk# must be installed on your system for this to work):
mcs hello.cs -pkg:gtk-sharp-2.0
The compiler will create “hello.exe”, which you can run using: