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 для использования. У кого-нибудь есть какой-либо опыт в этом отношении, и вы можете поделиться им с пониманием?
Ответы
Ответ 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 измерениях.