моно или RoR для нового приложения, работающего на Linux? - PullRequest
6 голосов
/ 05 сентября 2010

У меня мало опыта с самим рубином. Я собираюсь нанять кого-нибудь, чтобы написать веб-приложение, и я хотел, чтобы оно было написано в RoR, но я рекомендовал моно. Я думаю, потому что им нравится моно и потому что они думают, что RoR медленный.

Все приложение было бы своего рода инструментом мета-управления в социальных сетях. Будет часть, основанная на веб-интерфейсе, а затем бэк-энд, делающий «реальные вещи».

У меня нет опыта работы с моно, и я недостаточно опытен, чтобы с комфортом сказать, что RoR - лучший выбор.

Я понял, что если RoR настроен правильно, это может быть довольно быстро. Я читал, что у RoR есть некоторые проблемы с масштабируемостью. Я начну с небольшого приложения, и если оно будет успешным, мне нужно его увеличить.

Что бы вы порекомендовали?

в свете

  • производительности
  • масштабируемость
  • простота тестирования
  • простота в обслуживании, разработка кода / проекта

(мне нравится ruby, но я сам не собираюсь быть разработчиком. Я предпочитаю выбирать вариант «лучше», если есть ответ на этот вопрос)

Пожалуйста, не стесняйтесь предложить что-нибудь еще ...

Ответы [ 6 ]

11 голосов
/ 05 сентября 2010

Если вы не собираетесь писать это сами, возможно, вы захотите пойти с тем, что человеку, который будет писать, это наиболее удобно.

Полное раскрытие: я разработал несколько сайтов, используя Mono, и мне это нравится. Я использовал Ruby-on-Rails, но не для чего-то такого большого, как то, что я сделал в Mono. Имейте это в виду.

Быстрый ответ. В более широком смысле Ruby-on-Rails и ASP.NET MVC имеют больше общего, чем нет. Мой выбор - ASP.NET MVC на Mono, но я сомневаюсь, что вы пожалеете, выбрав любой из них.

Архитектура: Если вам нужен один из способов сделать это из коробки, выберите Ruby-on-Rails. Если вы хотите выбрать из ряда вариантов то, что вы считаете лучшими из лучших, выберите .NET (Mono).

Ruby-on-Rails - это скорее решение «под ключ» в том смысле, что оно предоставляет стандартный способ сделать практически все, что вам нужно, из коробки. .NET (Mono) предлагает гораздо больше возможностей (на мой взгляд, скажем так), но есть из чего выбирать, и вам придется выбирать стек технологий самостоятельно. Например, у RoR есть стандартный способ доступа к базам данных, в то время как .NET Mono позволяет / заставляет вас выбирать из дюжины различных способов сделать это.

Mono и .NET обычно имеют немного лучшее разделение проблем, поэтому пуристам в вас это может понравиться. Если нет, то вы на самом деле найдете засученные рукава и настроите Руби по своему вкусу.

Производительность и масштабируемость: Это должно явно относиться к .NET и Mono. На самом деле, я считаю, что самый быстрый способ запустить Ruby-on-Rails - это использовать IronRuby для запуска на .NET. StackOverflow написан на ASP.NET MVC и, учитывая объем трафика, он, очевидно, работает отлично. Доказательство в пудинге. Тем не менее, узкое место в производительности, вероятно, не будет вашим выбором фреймворка.

Тестирование: Старый стиль ASP.NET (теперь называется WebForms) считается довольно сложным для тестирования. Более новый ASP.NET MVC был спроектирован так, чтобы его было легко тестировать, и он похож на RoR. Одним из основных факторов является то, что в Mono вы, вероятно, будете использовать статически типизированный язык (например, C #), тогда как Ruby, конечно, является динамически типизированным языком. Вы должны написать больше тестов на динамическом языке (потому что компилятор / интерпретатор не будет обнаруживать проблемы с типами), но также может быть проще писать тесты, если вы не боретесь с компилятором. Я думаю, что это вопрос вкуса и стиля (мне нравится статичность), но это является основным фактором при ответе на этот вопрос.

Конечно, поскольку .NET / Mono является многоязычной платформой, вы всегда можете написать свои тесты ASP.NET MVC на динамическом языке. Вы даже можете сделать это в Ruby (IronRuby). Возможно, это будет лучшим из обоих миров (статическая проверка вашего реального кода и гибкий динамизм в ваших тестах). Я решил сделать это сам, используя IronPython для тестов.

Поддержка и развитие: Это сложный вопрос. Это зависит от того, что вы пишете, какие сторонние библиотеки вам могут понадобиться и какие инструменты вы собираетесь использовать. Я бы сказал, что RoR, вероятно, является более продвинутой средой MVC. Мои собственные мысли о том, что Ruby-on-Rails, вероятно, легче написать, но немного сложнее поддерживать.

Сообщество: Мне нравится сообщество Ruby больше, чем .NET, но я думаю, что мне больше всего нравится Mono. Это немного сбивает с толку. Основные ребята из Mono (вроде Майкла Хатчинсона, который ответил здесь) просто потрясающие. Мне очень нравится MonoDevelop как инструмент (IDE). Это становится все лучше и лучше. Майкл, спасибо за поддержку Git, если ты имеешь к этому какое-то отношение. : -)

