Это старый вопрос, поэтому я могу отвечать больше за других, чем за оригинальный постер:
Хостинг
Если вы пишете в Mono, вы можете разместить на Windows, Mac или Linux (или Solaris, FreeBSD и другие менее надежно). Если вы собираетесь разместить на Windows, почему бы просто не запустить приложение Mono в реальном .NET?
Почему вас волнует, размещено ли оно на Mono, если вы сами его не используете? Вы, безусловно, можете написать приложение на Mono с использованием Windows, Linux или Mac, а затем разместить его на хосте Windows / .NET, если это самое дешевое и простое решение. Просто представьте, что .NET - это реализация Mono для MS.
У меня изначально была противоположная проблема. Я хотел разместить на Linux, хотя мой работодатель предоставил среду разработки для Windows. Я разработал в .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»?
Mono дает вам много вариантов доступа к данным. Если вам нужен ORM (Object Relational Mapper), такой как Rails, то вы можете выбрать что-то вроде NHibernate, Subsonic или Castle ActiveRecord, например. С Mono 2.10 вы даже можете использовать данные WebMatrix. Конечно, вы также можете использовать хороший 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 - отличная платформа для кросс-платформенной веб-разработки. Я выбираю это каждый день перед другими решениями. Я также считаю, что Mono прекрасно вписывается в большинство экосистем .NET (особенно в мир с открытым исходным кодом). Опять же, если вы действительно хотите использовать самые последние и лучшие средства MS и надеетесь, что Mono позволит вам иногда запускать это на Linux или Mac, то вы можете быть разочарованы.
Если Windows Presentation Foundation (WPF), Entity Framework или, в меньшей степени, LINQ-to-SQL являются наиболее важной частью стратегии вашего приложения, то Mono не для вас.
Если вам нужна платформа, которая дает вам все преимущества .NET и работает практически везде, где вам нужно, то Mono чертовски сложно победить.