Я склонен к тому, чтобы «использовать то, что вы знаете» (даже если это более тяжелая архитектура).Из-за этого я не вижу, что это так просто, как «EventMachine vs NodeJS».Главным образом, разницу можно суммировать следующим образом:
- NodeJS - это фреймворк / язык, который был написан для обработки событийного программирования в JavaScript.Это его движущая сила.Это не запоздалая мысль или сторонний механизм.Он испечен прямо на язык.Вы создаете обратные вызовы / события, потому что именно так построен язык.Это не сторонний плагин, не изменяющий ваш рабочий процесс.
- EventMachine - это драгоценный камень в Ruby, который дает разработчикам доступ к некоторым достоинствам модели программирования, основанной на событиях.Он интенсивно используется и хорошо протестирован, но не запечен напрямую с языком.Оба привязаны к одному ЦП, но с программированием событий в ядре Nodes он все еще имеет преимущество.Ruby не был написан с учетом параллелизма.
Тем не менее, технические проблемы могут быть преодолены.Более важные (на мой взгляд) вопросы, которые должны определять ваше решение:
- Как будет выглядеть ваша производственная среда?У вас есть полный контроль над сервером?Можете ли вы принять его так, как хотите?Или это будет в общей системе для начала, а затем вам нужно углубиться в это?
- У всех разработчиков в вашей команде есть возможность очень быстро выучить новый язык?Как быстро они смогут понимать язык событий, такой как JavaScript, для среднего уровня?
- Вам нужна вся архитектура, которую предоставляет Rails (полная среда тестирования, строительные леса, модели, контроллеры и т. Д.)?Или это излишество?
Между этими двумя понятиями существует немало технических различий.Один - это язык, один - это основа.Действительно, какой тяжелый стек вы хотите запустить?Сколько обучения придется делать вашим разработчикам?Хотите ли вы полный стек, он дает вам много тонкостей, которые вы не можете использовать, или вы хотите установить «голые кости», которые работают очень быстро и одновременно, даже если вам, возможно, придется написать дополнительный код и узнатьновый язык?
Хотя Rails не так тяжел, как некоторые архитектуры веб-приложений, вам все равно потребуется больше мощности процессора, чем для обработки аналогичной пропускной способности в NodeJS.Принимая код качества для обеих систем.Плохой код, написанный на любом стеке, будет препятствовать тому, чтобы стек сиял.Это действительно сводится к ... Вы действительно хотите изучить совершенно новый способ ведения дел или использовать свое текущее понимание Ruby, чтобы быстро начать работу?
Я знаю, что это не совсем определенный ответ,но я надеюсь, что это поможет вам принять решение!