Инструменты: Если вы пишете для Mono, вы можете использовать весь набор инструментов .NET (VisualStudio, ReSharper, Reflector и т. Д.), Так что это довольно сложно.Это предполагает, что вы разрабатываете на Windows, конечно.В Linux или Mac для Mono предпочтительным инструментом будет MonoDevelop.Он поддерживает управление версиями, программный отладчик и тесты NUnit прямо в IDE и полностью кросс-платформенный.

Кажется, многие пользователи Ruby просто используют простой текстовый редактор.Это может быть просто потому, что в среде IDE не так много возможностей предложить динамический язык, как в случае статического.Вот ТАК вопрос о том, что людям нравится в Ruby:

Какую Ruby IDE вы предпочитаете?

РЕДАКТИРОВАТЬ: Просто, чтобы запутать ... есть ещеMVC Framework для .NET / Mono, который больше похож на Ruby-on-Rails; MonoRail даже имеет реализацию ActiveRecord.MonoRail фактически существует дольше, чем ASP.NET MVC, но я бы остановился на ASP.NET MVC в наши дни, потому что именно в этом и заключается будущее.Кстати, ASP.NET MVC является открытым исходным кодом и поставляется с Mono из коробки (фактический код Microsoft).

6 голосов
/ 05 сентября 2010

Я могу говорить больше с Rails, чем с Mono.В наши дни RoR достаточно масштабируем, поскольку доступны все услуги облачного хостинга.Веб-приложения запрашивают данные и отображают веб-страницы, используя эти данные, что на самом деле не так уж и сложно.Большинство проблем с производительностью связано с проблемами проектирования баз данных и схем, а не с веб-структурой.Как правило, время отклика базы данных затмевает другие части обработки сервера.RoR также очень легко проверить.Тестирование является более естественной частью разработки, чем на других языках, которые я использую.Когда я начал программировать RoR, я привык к гораздо более структурированному миру Java, и более динамичные Rails покорили меня для веб-разработки.

5 голосов
/ 05 сентября 2010

Во-первых, я работаю над MonoDevelop, кроссплатформенной IDE для Mono (включая ASP.NET и ASP.NET MVC), поэтому не стесняйтесь считать мой ответ предвзятым, но, надеюсь, он будет полезен в любом случае.

Производительность : достойный JIT-компилятор (Mono) должен быть намного быстрее интерпретатора (Ruby). Но это также зависит от умения программиста - хорошо написанный Ruby может быть быстрее, чем действительно плохо написанный C #. Библиотеки, базы данных и механизмы кэширования, которые вы используете, также будут иметь большое значение, но они не являются фундаментальными для языков / фреймворков.

Масштабируемость : AFAIK, нет волшебной палочки для масштабируемости веб-приложений, и хотя у меня нет практического опыта в этой области, вот некоторая информация, которую я подобрал. Это действительно зависит от использования вашей базы данных, от того, как хранится ваше состояние сеанса и как реализовано кэширование. На самом деле это не принципиально ни для одной из сред: как только вы начнете масштабировать на несколько машин, у вас, вероятно, будет много машин / процессов для серверов баз данных, серверов кэширования, очередей сообщений, внешних интерфейсов, серверов для статического содержимого и т. Д. Скорее всего, только внешние интерфейсы будет ASP.NET или ROR, и если они не сохраняют состояние, вы можете просто их клонировать и решить проблемы с масштабируемостью на бэкэнде.

Тестирование : я не могу говорить за Ruby, но ASP.NET MVC (но не ванильный ASP.NET) был разработан для удобства тестирования с использованием инструментов тестирования .NET, таких как NUnit (собственный модуль Mono) тесты используют NUnit).

Техническое обслуживание и разработка : Опять же, я не могу говорить за Ruby, но вполне понятно, что его будет легче разрабатывать (по крайней мере, на начальном этапе) на языке и в среде, которую разработчик уже есть опыт работы с Кроме того, в .NET есть несколько удивительных инструментов разработки для Windows - Visual Studio, ReSharper и т. Д. - и есть огромное количество опытных разработчиков на C # и ASP.NET, которых вы можете нанять, хотя немногие из них знают Linux / Mono.

Кроме того, StackOverflow использует ASP.NET MVC:)

3 голосов
/ 06 сентября 2010

Чтобы добавить немного легкомыслия ...

Как насчет DOS на Dope: последняя веб-платформа MVC, которая вам когда-либо понадобится ?

3 голосов
/ 05 сентября 2010

Есть, конечно, головокружительный набор вариантов , но есть и другая хорошая альтернатива: Django .

Это в основном Ruby-on-Rails для Python, поэтому применимо большинство сравнений RoR и ASP.NET MVC. В зависимости от того, какой тип сайта вы создаете, действительно интересной особенностью Django является автоматический интерфейс администратора.

2 голосов
/ 06 сентября 2010

Если вам нужно быстро начать работу, я бы выбрал RoR.С течением времени масштабирование рельсов становится проще, и у вас есть большой выбор сред выполнения Ruby на выбор: MRI 1.8, 1.9, REE 1.8, JRuby (работает на java VM), Rubinius., но я все еще думаю, что ему нужно пройти еще до того, как он предложит ту же скорость разработки, что и RoR.

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