Статьи

Працюємо з Mono: Частина 10. Запуск ASP.NET-додатків на платформі Linux

  1. Серія контенту:
  2. Цей контент є частиною серії: Працюємо з Mono
  3. Сервери, що підтримують технологію ASP.NET
  4. Налаштування Web-сервера Apache для роботи з ASP.NET-додатками
  5. Лістинг 1. ASP.NET-сторінка для перевірки правильності встановлення mod_mono
  6. Малюнок 1. Результат відкриття сторінки sample.aspx
  7. Створення ASP.NET-додатка в середовищі розробки MonoDevelop
  8. Малюнок 2. Створення ASP.NET проекту в MonoDevelop IDE
  9. Малюнок 3. ASP.NET-проект, відкритий в середовищі розробки MonoDevelop
  10. Лістинг 2. Модифікований метод button1Clicked
  11. Малюнок 4. Результат запуску ASP.NET-додатка
  12. Лістинг 3. Конфігураційний файл для Web-сайту ASP_HelloWorld
  13. Малюнок 5. ASP.NET-додаток, розгорнуте на Web-сервері Apache
  14. Підтримка нових версій ASP.NET
  15. Малюнок 6. Перевірка версії платформи Mono
  16. Ресурси для скачування

Працюємо з Mono

Серія контенту:

Цей контент є частиною # з серії # статей: Працюємо з Mono

https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Працюємо з Mono

Слідкуйте за виходом нових статей цієї серії.

ASP.NET - нова технологія, створена компанією Microsoft в рамках ідеології .NET для створення високо функціональних Web-додатків. Однією з основних завдань технології ASP.NET є створення динамічних Web-сторінок. Поточна реалізація Mono повністю підтримує ASP.NET версії 1.1 і більшість можливостей ASP.NET версії 2.0.

З одного боку здається, що розробка додатків з використанням ASP.NET для використання на платформі Linux не має практичного сенсу, так як існує велика кількість «рідних» технологій, застосовуваних в області розробки динамічних Web-сторінок. Однак іноді можливі ситуації, коли необхідно забезпечити роботу існуючого ASP.NET Web-додатки на сервері, що працює під управлінням ОС Linux.

Сервери, що підтримують технологію ASP.NET

Основним сервером для запуску ASP.NET-додатків є Microsoft Internet Information Server (IIS), призначений виключно для використання на ОС сімейства MS Windows. Однак на платформі Linux існують не менш потужні Web-сервери, наприклад, можливо, найвідоміший Web-сервер - Apache. Web-сервер Apache підтримує розширення функціональності за допомогою плагінів. Для спільного використання Apache і Mono був розроблений плагін mod_mono, який дозволяє використовувати ASP.NET на Linux-системах.

Іншим варіантом є сервер XSP. XSP - це полегшений Web-сервер, призначений для розробки і тестування Web-додатків. Сервер XSP не рекомендується використовувати для розгортання комерційних проектів в силу обмеженої функціональності, проте він незамінний в ході розробки. Web-сервер XSP, написаний на C #, входить в комплект інструментів Mono. З його допомогою можна переглядати ASP.NET-сторінки безпосередньо з середовища розробки MonoDevelop в режимі налагодження. Якщо цей Web-cервер не встановлено, то його можна встановити за допомогою такої команди:

sudo apt-get install mono-xsp

Web-сервер Apache можна використовувати для розгортання ASP.NET-додатків і без підключення плагіна mod_mono, замінивши цей плагін на комбінацію плагінів mod_proxy і mod_proxy_http і Web-сервер XSP. Однак такий спосіб не рекомендується розробниками Mono по ряду причин, серед яких зниження швидкодії і той факт, що Web-сервер XSP не підтримує всі можливості стандарту HTTP 1.1.

Налаштування Web-сервера Apache для роботи з ASP.NET-додатками

