Моно, asp.net С# и MVC Как и Учебники

У меня есть несколько основных вопросов для тех, кто знаком с Mono или Mono Development (независимо от того, что он называется), когда дело доходит до программирования в .net и развертывания в Linux (и Mac, если вы тоже знаете). Немного о себе, я работаю в основном с MVC3 и MVC4, несколькими формами окон и, возможно, в будущих мобильных приложениях. 98% времени в С#, а остальные С++.

1) Скорее всего, вы получите больше ошибок и ошибок в сравнении с простое развертывание Windows? И если да, то насколько плохи некоторые из ошибок, есть ли у вас проекты, где это вообще не работает?

2) Рекомендуете ли вы программировать в Visual Studio, а затем развертывать его на моноплатформе? Или есть лучшая IDE, которую вы рекомендуете, например Mono (или Eclipse, если возможно)? В настоящее время я использую Linux как свою ОС и запускаю Windows 7 с Visual Studio.

3) Поскольку у меня есть несколько приложений, которые завершены с использованием бета-версии beta beta3 и бета-версии mvc4, они совместимы с текущей версией Mono? Если нет, то каковы средние временные рамки с момента официального выпуска рамки, пока Mono не станет совместимым?

4) Я не осведомлен о базах данных. Мои базы данных для SQL Server, я должен будет изменить их для работы на сервере Linux. Это склонность к боли или ошибкам? Мои базы данных SQL Server сначала создаются с использованием кода сущности, работает ли это, если мне нужно создавать базы данных MySQL (или что-то еще)?

5) В настоящее время я развертываю свои веб-сайты mvc на удаленном сервере Server 2008r2. Есть ли альтернатива IIS, которую вы бы использовали для Linux? Можете ли вы предоставить мне ссылку на учебник по настройке этого.

6) Если вопрос 4 возможен, каковы потери при развертывании веб-сайта MVC на Linux? Скорость, надежность, безопасность и т.д.

7) Можете ли вы дать мне оценку того, сколько дискового пространства является моно + какой-либо iis + framework и т.д., что это займет? При сравнении ОС Linux с ОС Windows Windows занимает больше пространства TON; так что, используя эту моно-установку, вы также заработаете TON на диске? (Я понимаю, что сравнение размеров ОС не является хорошим примером.)

8) Есть ли недостатки, которые я, возможно, забыл, о которых вы можете думать? Например, есть ли какие-то странные проблемы с просмотром каталогов, конфигурацией файлов файлов, jquery/ajax и т.д.

9) Есть ли у вас какие-либо рекомендации, учебные пособия, блоги и т.д.? Есть ли сайт Stack Exchange, который имеет дело с этими типами проблем лучше, чем этот? (Я не мог найти его, кроме, возможно, Linux.

10) Хотя для меня это не является необходимостью, я хотел бы настроить его и сделать это только для того, чтобы иметь возможность в будущем, но я не буду тратить время на это, если он является полным отходы. У меня есть как Linux VPS, так и Windows VPS, которые я арендую прямо сейчас, поэтому, если бы я это сделал, это также позволило бы мне иметь только удаленный сервер Linux (возможно, с меньшим объемом жесткого диска и бараном), так что это потенциально спасло бы мне деньги. Поэтому мой последний вопрос: не могли бы вы порекомендовать это, если бы ваша ситуация была похожа на мою?

Пожалуйста, ответьте на любой из вопросов, которые вы можете, Спасибо заранее и жаль столько вопросов, Гарретт Фогерли

Ответы

Ответ 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.