Статьи

Працюємо з 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?

Новости