Існують два способи налаштування сервера Apache для роботи з ASP.NET-додатками. Найпростішим варіантом є автоматична настройка, для якої досить встановити на Web-сервер плагін mod_mono. Перед установкою mod_mono слід перевірити наявність плагіна для роботи з PHP і в разі, якщо він встановлений - видалити, так як дані плагіни несумісні між собою.

Установка і настройка mod_mono може трохи відрізнятися для різних Linux-дистрибутивів Linux. У даній статті буде використовуватися дистрибутив Ubuntu 10.10 (Maverick Meerkat) з уже встановленим Web-сервером Apache.

Спочатку потрібно встановити пакети libapache2-mod-mono і mono-apache-server2 (всі наведені команди повинні виконуватися від імені суперкористувача root):

apt-get install libapache2-mod-mono mono-apache-server2

Пакет libapache2-mod-mono містить плагін mod_mono для Apache, який розпізнає файли, пов'язані з додатками ASP.NET, і передає їх mono-сервера, що знаходиться в пакеті mono-apache-server2. Після цього необхідно встановити пакет mono-devel, що містить деякі інструменти, які можуть знадобитися для роботи додатків:

apt-get install mono-devel

Після підключення модуля буде потрібно перезапустити Web-сервер Apache, як показано нижче:

a2enmod mod_mono_auto /etc/init.d/apache2 restart

У лістингу 1 наведено вихідний код демонстраційної ASP.NET-сторінки.

Лістинг 1. ASP.NET-сторінка для перевірки правильності встановлення mod_mono

<% @ Page Language = "C #"%> <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- strict.dtd "> <HTML> <HEAD> <TITLE> Перше ASP.NET додаток в середовищі Mono </ TITLE> </ HEAD> <BODY> <FORM id =" form "runat =" server "> <asp: label id = "label" runat = "server"> Привіт з ASP.NET (Mono) </ asp: label> </ FORM> </ BODY> </ HTML>

Код сторінки необхідно зберегти в файлі sample.aspx і скопіювати його в папку / var / www /. Для перегляду отриманого результату в адресному рядку Web-браузера слід ввести наступний URL: http: //localhost/sample.aspx . Якщо установка пакета mod_mono пройшла успішно, то буде показана HTML-сторінка, зображена на малюнку 1.

Малюнок 1. Результат відкриття сторінки sample.aspx
Працюємо з Mono   Серія контенту:   Цей контент є частиною # з серії # статей: Працюємо з Mono   https://www

Другий варіант установки вимагає «ручний» конфігурації пакету mod_mono. Якщо на цільовій системі вже був застосований перший варіант, то слід відключити автоматичне конфігурування і перезапустити Web-сервер Apache, як показано нижче:

a2dismod mod_mono_auto /etc/init.d/apache2 restart

Як і в першому випадку, спочатку потрібно встановити пакети libapache2-mod-mono і mono-apache-server2. Потім необхідно буде знову активувати підтримку mod_mono (але без підтримки автоматичної конфігурації):

a2enmod mod_mono

Після цього в файлі конфігурації /etc/apache2/mods-available/mod_mono.conf необхідно буде визначити версію ASP.NET, яка буде підтримуватися сервером. Для підтримки ASP.NET версії 2.0 в даному файлі повинна бути рядок:

Include /etc/mono-server2/mono-server2-hosts.conf

Для підтримки версії 1.1 потрібно інший запис:

Include /etc/mono-server/mono-server-hosts.conf

Далі необхідно конфігурувати ASP.NET додаток, створивши конфігураційний файл Web-сервера в каталозі / etc / apache2 / sites-available /, і активувати його командою a2ensite, вказавши в якості параметра ім'я конфігураційного файлу. Після цього залишиться тільки перезапустити сервер, як було показано вище.

Питання створення конфігураційних файлів для Web-сервера Apache виходять за рамки даної статті, тому необхідну інформацію можна знайти в документації сервера Apache або на ресурсі, присвяченому плагіну mod_mono .

