ASP.NET + Mono + Apache

Published 9/22/2009 by e0ne in Mono | Web Development

Всё больше и больше можлно услышать о Mono. Как изестно, основное его идеей является реализация действительно кроссплатформенной среды .NET. Таким образом, чеще всего Mono испльзуют в операционной системе, отличной от MS Windows. А если не Windows, то Linux или какой-то из Unix. И всё было бы хорошо, если б не 2 момента (в данном случае я не акцентрирую внимание на степень готовности реализации Mono: аналог WinForms и замена Internet Information Services (IIS).На за мену WinForms приходят GTK, QTи другие библиотеки. А вот с заменой IIS все не тах хорошо: либо Apache с соответствующими модуляли, либо "родной" для Mono веб-сервер XSP2. А так как Apache наиболее популярен, то будем пользоваться им.

Все примеры я буду приводить для Ubuntu linux, но для других nix-подобных ОС все будет делаться таким же способом, за исключением установки пакетов.

Для начала нам все же надо установить Mono и IDE для нее. В качестве IDE  будем использовать MonoDevelop. Устанавливаем всё необходимое:

apt-get install mono-2.0-runtime mono-2.0-gac mono-2.0-service mono-2.0-devel mono-xsp2 mono-xsp2-base 

После чего можно запустить MonoDevelop, созать простое ASP.NET приложение и запустить. В результате получаем что-то похожее на это:

Теперь мы уже можем без проблем заниматься разработкой вплоть до момента, когда нужно запустить приложение на test-сервере, на которов, в качестве web-сервера, должен стоять Apache. Дело за малым - установить Apache и настроить его для работы с Mono.

Для наала, устанавливаем необходимы пакеты:

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

 

Говорим веб-серверу о необходимости загрузки нового модуля:

sudo a2enmod mod_mono

И создаём новый конфиг (/etc/mono-server2/monotest.webapp) для нашего приложения:

  <apps>
      <web-application>
         <name>Mono test</name>
         <vpath>/mono</vpath>
         <path>/var/www/</path>
        <vhost>localhost</vhost>
      </web-application>
</apps>


Последние что нас осталось сделать - это подправить конфигурационный файл Apache'а для нашего сайта (/etc/mono-server2/mono-server2-hosts.conf). Добавляем в него такие строки:

Alias /mono "/var/www"
AddMonoApplications default "/mono:/var/www"
    <Directory /var/www>
       SetHandler mono
          <IfModule mod_dir.c>
             DirectoryIndex Default.aspx
          </IfModule>
    </Directory>

Перезагружаем Apache командой:

sudo /etc/init.d/apache2 restart

И смотрим в браузере что у нас получилось:



Вчера в Киеве прошла конференция Patterns & Practices Roadshow. Изначально она должна была пройти в офисе Microsoft Ukraine, но, т.к. было многожелающих, провели её в Киевском кукольном театре. Очень красивое место и здание. Из названия было понятно, что будет обсуждаться Enterprice Library (EntLib), Entity Framework и всем, что связано с P'n'P. Догадки подтвердил опубликованный список ресурсов. 

Началось всё со вступительного слова представителя компании Microsoft Ukraine. Хотя, на самом деле всё началось с регистрации, где нам вдали пакеты с анкетой, ручкой и каким-то учебником для ВУЗов на украинском языке и кофе.


Первый доклад имел гордое название "Patterns & practices – взгляд в будущее", автором которого был Ajoy Krishnamoorthy, ведущий специалист группы patterns & practices в Microsoft, а в прошлом - PM продукта Visual Studio Team System. Было небольшое введение на тему "что такое Patterns & Practices, EntLib".

 

Вторым на сцену вышел Don Smith, которого встретили бурными авациями в том числе и из-за его Mac Book Pro, на котором оказалась установленная Windows 7.


Тут доклады немного пеменялись местами и мы услышали  доклад "Руководство по архитектуре приложений: карта вашего путешествия", который должен был быть после обеда. Но хуже от этого не стало. Нам рассказали о "Application Architecture Guide", котором написано, что он создан для разработки решений на платформе .NET, но, по сути, может быть использован при использовании и других технологий. Это же нам подтвердил Дон. Application Architecture Guide рассазывает нам о высокоарзхитектурных решениях, не вдаваясь в подробности реализации конкретных частей приложений. Думаю, что это будет интересно не только архитекторам, но и всем разработчикам. Поэтому рекомендую прочесть этот почти 400-страничный мануал.

Следующим был доклад нашего земляка Григория Мельника (Grigori Melnik).

Началось с приветствия и фразы "решил не выпендриваться и говорить на русском" (дословно). Было интересно послушать про EntLib 5,в которой будет поддерживаться совместимость до 2-й версии. Таким образом, если вы испульзовалм более старую версию библиотеки, то вы практически без проблем перейдёте на EntLib 5. К сожалению, из-за большого количества вопросов, доклад получился не полным. Григорий успел рассказать в общих чертах об Enterprice Library и рассказал о таких её частях, как Logging и Unity. Очень хотелось послушать ещё о Exception Handling и Data Access, который не является очередной ORM. Эту тему немного затронули в другом докладе, посвященному доступу к данным.

Обед. После обеда снова появился Don Smith и с докладом "Современные методы доступа к данным: шаблоны и реализации". Опять был сделан упор не на конкретную реализицию, а на то, какие вообще могут быть DataLayer. Немного была затронута тема Entity Libraкy и  LINQ to SQL. Несколько примеров приложений с разными архитектурами data layer хорошо продемонстрировали то, что Дон рассказывал и показывал на слайдах. 

Подводя итог, хочу сказать что конференция понравилась, не жалко потраченных времени/денег. Докладчики хорошо разбираются в сути вопроса и, что немаловажно, не просто говорят какие их технологии классные и нужно использовать их, а просто говорят какие есть плюсы, а иногда и минусы, тех  или иных подходов. Не было сказано не одной фразы похожей на "это классно, используйте наши технологии". Всё было достаточно объективно. Что касается организации, то не было привычных всем футболок, зато в обмен назаполенную анкету давали флешку с материалами конференции, на которой, к слову, не оказалось показанных презентаций и примеров проггрмамм, которые использовали докладчики. Так же не было EntLib 5, которая ещё не вышла в RTM.

P.S. Mike Chaliy, спасибо за фото.


Всех с праздником! Сегдня 256-й день в году, который считается международным днём программиста!