Kolyaj,
Если это будет целесообразно, то можно предоставить возможность асинхронного исполнения скриптов на nodeJS. Всегда хорошо когда есть выбор. |
Ну а смысл опять же, если все ваши библиотеки синхронные?
|
Kolyaj,
Как раз библиотеки (веб сервисы) у нас существуют отдельно от всех языков программирования. Потому что одна из целей которая ставилась перед архитектурой - не зависимость веб сервиса от какого то языка программирования (ЯП). В итоге вышло следующее, любой модуль (скрипт, приложение) создаваемый разработчиком в рамках платформы становится доступен из поддерживаемых ЯП, причем модуль можно будет исполнять как синхронно так и асинхронно. Мы делали для эксперимента асинхронность в java. У нас создавался отдельный поток на обработку веб сервиса и обработку callback функции. При этом можно обращаться к глобальным переменным определенным вне кода исполняемого потока. Поток отрабатывает параллельно при наличии двух и более процессоров. Вот как это было сделано в java uploader.Upload(appid, uid, file, new Callback() { @Override public void fire(Response response) { if (response.getResult() == Response.OK) {} } }); Или можно сделать синхронный вызов Response response = uploader.Upload(appid, uid, file); if (response.getResult() == Response.OK) {} |
Hivext Technologies,
не разговаривайте со мной :) Я не ваша целевая аудитория, поэтому только придираюсь. :) |
Да, я уже понял что нужно все переводить на другой язык...
|
Асинхронность в Node.js в итоге дает порождение все тех же потоков что и при синхронной обработке параллельных запросов в обычной реализации сервера. никакого волшебства.
|
Цитата:
|
Там совсем не "те же" потоки. Именно поэтому Node работает так быстро.
|
если можно детальней на счет потоков, оч. интересно
|
Цитата:
А вот в Node всё происходит немного по другому. Там для обработки множества запросов используется всего один тред и Event Loop. В Node есть пул событий, ждущих обработки. Это входящие соединения, ответы от серверов, прочитанные с диска фрагменты файлов и т.п. Обработчики этих событий выполняются по очереди одним потоком сервера (одним контекстом движка V8). При этом не тратится время на переключение туда-сюда между кучей тредов. Один из главных принципов Node — обработчики должны возвращать управление как можно скорее. Если обработчик события должен например прочитать файл, он не сидит и не ждёт пока с жёсткого диска приедут нужные ему байты (как делал бы тред в PHP). Он начинает чтение файла и оставляет обработчик, который будет иметь дело с данными - и сразу же возвращает управление в event loop. |
Часовой пояс GMT +3, время: 18:00. |