NodeJS vs Play Framework для большого проекта - PullRequest
55 голосов
/ 03 октября 2011

Я действительно разрываюсь между двумя различными стеками, с помощью которых можно создать большое приложение. С одной стороны есть такая опция:

  • Node.js
    • экспресс
    • сценарий кофе
    • coffeekup
    • мангуст / MongoDB или
    • presistencejs / MySQL


  • Play Framework с Scala
    • Anorm w / mysql
    • или mongodb

Мне нравится путь node.js, потому что я могу написать весь код на стороне сервера, представления и код на стороне клиента в coffeescript, который я уже знаю. Если я пойду по этой дороге, я все еще не уверен на 100%, какой путь выбрать из дБ. mongoose делает хранение данных быстрым и легким, но с отсутствием истинных отношений может быть сложнее работать, учитывая модель данных, которую я имею в виду (очень SQLish).

Путь к Play Framework также привлекателен, потому что я хорошо знаю среду, когда использую Java, но я мало что знаю о Scala, так что это приведет к снижению производительности, так как я буду изучать этот язык. Уровень доступа к базе данных Anorm привлекателен, потому что я могу написать SQL вручную, что мне больше нравится, и автоматически сопоставлять результаты с объектами, что экономит много усилий.

Я продолжаю склоняться к node.js, но я не продаю лучший доступный уровень доступа к БД. Кто-нибудь имеет опыт работы с этим и может поделиться своим пониманием?

Ответы [ 2 ]

46 голосов
/ 04 октября 2011

Выбранный вами стек должен зависеть от потребностей вашего приложения. Давайте посмотрим на Play против Node на их сильные стороны:

Node

  • Приложения в реальном времени (чат, каналы)
  • Архитектура, управляемая событиями
  • Может выполнять обязанности клиент-сервер (например, обслуживать файлы), но не подходит для этого
  • Управление базой данных, инструменты тестирования и т. Д., Доступные в виде дополнительных пакетов

Играть!

  • Клиент-серверные приложения (веб-сайт, сервисы)
  • Архитектура без общего доступа
  • Может выполнять обязанности в режиме реального времени (например, Websockets), но не подходит для этого
  • Управление базой данных (включая миграции!), Инструменты тестирования и т. Д., Встроенные в ядро ​​

Если ваше приложение больше соответствует традиционной веб-модели, возможно, Play - ваш лучший выбор. Если вам нужна немедленная обратная связь и динамический обмен сообщениями в режиме реального времени, лучше выбрать Node.

Для больших традиционных приложений серьезно подумайте о Play! Framework из-за встроенного модульного и функционального тестирования, а также миграции баз данных. Если они будут включены в процесс разработки, они пройдут долгий путь к конечному продукту, который работает, как ожидается, стабильно и без ошибок.

13 голосов
/ 29 сентября 2014

Существует 10 основных категорий, которые следует учитывать при сравнении веб-фреймворков:

  1. Обучение : начало работы, наращивание, общая кривая обучения.
  2. Разработка : маршрутизация, шаблоны, i18n, формы, json, xml, доступ к хранилищу данных, веб в реальном времени.
  3. Тест : модульные тесты, функциональные тесты, интеграционные тесты,тестовое покрытие.
  4. Безопасный : CSRF, XSS, внедрение кода, заголовки, аутентификация, рекомендации по безопасности.
  5. Сборка : компиляция, запуск тестов,предварительная обработка статического содержимого (sass / less / CoffeScript), пакет.
  6. Deploy : хостинг, мониторинг, настройка.
  7. Отладка : шаг за шагомотладчик, профилировщики, ведение журнала,
  8. Масштаб : пропускная способность, задержка, параллелизм.
  9. Поддержка : повторное использование кода, стабильность, зрелость, безопасность типов,IDE.
  10. Поделиться : деятельность с открытым исходным кодом, списки рассылки, популярность, плагины, коммерческая поддержка, jobs.

Ознакомьтесь с моим докладом Node.js против Play Framework , чтобы получить подробную информацию о том, как эти две структуры сравниваются между этими 10 измерениями.

...