Статьи

Помещение Ruby, Rails, C # и ASP.NET в контекст

Я заметил, что среди разработчиков .NET довольно много недоразумений относительно того, что такое Ruby или Rails, и как они сравниваются с тем, что они узнали и любят в .NET. Я знаю, что сам некоторое время не понимал. Следующие комментарии, взятые из моих двух предыдущих постов ( Переключение на Ruby из .NET и Почему разработчик .NET должен смотреть на Ruby или Ruby on Rails ) служат для иллюстрации моей точки зрения:

«Я посмотрел на Ruby, но нет, спасибо .NET остается для меня способом».

«… Есть ли демонстрации или образцы Ruby on Rails, которые можно сравнить с веб-приложениями, которые я могу создать с ASP.NET или Silverlight, и такими компонентами, как DevExpress для ASP.NET MVC? Есть ли что-то подобное в Ruby?

В то время как первый комментарий сравнивает Ruby с .NET, который представляет собой сравнение между языком и всей платформой разработки, второй комментарий смешивает html- приложения с многофункциональными клиентскими приложениями на Silverlight, вводит в уравнение визуальные элементы управления 3-й части и удивляет. доступны ли такие элементы управления в Ruby (язык …).

Там много путаницы, поэтому я надеюсь прояснить эти заблуждения в этом посте.

Что такое Руби?

Руби это язык. Также как C # это язык. Заимствование цитаты с сайта языка Ruby :

«Ruby — это динамический язык программирования с открытым исходным кодом, ориентированный на простоту и производительность. У него элегантный синтаксис, который легко читать и легко писать » .

Так как именно Ruby сравнивается с C #? Вы найдете объекты в Ruby, а также классы, методы, наследование и т. Д. Вы также найдете элементы функционального программирования; точно так же, как C # получил это со временем через анонимных делегатов и лямбд. Хотя C # всегда был статическим языком со строгой типизацией и в конечном итоге получил несколько динамических функций, Ruby является полностью динамическим языком.

Вы можете ожидать больше сообщений о том, как некоторые из этих функций сравниваются между Ruby и C #. Вы можете начать с просмотра публикации .NET в Ruby: классы здесь, на RubySource.

Кому принадлежит Руби?

Ruby — это язык с открытым исходным кодом, и, как таковой, он развивается в зависимости от потребностей сообщества, в то время как C # принадлежит Microsoft, которая решает, что же происходит с языком.

С учетом вышесказанного, однако, помимо реализации Microsoft C #, существует также кроссплатформенная версия с открытым исходным кодом, предоставляемая Mono .

Аналогично, существует реализация Ruby от его создателя, Юкихиро Мацумото или «Matz» , а также Rubinius , JRuby (реализация Java) и IronRuby (реализация .NET). Тот факт, что IronRuby существует, должен стать дополнительной причиной, по которой разработчики .NET должны изучить Ruby, добавив его в свою хитрость при создании приложений .NET.

Что такое Ruby on Rails?

