The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

node.js - evented I/O for V8 JavaScript

Дата
18 Feb 2011
Заголовокnode.js - evented I/O for V8 JavaScript
ПояснениеСерверная платформа, позволяющая создавать высокопроизводительные сетевые приложение на языке 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. Для мультиплексирования соединений используется библиотека libevent, для создания пула потоков (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-обработчика.

Другие серверные JavaScript системы:

  • Jaxer - позволяет выносить некоторые части web-приложения на сторону сервера;
  • EJScript - web-фреймворк, использующий парадигму Model View Controller (MVC), принцип создания приложений в котором напоминает Ruby on Rails;
  • RingoJS - еще один MVC-фремворк, написанный на Java и использующий JavaScript-движок Mozilla Rhino;
  • AppengineJS - проект по обеспечению возможности выполнения JavaScript кода в окружении Google App Engine.
Home URLhttp://nodejs.org/
РазделJavaScript-библиотеки
Ключи

 Добавить ссылку
 
 Поиск ссылки (regex):
 

Последние заметки
<< Предыдущие 15 записей
- 26.02.2018 Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android
- 25.02.2018 Решение проблемы с картами Intel после устранения уязвимости в WPA2 в wpa_supplicant
- 19.02.2018 Использование ALSA в Firefox и приложениях, поддерживающих только PulseAudio
- 02.02.2018 Решение проблемы при отказе работы Skype за шлюзом с изменённым TCP MSL
- 15.01.2018 Использование USB-брелоков Yubikey для ключей GPG и SSH
- 02.01.2018 Создания WiFi-ретрансляторов с поддержкой построения Mesh-сети
- 27.12.2017 Как увеличить охват квартиры точкой доступа при помощи алюминиевой фольги
- 12.12.2017 Обход ограничения доступа к материалам сайтов для платных подписчиков
- 02.12.2017 Сборка ChromiumOS из исходных текстов для запуска в QEMU
- 29.11.2017 Возвращение к жизни Skype 4.3 для Linux
- 10.11.2017 Сборка системы виртуализации crosvm из Chrome OS в обычном дистрибутиве Linux
- 24.10.2017 Еscape-последовательности в сеансе OpenSSH
- 10.09.2017 Использование CAA записей в DNS для защиты от генерации фиктивных HTTPS-сертификатов
- 08.09.2017 Настройка ротации логов MongoDB
- 26.07.2017 Быстрый посмотр конфигурации GEOM во FreeBSD
Следующие 15 записей >>




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру