Релиз серверной JavaScript-платформы node.js 0.4

Материал из Викиновостей, свободного источника новостей

15 февраля 2011 года

Вышел второй стабильный релиз платформы node.js 0.4 (нечетные ветки - экспериментальные, а четные (0.2, 0.4) - стабильные), позволяющей создавать высокопроизводительные сетевые приложение на языке JavaScript. Для обеспечения обработки большого числа параллельных запросов node.js использует для запуска кода асинхронную модель, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. По своей сути node.js похож на фреймворки Ruby Event Machine и Python Twisted, но цикл обработки событий (event loop) в node.js скрыт от разработчика и напоминает обработку событий работающим в браузере web-приложением, при этом функции платформы не ограничены web и поддерживают создание обычных сетевых клиентских и серверных программ.

В качестве способов мультиплексирования соединений поддерживается epoll, kqueue, /dev/poll и select. Для обеспечения выполнения JavaScript-кода используется разработанный компанией Google движок V8. Для мультиплексирования соединений используется библиотека libev, для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe).

Для расширения функциональности приложений на базе node.js подготовлена большая коллекция модулей, в которой можно найти модули с реализацией HTTP/SMTP/XMPP/DNS/FTP/IMAP/POP3 серверов и клиентов, модули для интеграции с различными web-фреймворков, WebSocket и Ajax обработчики, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (например, OAuth), XML-парсеры.

При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдет к дальнейшему коду, а результат запроса будет обработан по мере поступления данных. Ни одна функция в node.js не должна напрямую выполнять операции ввода/вывода - для получения данных с диска, от другого процесса или из сети требуется установка callback-обработчика.

Из новшеств node.js 0.4 можно отметить:

  • Значительная переработка систем для организации шифрованных каналов связи (TLS/SSL), расширение функциональности и упрощение API. Вместо излишне завязанного на сокеты кода для связи с OpenSSL, теперь для каждого соединения создается два потока - дуплексный шифрованный поток (работает через TCP raw-сокет, используя метод Stream.prototype.pipe()) и дуплексный поток для данных, передаваемых открытым текстом;
  • Упрощенный API HTTP-клиента c поддержкой пула соединений;
  • Более легковесный код для выделения памяти под буферы (объект Buffer). Для ухода от проблем с медленным выделением памяти и трудностями с уборкой мусора, осуществлен уход от ObjectWrap к обычным javascript-объектам, что положительно сказалось на производительности;
  • С целью улучшения поддержки пакетных менеджеров добавлены некоторе изменения в код, связанный с загрузкой модулей. В частности, в NPM добавлена поддержка поиска пакетов в предопределенной директории node_modules/; улучшено распознавание относительных путей в модулях, загруженных при использовании символических ссылок; в require() добавлен простейший разбор параметров package.json, что позволило обеспечить прямую работу с директорией пакета;
  • Представлена начальная поддержка сборки для платформы Windows;
  • Произведено обновление JavaScript-движка V8 до версии 3.1.2, в которой интегрирована новая инфраструктура компиляции и добавлен GDB-плагин для Linux.
  • Добавлен новый встроенный клиент для отладчика V8;
  • Добавлен модуль "os", в котором предоставлен набор полезных функций для извлечения информации о системе, например, os.cpus(), os.freemem(), os.totalmem() и os.loadavg().

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Релиз серверной JavaScript-платформы node.js 0.4», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.