изучаете другую платформу, независимую от веб-фреймворка или полагаетесь на asp.net в моно в ближайшем будущем?

Я как-то знаком с ASP.NET MVC и .NET framework в целом (использую на работе).
Я подумывал о создании личного проекта (веб-сайта). Я, однако, не хочу быть привязанным к конкретной платформе (это меня ОЧЕНЬ беспокоит).
Это привело меня к изучению Mono. Тем не менее, что касается того, что я видел, Mono отстает от Microsoft .NET в некоторых аспектах, которые имеют решающее значение для меня (или которые я действительно хотел бы иметь). Вот некоторые из них:

  • LINQ to SQL. Команда Mono только что (Mono 2.6) выпустила поддержку LINQ с помощью проекта DBLinq. Проблема в том, что основной тестовой платформой DBLinq является MS SQL SERVER и SQLite. Мне кажется, что PostgreSQL и MySQL немного заброшены. Кроме того, только что был реализован LINQ to SQL, поэтому я думаю, когда он станет зрелым.
  • Хостинг Mono на Linux. Их очень мало.

Кроме того, я хочу быть готовым справиться с тяжелой обработкой на сервере (это основная проблема), и опыт Twitter заставляет меня уходить от Ruby on Rails, но если вы можете доказать, что шкала RoR невелика (пожалуйста, покажите тесты / факты, а не мнения) Я бы хотел попробовать.

  • Должен ли я потратить время на изучение другой веб-инфраструктуры или полагаться на достижения Mono и варианты хостинга в ближайшем будущем (1-2 года) на платформах, отличных от Windows / SQL Server.
  • Что касается масштабируемости, я склонен думать, что C # имеет неотъемлемый аспект масштабируемости (строго типизированный и ByteCode вместо синтаксического анализа / интерпретации). Я ошибаюсь, думая так?
  • Есть ли способы работать с другими фреймворками таким образом, чтобы код не размещался на сервере (я принимаю виртуальные машины python / ruby ​​/ something и другие)

person Marcelo Zabani    schedule 28.02.2010    source источник


Ответы (1)


Это старый вопрос, поэтому я, возможно, отвечу больше на других, чем на исходный постер:

Хостинг

Если вы пишете на 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
comment
Вернулся сюда спустя долгое время, чтобы принять этот ответ. Я пошел по пути Mono + ASP.NET, и это было настоящим блаженством. Все, что вы упомянули о том, насколько Mono мощный и гибкий, и как он просто выполняет свою работу, было правдой, судя по моему личному опыту за последние 6 месяцев. Немного овладев технологиями .NET (и я должен признать, что все еще был маленьким мальчиком), я успешно (хотя и болезненно) переключился с LINQ-TO-SQL на NHibernate и ничего не изменил. Хотя я все еще не могу сравнивать с RoR, я уверен, что мне не нужно будет менять в ближайшее время. Может быть когда-нибудь .. Спасибо! - person Marcelo Zabani; 08.01.2012