Створення ASP.NET-додатка в середовищі розробки MonoDevelop

Середовище розробки MonoDevelop підтримує створення ASP.NET-додатків. Для створення програми необхідно створити новий проект (solution) і вибрати тип проекту C # - & gt; ASP.NET - & gt; Web Application, як показано на малюнку 2.

Малюнок 2. Створення ASP.NET проекту в MonoDevelop IDE

Якщо не вибирати варіант зі створенням порожнього проекту (опція Empty Web Application), то MonoDevelop IDE створить проект, що містить ASP.NET-сторінку з кнопкою, яка змінює при натисканні текст з Click Me на You clicked me.

Малюнок 3. ASP.NET-проект, відкритий в середовищі розробки MonoDevelop

Процес розробки ASP.NET додатків - це тема окремої (а може і не однієї) статті, тому в даній статті в вихідний приклад будуть внесені мінімальні зміни, необхідні для демонстрації принципів роботи з ASP.NET на платформі Mono. Так, коли користувач натисне на кнопку, вже наявну на сторінці, то замість тексту будуть виведені поточні значення дати і часу. Для цього необхідно змінити метод button1Clicked в файлі Default.aspx.cs, як показано в лістингу 2.

Лістинг 2. Модифікований метод button1Clicked

public virtual void button1Clicked (object sender, EventArgs args) {this.button1.Text = DateTime.Now.ToString (); }

Для запуску програми в віконному меню Run (запуск) необхідно вибрати опцію Run. Після цього додаток запуститься за допомогою сервера xsp2 і відкриється у вікні Web-браузера. Результат запуску додатка показаний на малюнку 4.

Малюнок 4. Результат запуску ASP.NET-додатка

Після перевірки працездатності програми необхідно розгорнути його у вигляді самостійного Web-сайту, що працює на Web-сервері Apache. Для цього необхідно скомпілювати проект в режимі Release, потім створити каталог ASP_HelloWorld в каталозі / var / www / і скопіювати туди файли ./bin/ASP_HelloWorld.dll, Default.aspx, web.config. Конфігураційний файл створюється за допомогою спеціальної утиліти .

Лістинг 3. Конфігураційний файл для Web-сайту ASP_HelloWorld

<VirtualHost *: 80> ServerName ASP_HelloWorld ServerAdmin web-admin @ ASP_HelloWorld DocumentRoot / var / www / ASP_HelloWorld MonoServerPath ASP_HelloWorld "/ usr / bin / mod-mono-server2" MonoSetEnv ASP_HelloWorld MONO_IOMAP = all MonoApplications ASP_HelloWorld "/: / var / www / ASP_HelloWorld "<Location" / "> Allow from all Order allow, deny MonoSetServerAlias ​​ASP_HelloWorld SetHandler mono SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI" \. (?: gif | jpe? g | png) $ "no-gzip dont-vary </ Location> < IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text / html text / plain text / xml text / javascript </ IfModule> </ VirtualHost>

Цей файл необхідно зберегти в каталозі / etc / apache2 / sites-available під ім'ям ASP_HelloWorld і додати в файл / etc / hosts рядок:

127.0.0.1 ASP_HelloWorld

Залишилося тільки активувати створений Web-сайт на сервері Apache і перезапустити його, як показано нижче:

a2ensite ASP_HelloWorld /etc/init.d/apache2 restart

Перевірити розгортання програми можна, запровадивши в адресний рядок Web-браузера наступний URL-адресу: http: // ASP_HelloWorld . При успішному розгортанні проекту буде показана HTML-сторінка, зображена на малюнку 5.

Малюнок 5. ASP.NET-додаток, розгорнуте на Web-сервері Apache

Проблеми, що виникають при міграції ASP.NET-додатків на платформу Mono

