Развертывание ASP.NET MVC в Linux: лучшие практики, инструменты и сюрпризы

Мне интересно узнать о лучших методах разработки приложений ASP.NET MVC с возможностью развертывания в Linux. Если вы создаете такие приложения MVC,

  • Какую платформу Linux/Mono вы планируете?
  • Какая часть развития вы делаете в Windows и сколько в Linux?
  • Используете ли вы ORM для абстрагирования базы данных? Какой?
  • Вы используете механизм сборки в Linux? Как насчет тестов?
  • Какие еще инструменты вы используете?
  • Сколько еще была работа для Linux в дополнение к Windows?
  • Какие уродливые или приятные сюрпризы вы столкнулись?

Ответ 1

Компания, с которой я работаю для задач Mono в Linux, является нашей основной средой развертывания. Таким образом, нет "дополнительной" работы - мы предоставляем весь стек, от аппаратного обеспечения, через операционную систему (настраиваемую и обрезанную) для приложений. Использование Open Source дает огромную экономию для нас и наших клиентов (и да, мы вносим свой вклад в проекты ОС, на которые мы полагаемся).

Важно постоянно проверять свою реальную цель (извините, Mono on Windows не учитывается). Конечно, разработчики используют Visual Studio, но непрерывная интеграция (используя CruiseControl.Net, вам понадобится Mono 2.4.2 для запуска в Linux) выполняется как в Windows, так и в Linux, тестируя все версии Mono, над которыми мы планируем работать (в последнее время он стал намного более стабильным, но все же регрессии происходят между релизами). Легко запускать параллельные версии Mono в одной системе * nix, вы можете даже включить сборку снимков svn, если вы предпочитаете рано ловить восходящие регрессии. Если вы не раскрываете свой собственный дистрибутив, помните, что большинство поставщиков Linux поставляют Mono с пользовательскими патчами - это уже вызвало проблемы у нас. Кроме того, во многих дистрибутивах есть много обновлений с задержкой Mono, и это быстро развивающийся проект.

Для слоя базы данных мы используем в основном "простой" ADO.NET - Oracle (с dotConnect для Oracle, они поддерживают Mono) и SQLite (Mono корабли с рабочим коннектором). Я также использовал официальный ADO.NET Driver for MySQL (Connector/NET), и он тоже хорошо работает. ORM-сопоставления более сложны, но NHibernate можно использовать (имейте в виду, что они официально не поддерживают Mono).

Что касается механизма сборки и тестов - NAnt и NUnit хорошо известны и хорошо протестированы. С самыми последними версиями Mono xbuild (клон MSBuild) на самом деле можно использовать, но приготовьтесь к тому, чтобы внести довольно много исправлений, если вы решите использовать его для более сложных сценариев.

Напишите тесты. Многие из них. Будьте готовы внести исправления и исправления, а если вы используете коммерческие компоненты - убедитесь, что поставщик официально поддерживает Mono.

Ответ 2

В блоге Nathan Bridgewater есть несколько приятных статей, среди прочего:

  • запуск MVC3 с бритвой на моно
  • перенос ASP.NET MVC из Windows/SQL Server в Linux/MySQL
  • установка и запуск MonoDevelop
  • установка моно из источника

http://iws.io/get-mvc3-razor-running-on-mono/

Ответ 3

Взгляните на Монопроект. Похоже, это то, что вы ищете. Если я правильно помню, они теперь интегрированы в ASP.NET MVC.

Я никогда не работал с Моно, но из моего понимания не так много различий.