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

Я как-то знаком с 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. Очень немногие из них доступны.

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

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

1 Ответ

1 голос
/ 03 марта 2011

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

Хостинг

Если вы пишете в 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 чертовски сложно победить.

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