Як неодноразово зазначалося, технологія .NET є кроссплатформенной, і Mono - це реалізація технології .NET для певного сімейства систем. Тому додаток, розроблене в Microsoft Visual Studio, може бути без особливих проблем перенесено в Mono, якщо не використовувати спеціальних збірок, які існують тільки для систем сімейства Microsoft.

Однак при міграції додатків на Mono необхідно врахувати кілька важливих моментів. Загальні проблеми міграції додатків вже розглядалися в статті Працюємо з Mono. Частина 5: Перенесення додатка на основі WinForms на платформу Mono . Вся інформація, наведена в цій статті, належить і до ASP.NET-додатків.

Однак для ASP.NET додатків існує можливість ігнорувати відмінність регістра символів в іменах файлів шляхом установки змінної оточення MONO_IOMAP. Для включення цього режиму в конфігураційний файл Apache необхідно додати рядок:

MonoSetEnv MONO_IOMAP = all

Також слід згадати про роботу з базами даних. У середовищі Microsoft Windows найчастіше використовуються продукти сімейства MS SQL Server. В Linux-співтоваристві є набагато більше систем управління базами даних, як безкоштовних open source СУБД, так і комерційних продуктів.

Тому структуру бази даних і запити, що використовуються в додатку, слід змінити так, щоб вони підтримувалися обраної СУБД (наприклад, PostgreSQL або MySQL). Ще може знадобитися внести зміни в код програми, яка працює з СУБД. В майбутньому роботі з базами даних буде присвячена окрема стаття.

Підтримка нових версій ASP.NET

На момент написання даної статті останньої вийшла версією Mono була версія 2.10.2 з підтримкою технологій ASP.NET 4.0 і MVC2. Однак в репозиторіях найбільш поширених дистрибутивів поки не з'явилася навіть версія 2.8. Так, наприклад, в репозиторіях Ubuntu 10.10 найсвіжішою версією Mono є 2.6.7. Можливо, що версія Mono 2.10 чи не з'явиться і в репозиторіях Ubuntu 11.04. Таким чином, за замовчуванням підтримуються тільки версії 1.1 і 2.0 технології ASP.NET.

Для підтримки нових версій ASP.NET буде потрібно самостійно виконати збірку Mono. Для полегшення завдання можна скористатися сценарієм з Web-сайту Integrated WebSystems LLC . Однак в тексті на зазначеній сторінці присутній помилка (розглядається сценарій для версії 2.8), тому нижче наведена правильна послідовність команд:

wget --no-check-certificate https://github.com/nathanb/iws-snippets/ raw / master / mono-install-scripts / ubuntu / install_mono-2.8.sh chmod 755 install_mono-2.10.sh ./install_mono- 2.10.sh

Даний сценарій викачує необхідні бібліотеки і вихідний код Mono і виконує складання і установку. Після запуску сценарію до змінної оточення PATH в файлі / etc / environment необхідно додати шлях до нової версії: /opt/mono-2.10/bin. Для перевірки коректності установки слід перезапустити систему і подивитися версію Mono наступною командою:

mono -V

Висновок даної команди повинен збігатися з висновком, зображеним на малюнку 6.

Малюнок 6. Перевірка версії платформи Mono

висновок

У даній статті розглядалися настройка Linux-платформи для запуску додатків на основі технології ASP.NET. Як було показано, технологія Mono дозволяє легко перенести ASP.NET-додатка з платформи MS Windows на платформу Linux і відмовитися від закритого комерційного ПЗ на користь вільних продуктів.

Сам процес розробки ASP.NET-додатків і їх структура практично не обговорювалися, але так як технологія ASP.NET має виключно великими можливостями, можливо, в найближчому майбутньому з'явиться окремий цикл статей, присвячений розробці ASP.NET-додатків.

Ресурси для скачування

Схожі теми

Підпишіть мене на повідомлення до коментарів

Com/developerworks/ru/library/?
Gif | jpe?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то