Ответ 1
Прежде всего, очень хорошие вопросы.
У меня нет опыта работы с веб-сайтом с использованием ASP.Net MVC, но у меня есть опыт работы с веб-формами ASP.Net и миграция коммерческого приложения ASP.Net из Windows в Mono, работающего на Linux.
Я могу ответить на некоторые из ваших вопросов.
1) Скорее всего, вы получите больше ошибок и ошибок в сравнении с простое развертывание Windows? И если да, то насколько плохи некоторые из ошибок, есть ли у вас проекты, где это вообще не работает?
Я бы сказал, да, но не так много. Наше приложение составляет 200K + строк кода, и в настоящее время я могу думать только об одной ошибке Mono, которая существует с нашим кодом, который является незначительным. Ошибка вызывает метод Session.Abandon, который приводит к сбою Apache. Я думаю, что вы найдете больше ошибок в новом API.Net, но в целом структура очень стабильна.
2) Рекомендуете ли вы программировать в Visual Studio, а затем развертывать его на моноплатформе? Или есть лучшая IDE, которую вы рекомендуете, например Mono (или Eclipse, если возможно)? В настоящее время я использую Linux как свою ОС и запускаю Windows 7 с Visual Studio.
Я считаю, что нет лучшей IDE, чем Visual Studio с точки зрения возможностей/стабильности, которые она предлагает. Однако, говоря это, MonoDevelop - очень хорошая среда, которая очень похожа на Visual Studio. Он просто не имеет большого количества дополнительных функций, которые предлагает Visual Studio. Например, Visual Designer для веб-страниц и присоединитесь к отладке процесса. В компании я работаю над тем, чтобы мы использовали MonoDevelop для Windows/Mac и Linux. Поэтому, если вы ищете кросс-платформенное решение, переходите к MonoDevelop, но если вы не возражаете использовать Windows в качестве ПК для разработки и оплачиваете лицензии VS, то VS отлично.
Изменить: С момента написания Visual Studio Community Edition был выпущен и не требует лицензии. Существует также возможность использования .NET Core в сочетании с вашим любимым редактором (или Visual Studio Code, также бесплатно). Последнее поддерживается в Windows, Linux и Mac OS X). Также есть Visual Studio для Mac.
3) Поскольку у меня есть несколько приложений, которые завершены с использованием бета-версии beta beta3 и бета-версии mvc4, они совместимы с текущей версией Mono? Если нет, то каковы средние временные рамки с момента официального выпуска рамки, пока Mono не станет совместимым?
Я не знаю, поддерживаются ли эти API. Один из способов узнать - использовать инструмент Moma для анализа ваших сборок. Другой вариант - загрузить последнюю версию Mono + MonoDevelop и попытаться построить ваше решение, используя их. Я не знаю точных временных рамок, что API выпущен, но я думаю, что это очень скоро после выпуска .Net, а иногда даже до выпуска Microsoft.
4) Я не осведомлен о базах данных. Мои базы данных для SQL Server, я должен будет изменить их для работы на сервере Linux. Это склонность к боли или ошибкам? Мои базы данных SQL Server сначала создаются с использованием кода сущности, работает ли это, если мне нужно создавать базы данных MySQL (или что-то еще)?
- > ответ не должен быть на самом деле. MS выпустила MS-SQL Server для Linux. вы можете скачать MSSQL на ubuntu в двух командах apt-get. Я не знаю, как отредактировать эту часть ответа. < - Да, это базы данных с переключением боли. Еще больнее, если вы используете хранимые процедуры. Существуют коммерческие программы, которые могут преобразовывать ваши таблицы базы данных и данные из MS SQL Server в MySQL или Postgresql. Мы использовали инструменты DBConvert, чтобы преобразовать нашу схему базы данных в Postgresql. Преобразование таблиц было легкой частью. Самая сложная часть - это преобразование наших хранимых процедур. Наше приложение в значительной степени опирается на хранимые процедуры с 900 + хранимыми процедурами в нашей базе данных. Мне пришлось переписать каждую хранимую процедуру в Postgresql вручную. Если ваши хранимые процедуры просто прямые SQL, то это не будет столь же сложно, но если вы сильно полагаетесь на TSQL, вам нужно будет найти эквиваленты к вашему коду на языке кодирования, который используется выбранной вами базой данных. С Postgresql лучший эквивалент PL/pgSQL, У меня не было опыта переноса данных с помощью коммерческих инструментов, которые предлагает DBConvert. Мы внесли много изменений в нашу базу данных, в то же время мы перенесли на Mono, поэтому для переноса данных мы создали собственный код для миграции.
5) В настоящее время я развертываю свои веб-сайты mvc на удаленном сервере Server 2008r2. Есть ли альтернатива IIS, которую вы бы использовали для Linux? Можете ли вы предоставить мне ссылку на учебник по настройке этого.
& &
7) Можете ли вы дать мне оценку того, сколько дискового пространства является моно + какой-либо iis + framework и т.д., что это займет? При сравнении ОС Linux с ОС Windows Windows занимает больше пространства TON; так что, используя эту моно-установку, вы также заработаете TON на диске? (Я понимаю, что сравнение размеров ОС не является хорошим примером.)
Apache2 с mod_mono используется для размещения сайтов с Mono в Linux. Linux использует минимальное пространство. Мы размещаем наше веб-приложение с помощью Amazon EC2. Новая установка нашего стека, которая в основном включает Ubuntu, Mono, Apache2, Postgresql и Postfix, занимает всего 1,2 ГБ места. Поэтому ответ No Mono не занимает огромного объема дискового пространства. Здесь - это учебник по настройке Mono на Ubuntu. Я не знаю ни одного учебника, который исключительно хорош. Если вам нужна помощь в этом, лучше всего перейти на Моно IRC-канал и Список рассылки Mono. Здесь вы можете поговорить с сообществом и разработчиками, которые работают в Xamarin.
8) Есть ли недостатки, которые я, возможно, забыл, о которых вы можете думать? Например, есть ли какие-то странные проблемы с просмотром каталогов, конфигурацией файлов файлов, jquery/ajax и т.д.
Чувствительность к регистру может быть проблемой. Linux - это ОС, чувствительный к регистру, поэтому вам нужно убедиться, что все вызовы файловой системы чувствительны к регистру. В зависимости от того, какая база данных вы выберете, она также может быть чувствительной к регистру. Postgresql - это база данных, чувствительная к регистру, поэтому при выполнении запросов имена столбцов должны быть чувствительны к регистру. URL-адреса MVC не чувствительны к регистру, поэтому вы должны быть в порядке. Веб-сайты ASP.Net чувствительны к регистру, поскольку имена страниц используют URL-адреса. Если у вас есть проблемы с чувствительностью к регистру при первом запуске ваших приложений в Mono с помощью linux, вы можете использовать Mono IOMap, чтобы все было в порядке. IOMap имеет дело с нечувствительностью к регистру, но это дает вашему приложению поражение производительности, поэтому оно не рекомендуется для использования в рабочей среде.
9) Есть ли у вас какие-либо рекомендации, учебные пособия, блоги и т.д.? Есть ли сайт Stack Exchange, который имеет дело с этими типами проблем лучше, чем этот? (Я не мог найти его, кроме, возможно, Linux.
Я не могу представить лучшие веб-сайты для программирования и администратора сервера, кроме stackoverflow и serverfault.
10) Хотя для меня это не является необходимостью, я хотел бы настроить его и сделать это только для того, чтобы иметь возможность в будущем, но я не буду тратить время на это, если он является полным отходы. У меня есть как Linux VPS, так и Windows VPS, которые я арендую прямо сейчас, поэтому, если бы я это сделал, это также позволило бы мне иметь только удаленный сервер Linux (возможно, с меньшим объемом жесткого диска и бараном), так что это потенциально спасло бы мне деньги. Поэтому мой последний вопрос: не могли бы вы порекомендовать это, если бы ваша ситуация была похожа на мою?
Я бы порекомендовал его, но вы должны знать, что есть большая кривая обучения, чтобы ознакомиться с ОС Linux, разными серверами баз данных и установить/настроить приложения для работы в среде Mono. Вероятно, вы обнаружите, что многие вещи не так интуитивны, как они используют технологии MS. Вы не будете использовать развертывание графического интерфейса и настройте свои приложения на сервере как SSH - лучший способ взаимодействия с серверами Linux.