Mono, asp.net c # и MVC Как и учебники - PullRequest
16 голосов
/ 18 марта 2012

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

1) Вероятно ли получить больше ошибок и ошибок, чем просто придерживаться развертывания Windows?И если да, то насколько серьезными являются некоторые ошибки, были ли у вас проекты, в которых они вообще не работают?

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

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

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

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

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

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

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

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

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

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

1 Ответ

32 голосов
/ 19 марта 2012

Прежде всего, очень хорошие вопросы.

У меня нет опыта работы с Интернетом с использованием 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...