Подтвердить что ты не робот

NodeJS против Play Framework для крупного проекта

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

  • Node.js
    • выразить
    • кофе script
    • coffeekup
    • мангуст /MongoDB или
    • presistencejs/MySQL


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

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

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

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

4b9b3361

Ответ 1

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

Node

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

Играть!

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

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

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

Ответ 2

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

  • Learn: начало работы, наращивание, общая кривая обучения.
  • Разработка: маршрутизация, шаблоны, i18n, формы, json, xml, доступ к хранилищу данных в реальном времени.
  • Тест: модульные тесты, функциональные тесты, интеграционные тесты, покрытие тестирования.
  • Безопасный: CSRF, XSS, ввод кода, заголовки, проверка подлинности, советы по безопасности.
  • Build: компиляция, запуск тестов, статический контент preprocess (sass/less/CoffeScript), пакет.
  • Развернуть: хостинг, мониторинг, настройка.
  • Отладка: пошаговый отладчик, профилировщики, протоколирование,
  • Масштаб: пропускная способность, латентность, concurrency.
  • Поддерживать: повторное использование кода, стабильность, зрелость, безопасность типов, IDE.
  • Поделиться: активность с открытым исходным кодом, списки рассылки, популярность, плагины, коммерческая поддержка, задания.

Ознакомьтесь с моим обсуждением Node.js vs Play Framework для детальной разбивки того, как эти две структуры сравниваются в этих 10 измерениях.