Так что же такое Ruby on Rails? Язык? Рамки? Платформа? Компания, которая перевозит драгоценный камень ярко-красного цвета на поезде? Вот так:

  • Ruby on Rails (или Rails, или просто RoR) — это структура веб-приложения, которая следует шаблону архитектуры Model-View-Controller (MVC). Следовательно, он сравнивается с платформой ASP.NET MVC;
  • Как ASP.NET MVC построен поверх ASP.NET, так и Rails построен поверх Rack );
  • Точно так же, как есть другие фреймворки веб-приложений, построенные поверх ASP.NET (например, WebForms или FubuMVC , существуют другие фреймворки, основанные на Rack (такие как Sinatra );
  • Так же, как ASP.NET написан на C #, Rails написан на Ruby;
  • Хотя «большинство» веб-приложений, построенных на любом варианте ASP.NET, написаны на C #, все приложения, созданные на любом варианте Rack, написаны на Ruby.

Кто владеет Ruby on Rails?

Rails — это фреймворк с открытым исходным кодом, и, как и Ruby, его разработкой движет сообщество. Новые возможности добавляются в платформу на основе реальных потребностей их пользователей.

Какие виды приложений я могу построить с помощью Rails?

Поскольку люди задают такие вопросы, как «могу ли я создавать приложения, аналогичные Silverlight с Rails?» , Я полагаю, что здесь необходимы пояснения. Просто сказать « вы можете создавать веб-приложения » уже недостаточно. Это веб-приложение, потому что оно размещено в Интернете? Или потому что он работает в браузере ? Или потому что он основан на html ? Или потому, что он получает доступ к данным, которые поступают из Интернета ?

Типичное Rails-приложение имеет интерфейсную часть, основанную на html. Как таковой, он работает в браузере. Html-страницы обслуживаются контроллерами на веб-сервере. Эти контроллеры загружают модели, заполненные данными, которые поступают из какого-то места, к которому веб-сервер имеет доступ (возможно, к базе данных в том же окне, или к веб-службе где-то по всей планете). После запуска моделей контроллеры выбирают шаблон представления, который создает HTML, который должен быть отправлен в браузер.

В другом типичном приложении Rails может быть все, что только что упомянуто в предыдущем абзаце, кроме html-интерфейса. Таким образом, приложение предоставляет API (обычно RESTful), который другие приложения могут вызывать через Интернет. Для разработчика .NET это похоже на создание веб-служб ASP.NET или служб WCF. В этом случае другие приложения, использующие этот API, могут быть любого типа; например, приложение iPhone, приложение Silverlight или WPF, приложение ASP.NET и т. д.

Невозможно создать «клиентское» приложение с Rails, например, созданные с использованием WPF, Silverlight и т. Д. Однако вы можете смешивать и сочетать технологии. Например, текущий проект, над которым я работаю, в основном построен на Rails, но в нем также есть часть, написанная на Silverlight, которая потребляет и передает данные в RESTful API, созданный в Rails. Часть приложения Rails также использует API, созданный в Java сторонним поставщиком, и этот поставщик также использует мой API для отправки некоторых данных. Другая часть этого проекта будет включать приложения для iOS (iPad, iPhone…) и Android, и это приложение также будет использовать API, предоставленные приложением Rails.

Есть ли многоразовые компоненты?

Разработчики .NET используются для библиотек, которые предоставляют все виды специфических функций, таких как шифрование, создание изображений, создание отчетов и т. Д. Подобные вещи доступны в Ruby on Rails, и их часто называют «гемами». Их существует множество: множество библиотек, которые предоставляют вам множество функций, которые вы можете добавить в свои приложения (сам Ruby on Rails — это жемчужина!)

Недавно разработчики .NET также познакомились с NuGet , менеджером пакетов библиотек, который облегчает добавление в проекты внешних библиотек, внесение также их зависимостей, настройку параметров проекта, создание определенных генераторов кода и т. Д. Подобные вещи были вокруг в мире Ruby уже пару лет, и он называется RubyGems .

А как насчет «визуальных» компонентов?

Разработчики .NET любят сторонние визуальные элементы управления! Они существовали в изобилии для WinForms, WebForms, WPF и Silverlight. Гораздо меньше вариантов для ASP.NET MVC. Я не сталкивался с такими вещами для Rails. Однако, насколько я видел, разработчики Rails очень довольны простым использованием CSS и jQuery для создания потрясающих веб-сайтов (что разработчики .NET также используют в своих приложениях ASP.NET MVC).

Всегда есть разработчики, которые хотят получить «убраную сетку 3-й части, которая может показать миллиард строк в базе данных». Сказать по правде, я был таким. Уже нет. Если у меня возникает ситуация, когда мне нужно обрабатывать смешное количество данных в сетке на стороне клиента, это означает, что я делаю что-то не так. Подробнее об этом я расскажу в своем посте «Вы были удалены!» .

Rails кроссплатформенный?

Краткий ответ: да. Вот длинный ответ:

  • Любой компьютер может получить доступ к приложению Rails: Mac, ПК, интеллектуальное устройство …
  • Обычно серверы Linux размещают эти приложения, даже если они могут быть размещены в других операционных системах;
  • Эти приложения могут быть разработаны на любой платформе, хотя Mac и Linux на сегодняшний день являются наиболее популярными средами. Я занимался разработкой Rails для Windows в течение нескольких месяцев, и хотя это в какой-то степени сработало, некоторые вещи либо не работали так же хорошо, как на Mac, либо были слишком медленными (например, при запуске). автоматизированные тесты).

Подводя итоги

Ruby on Rails — это просто инфраструктура веб-приложений, похожая на ASP.NET MVC, за исключением того, что Rails существует уже долгое время. Я надеюсь, что этот пост помог прояснить, как некоторые кусочки Ruby on Rails связаны с тем, к чему привыкли разработчики .NET.