Каковы некоторые архитектурные причины для использования node.js помимо масштабируемости?

Наиболее распространенная тема, которую я прочитал о том, почему использовать node.js, связана с высокой масштабируемостью благодаря четкой, неблокирующей модели ввода / вывода. Я пытаюсь понять другие случаи использования не масштабируемости (и помимо использования в качестве общего серверного движка JavaScript).

  1. Есть ли в node.js другие варианты использования, если масштабируемость меня не касается?
  2. Если да к #1, что они?
  3. Подходит ли использование node.js для какого-либо конкретного типа архитектур приложений? Например, аналогично тому, как некоторые базы данных ключ / значение (но я ненавижу этот термин) полезны, кроме как по причинам масштабируемости.

6 ответов

Решение

Я думаю, что это сообщение в блоге подводит итог довольно хорошо: http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb

Вкратце (pro node.js):

  • скорость
  • Javascript (особенно если вы уже знаете это)
  • КПД

node.js действительно великолепен. Попробуйте!:)

Моя причина опробовать узел - тот факт, что невероятно легко пересылать данные JSON между сервером и клиентом для запросов ajax. Если вы используете что-то вроде MongoDB, которое также хранит данные в виде объекта JSON, вам никогда не придется беспокоиться о переводе или анализе ваших данных.

Если ваш сайт использует много Ajax, и вы отправляете свои данные как объекты JSON (а не XML или простой текст), то node.js сэкономит вам немало усилий.

Я могу придумать одну причину, но она не очень глубока. По сути, если вы разрабатываете RIA, весь ваш стек может быть javascript. Это может иметь какое-то значение.

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

Чтобы быть точным, я думаю, что общий серверный движок JavaScript в вашем вопросе будет V8, в то время как, по словам его создателя, Node был создан для "создания сценариев сетевых программ".

Основываясь на многих его комментариях, я не верю, что он рассматривает это так широко, как многие из нас, но признает, куда это может пойти. [Я не могу говорить за кого-то другого - это просто моя интерпретация, основанная на трудах и презентациях, которые я видел.]

Таким образом, он подходит к вещам с несколько более низкого уровня, делает HTTP первоклассным гражданином и просто оказывается действительно крутым, что, я думаю, делает его достаточным "вариантом использования" для большинства из нас.;)

Он имеет кривую обучения и не является самой стабильной платформой для быстрого развития. Я верю, что время покажет, где это наиболее полезно.

В настоящее время люди используют его для приложений "в реальном времени" из-за его легкой асинхронной природы, а также из-за общей веб-разработки, хотя IMO его приятное место остается с первоначально заявленной целью.

Что мне нравится в файле node.js, кроме неблокирующей модели ввода-вывода, масштабируемости и всех этих "первопричин":

  • Облегченный характер его каркаса. Основы просты в освоении.
  • Сообщество разработчиков создает на github множество полезных модулей и библиотек, расширяющих облегченное ядро ​​node.js и его возможности.
  • Это действительно легко и быстро создавать серверные системы и системы реального времени (например, на основе http или сокетов) без знания сложных библиотек.

Мне нравится использовать NodeJS для написания средств тестирования, потому что вы можете написать заглушку / сервер / клиент очень быстро. И вы можете управлять своим приложением с легкостью. Я легко могу написать скрипт стороннему фоновому серверу для тестирования производительности моего приложения. Я также использую это, чтобы управлять моим заявлением. Я могу выполнять сложные сценарии клиент-сервер, используя setTimout, чтобы вызывать запуск нескольких событий на основе любой логики и тестировать их в масштабе.

Другие вопросы по тегам