Прежде всего, очень хорошие вопросы.
У меня нет опыта работы с Интернетом с использованием ASP.Net MVC, но у меня есть опыт работы с веб-формами ASP.Net и переносом коммерческого приложения ASP.Net.от Windows до Mono, работающей в Linux.
Я могу ответить на некоторые ваши вопросы.
1) Скорее всего, вы получите больше ошибок и ошибок, чем просто придерживаться развертывания Windows?И если да, то насколько плохи некоторые ошибки, были ли у вас проекты, в которых это вообще не работает?
Я бы сказал, что да, но не так много.Наше приложение содержит более 200 тысяч строк кода, и в настоящее время я могу вспомнить только одну ошибку Mono, которая существует в нашем коде, которая является незначительной.Ошибка заключается в вызове метода Session.Abandon, который приводит к сбою Apache.Я думаю, что вы найдете больше ошибок в более новых .Net API, но в целом структура очень стабильна.
2) Вы рекомендуете программировать в Visual Studio и затем развертывать его на моно платформе?Или есть лучшая IDE, которую вы рекомендуете, например, Mono (или Eclipse, если это возможно)?В настоящее время я использую Linux в качестве своей ОС и запускаю Windows 7 с Visual Studio.
Я считаю, что нет лучшей IDE, чем Visual Studio, с точки зрения функций / стабильности, которые она предлагает.Однако, говоря это, MonoDevelop - очень хорошая IDE, очень похожая на 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) Поскольку у меня есть несколько приложений, которые завершены с использованием .net 4.5 beta и mvc4 beta, совместимы ли они стекущая версия моно?Если нет, то каковы средние временные рамки с момента официального выпуска платформы до того, как Mono станет совместимым?
Я не знаю, поддерживаются ли эти API еще.Один из способов выяснить это - использовать инструмент Moma для анализа ваших сборок.Другой вариант - загрузить последнюю версию Mono + MonoDevelop и попытаться создать свое решение, используя их.Я не знаю точных временных рамок выпуска API, но я думаю, что в целом это очень скоро после выпуска .Net, а иногда даже до выпуска Microsoft.
4) Я не осведомлен обазы данных.Мои базы данных для SQL Server, я должен изменить их для запуска на сервере Linux.Это боль или ошибка склонна?Мои базы данных sql server сначала создаются с использованием кода объекта, работает ли это, если мне нужно создать базы данных MySQL (или что-то еще)?
-> на самом деле ответ должен быть отрицательным.MS выпустила MS-SQL Server для Linux.Вы можете скачать MSSQL в Ubuntu всего за 2 команды apt-get.Я не знаю, как редактировать эту часть ответа.<- Да, это боль переключения баз данных.Еще больше боли, если вы используете хранимые процедуры.Существуют коммерческие программы, которые могут конвертировать ваши таблицы базы данных и данные из MS SQL Server в MySQL или Postgresql.Мы использовали инструменты из <a href="http://dbconvert.com/" rel="nofollow noreferrer"> DBConvert для преобразования нашей схемы базы данных в Postgresql.Преобразование таблиц было легкой частью.Самым сложным было преобразование наших хранимых процедур. Наше приложение в значительной степени опирается на хранимые процедуры с 900+ хранимых процедур в нашей базе данных. Мне пришлось переписывать каждую хранимую процедуру в Postgresql вручную. Если ваши хранимые процедуры - просто прямой SQL, тогда это будет не так сложно, но если вы в большой степени будете полагаться на TSQL , то вам нужно будет найти эквиваленты вашего кода на языке кодирования, используемом выбранной вами базой данных. , С Postgresql лучшим эквивалентом является PL / pgSQL .
У меня не было опыта переноса данных с использованием коммерческих инструментов, предлагаемых DBConvert. Мы внесли много изменений в нашу базу данных в то же время, когда мы мигрировали в Mono, поэтому для миграции данных мы написали наш собственный код для выполнения миграции.
5) В настоящее время я развертываю свои веб-сайты mvc на удаленном сервере Server 2008r2. Есть ли альтернатива IIS, которую вы бы использовали для Linux? Можете ли вы дать мне ссылку на учебник по настройке этого.
&&
7) Можете ли вы дать мне оценку того, сколько дискового пространства занимает моно + какая-то платформа iis + и т. Д., Что это займет? При сравнении ОС Linux с ОС Windows, Windows занимает на ТОННУ больше места; так что бы использование этой моно установки заняло бы ТОННУ дискового пространства тоже? (Я понимаю, что сравнение размеров ОС не является хорошим примером.)
Apache2 с mod_mono используется для размещения сайтов с Mono в Linux. Linux использует минимальное пространство. Мы размещаем наше веб-приложение на Amazon EC2. Новая установка нашего стека, которая в основном включает в себя Ubuntu, Mono, Apache2, Postgresql и Postfix, занимает всего 1,2 ГБ. Так что ответ No Mono не занимает много места на диске.
Здесь - руководство по настройке Mono в Ubuntu. Я не знаю ни одного учебника, который был бы исключительно хорош. Если вам нужна помощь в этом, лучше всего обратиться к Mono IRC каналу и Mono спискам рассылки . Здесь вы можете поговорить с сообществом и разработчиками, которые работают в Xamarin .
8) Есть ли какие-то недостатки, которые я мог упустить из виду, о которых вы можете подумать? Например, есть какие-то странные проблемы с просмотром каталогов, наймом конфигурационного файла, проблемами с jquery / ajax и т. Д.
Чувствительность к регистру может быть проблемой. Linux является чувствительной к регистру ОС, поэтому вам необходимо убедиться, что все вызовы файловой системы чувствительны к регистру. В зависимости от того, какую базу данных вы выберете, она также может быть чувствительна к регистру. Postgresql является чувствительной к регистру базой данных, поэтому при выполнении запросов имена столбцов должны быть чувствительными к регистру.
С MVC URL-адреса не чувствительны к регистру, поэтому вы должны быть в порядке с этим. Веб-сайты ASP.Net чувствительны к регистру, так как имена страниц используют URL-адреса.
Если у вас возникают проблемы с чувствительностью к регистру при первом запуске ваших приложений в Mono с Linux, тогда вы можете использовать Mono IOMap для запуска и запуска. IOMap работает с нечувствительностью к регистру, но дает приложению снижение производительности, поэтому его не рекомендуется использовать в производственной среде.
9) Есть ли у вас какие-либо рекомендации, учебные пособия, блоги и т. Д.? Существует ли сайт Stack Exchange, который решает эти проблемы лучше, чем этот? (Я не смог найти ни одного, кроме, возможно, Linux.
Я не могу придумать более подходящих сайтов для программирования и администрирования сервера, кроме stackoverflow и serverfault.
10) Хотя это не является необходимостью для меня, я хотел бы настроить его и сделать это просто для того, чтобы иметь возможность в будущем, но я не буду тратить на это свое время, если оно это полная трата. У меня есть и Linux VPS, и Windows VPS, которые я арендую прямо сейчас, поэтому, если бы я сделал это, это также позволило бы мне иметь только удаленный сервер Linux (возможно, с меньшим количеством места на жестком диске и оперативной памяти), что потенциально могло бы сэкономить мне деньги. Итак, мой последний вопрос: вы бы порекомендовали сделать это, если ваша ситуация была похожа на мою?
Я бы порекомендовал это, но вы должны знать, что существует большая кривая обучения для ознакомления с операционными системами Linux, различными серверами баз данных и установки / настройки приложений для работы на платформе Mono.Вы, вероятно, обнаружите, что многие вещи не так интуитивно понятны, как использование технологий MS.Вы не будете использовать GUI для развертывания и настройки своих приложений на сервере, так как SSH - лучший способ взаимодействия с серверами Linux.