Это старый вопрос, поэтому я, возможно, отвечу больше на других, чем на исходный постер:
Хостинг
Если вы пишете на Mono, вы можете размещать его в Windows, Mac или Linux (или Solaris, FreeBSD и других, менее надежных). Если вы собираетесь размещать на Windows, почему бы просто не запустить ваше приложение Mono на реальном .NET?
Почему вас волнует, размещен ли он на Mono, если вы не размещаете его сами? Вы, безусловно, можете написать приложение на Mono, используя Windows, Linux или Mac, а затем разместить его на хосте Windows / .NET, если это самый дешевый и простой способ найти. Просто подумайте о .NET как о реализации Mono в MS.
Изначально у меня была противоположная проблема. Я хотел разместить на Linux, хотя мой работодатель предоставил среду разработки для Windows. Я разрабатывал в .NET и размещал на Mono / Linux. Таким образом, Mono отлично сработал для меня.
Мой нынешний работодатель помешан на 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 чертовски сложно превзойти.
person
Justin
schedule
03.03.2011