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


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

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

3 ответа:

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

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

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

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

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

в блоге Натана Бриджуотера есть несколько хороших статей, показывающих, среди прочего:

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

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

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

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