2012-05-22 3 views
8

Я понимаю, что такое потоковая структура (Rails, Django, Symfony2, ...). И я понимаю, какова инфраструктура, управляемая событиями (Node.js, EventMachine, Twisted, ...) и почему это здорово для жизни, чата, скорости, ... Кроме того, они, похоже, не создают проблем для обычных случаев использования. Итак:Когда поточные рамки лучше, чем фреймворки, управляемые событиями? (т. е. когда рельсы лучше, чем node.js?)

  • Каковы недостатки фреймворков, управляемых событиями?
  • Когда я должен использовать Rails для Node.js?
  • Почему не все новые веб-серверы, написанные с помощью EventMachine, Twisted или Node.js?
  • Знаменитые каркасы, такие как Django или Rails, становятся управляемыми событиями или умирают?
+0

Ahhh, тогда в этом случае нам нужна очистка модераторов от устаревших комментариев. – jcolebrand

ответ

13

Так где же недостатки фреймворков, управляемых событиями?

  1. Дружественные. Потому что веб-программирование, управляемое событиями, настолько отличается, что это будет незадолго до того, как программисты будут им удобны. Когда вы работаете над крайним сроком, проще использовать то, что вы знаете, это работает.
  2. Поддержка библиотек. Узел имеет удивительное количество модулей, но имеет долгий путь, чтобы догнать Ruby и Python. Обновление: Node now has more published modules available than Python or Ruby.
  3. Развертывание. ИТ-персонал используется для резьбовых фреймворков. Чтобы воспользоваться преимуществами управляемых событиями фреймворков, вы хотите быть асинхронными сверху вниз. Прямо сейчас вы можете разрабатывать в Node.js, но сможете ли вы эффективно его развертывать или вам придется управлять своими собственными серверами?
  4. Необоснованные проблемы. Вещей, которые кажутся проблемами, но которые на самом деле не:
    • Событийного программирование плохо для ресурсоемких приложений: Причина в том, что расчет ресурсоемкий будет блокировать сервер. Это строго верно, но практически, оно преодолевается путем нереста другого процесса и обработки его как ввода/вывода, например, с помощью Node child_process.exec.
    • Программирование, управляемое событиями, предназначено только для приложений, которым необходим высокий уровень параллелизма.: Причина в том, что программирование на основе событий «сложнее», чем традиционное программирование веб-приложений, поэтому делать это не стоит, если у вас нет веских оснований. Я лично не думаю, что это программирование, управляемое событиями, не сложнее, но это очень разные. В какой-то момент критическая масса программистов будет знакома с подходом, основанным на событиях, и эта проблема исчезнет.
    • Программирование, управляемое событиями, является беспорядком вложенных обратных вызовов. Это может быть правдой, когда вы впервые узнаете об этом, но в конце концов вы узнаете, как структурировать свой код читаемым способом.
  5. Документация. Документация для Node и ее сторонних библиотек ужасна, обычно состоит из не более чем README.md. Исходя из мира Python, где мы привыкли к отличной документации, это большой недостаток.Это медленно улучшается (нам нужна дополнительная документация like this).

Когда я предпочитаю Rails для Node.js?

  • Когда вы или ваша команда просто предпочитают рубин над JavaScript.
  • Когда вы или ваша команда не знакомы с узлом, и вам нужно выполнить эту работу.
  • Когда вам нужно использовать функциональные возможности, которые находятся в Rails, которых у Node еще нет.
  • Когда вам нужно развернуть существующую инфраструктуру на основе Rails.
  • Если вам нужно убедить руководство в том, что вы должны использовать Node.js, но вы не хотите, чтобы это было осенью, если проект завершился неудачей.

Почему все новые веб-сервер не написаны с EventMachine, Twisted или Node.js?

См. Выше.

Будет ли знаменитый каркас как Django или Rails превращаться в событие или умереть?

Django and Rails будет длительное время. В этих рамках есть много приложений, и нет причин переписывать их. И есть большой пул талантов, который часто учитывается при разработке нового веб-приложения.

(Но см. this Quora answer от ведущего разработчика Django, одобряющего Узел).

+0

Как разработчик rails, я бы хотел добавить, что во многих случаях пакеты npm в настоящее время лучше, чем рубиновые драгоценные камни, с тенденцией к повышению. – Hisako

+4

Одна мысль о связке кворы: есть еще одна ключевая особенность узла, что является даже несправедливым преимуществом. «Один язык, чтобы править ими всеми». Когда вы знакомы с самими узлами node.js & js, вы можете: писать интерфейсные/клиент-приложения, серверный код, мобильные приложения (например, с помощью телефонных разговоров), настольные приложения (например, с узлом-webkit), запрос ваша база данных (язык запросов mongoDBs * - это javascript), и получайте удовольствие от webservices и JSON, так как это почти не вызывает проблем, когда вы используете JS сверху вниз. – Hisako

 Смежные вопросы

  • Нет связанных вопросов^_^