Это старый вопрос, так что я, возможно, будет отвечать больше для других, чем для оригинального плаката:
Хостинг
Если вы пишете в Mono, вы можете разместить на Windows, Mac или Linux (или Solaris, FreeBSD и другие менее надежно). Если вы собираетесь размещать на Windows, почему бы не просто запустить приложение Mono на реальном .NET?
Почему вас волнует, если он размещен на Mono, если вы не принимаете его самостоятельно? Вы можете, конечно, написать приложение на Mono, используя Windows, Linux или Mac, а затем разместить его на хосте Windows/.NET, если они самые дешевые и самые простые. Просто подумайте о .NET как о внедрении MS Mono.
Первоначально у меня возникла противоположная проблема. Я хотел разместить на Linux, хотя мой работодатель предоставил среду Windows dev. Я разработал .NET и размещался на Mono/Linux. Моно отлично работал для меня таким образом.
Мой нынешний работодатель Mac сумасшедший. Я только что развернул приложение ASP.NET MVC2 на наш сервер Mac вчера. Я написал все это на своем MacBook Pro, не касаясь Windows один раз.
Мой любимый хост для работы .NET/Mono на Linux - Linode. Самый дешевый план - $ 20/месяц, но я могу разместить столько приложений на одном сервере, сколько захочу.Производительность отличная, поэтому все, что будет хорошо работать на хосте за 5 долларов в месяц, будет работать отлично, как одно из четырех приложений на экземпляре Linode, что точно.
Совместимость с .NET
Я считаю, что лучше думать о Mono как самой платформы, а не в качестве решения для совместимости ваших приложений Microsoft. Mono поддерживает почти всю платформу .NET. Мне это нравится, потому что это отличная платформа, но мне все равно, что она совместима с MS в большинстве дней.
Не обижайтесь, но я совсем не понимаю, что вы подразумеваете: «Mono не поддерживает LINQ-to-SQL для моего удовлетворения, поэтому я рассматриваю Ruby-On-Rails». Mono поддерживает LINQ-to-SQL намного лучше, чем Ruby, я скажу вам об этом. Можно сказать, что вы придерживаетесь Windows только потому, что вам действительно нужен LINQ-to-SQL, хотя я полагаю. Что для вас важнее, «кросс-платформа» или «LINQ-to-SQL»?
Моно предоставляет вам множество возможностей для доступа к данным. Если вы хотите, чтобы ORM (Object Relational Mapper), например, Rails, вы могли бы использовать что-то вроде NHibernate, Subsonic или Castle ActiveRecord, например. С Mono 2.10 вы даже можете использовать WebMatrix Data. Разумеется, вы также можете использовать хороший «ole ADO.NET», который, во всяком случае, строится на всех этих материалах.
О, давайте не будем терять сайт из-за того, что Mono поддерживает LINQ-to-SQL. Я только когда-либо использовал его с SQLite, где он работал нормально. Я согласен с тем, что он потерял .NET. Вероятно, вы, вероятно, обеспокоены поддержкой Entity Framework. См. Мои комментарии выше.
На мой взгляд, вопрос в том, как доступ к данным Mono сравнивается с доступом к данным Rails. Мой ответ: Rails немного лучше интегрирован (проще), а Mono намного мощнее и гибко.
Сверхмощная обработка
Это где .NET и Mono действительно будет светить.
Вы правильно думаете, что скомпилированный байт-код будет намного быстрее, чем интерпретируемый код, и что статические языки, такие как C#, будут быстрее, чем динамические языки, такие как Ruby. Конечно, все зависит от реализации в конце.
Я также согласен с тем, что статический язык, такой как C#, обеспечивает масштабируемость другими способами. Это действительно вопрос личного мнения. Конечно, есть люди, которые считают, что создание и поддержание массового решения на динамическом языке возможно. Конечно, я не вижу, чтобы многие люди это делали. Существует причина, по которой .NET и Java являются корпоративными стандартами.
Нижняя линия
Если вы изучаете другой веб-фреймворк? Ну, я думаю, ты должен. Это хорошо для ума.
Является ли это другой веб-каркас превосходным выбором для Mono или .NET? Ну, это зависит от необходимости, конечно. Я думаю, что люди Rails, вероятно, откачивают сайты немного быстрее, чем толпа .NET в целом. Разрыв действительно закрылся с ASP.NET MVC2 +, хотя я бы гораздо, скорее поддерживал и масштабировал решение .NET, чем Rails. Кроме того, мне нравится C# просто отлично, поэтому я не считаю Ruby настолько внутренне удовлетворительным, что мне просто нужно его использовать. Это только я, конечно.
Кроме того, только я, но я нахожу Моно отличным кроссплатформенным веб-дизайном.Я выбираю его каждый день над другими решениями. Я также считаю, что Mono вписывается в большинство экосистемы .NET (особенно с открытым исходным кодом) просто отлично. Опять же, если вы действительно хотите использовать самые последние и самые большие вещи MS и надеетесь, что Mono позволит вам запускать это на Linux или Mac, иногда вы можете быть разочарованы.
Если Windows Presentation Foundation (WPF), Entity Framework или в меньшей степени LINQ-to-SQL являются наиболее важной частью вашей стратегии приложения, то Mono не для вас.
Если вы хотите платформу, которая дает вам все большие преимущества .NET и работает практически везде, где вам это нужно, то Mono довольно сложно обыграть.
Пришел сюда после долгого времени, чтобы принять этот ответ. Я взял дорогу Mono + ASP.NET, и это стало настоящим блаженством. Все, что вы упоминали о том, как Моно является мощным и гибким, и как это просто делает работу, было верно в соответствии с моим личным опытом за последние 6 месяцев. После того, как я немного поработал над технологиями .NET (и все еще будучи маленьким мальчиком, я должен признать), я успешно перешел из LINQ-TO-SQL в NHibernate (хотя и болезненно) и не изменил бы ничего. Хотя я по-прежнему не могу сравниться с RoR, я уверен, что мне не нужно будет меняться в ближайшее время. Может быть, когда-либо .. Спасибо! –