Node.NET: Выполнение Node.JS на Windows через .NET

Автор оригинала: Dion Almaer
  • Перевод
Node планирует со временем поддерживать все операционные системы, совместимые с POSIX (включая Windows c MinGW), но в настоящее время он тестируется только на Linux, MacOS X и Solaris.

На встрече пользователей Node.JS в Пало-Альто кто-то спрашивал о работе Node под Windows, но ответ оказался не оптимистичным, — Вы можете заставить их работать вместе, и это обязательно произойдёт. Но сегодня? Непросто. Хотя это и не кажется громадной проблемой.

Однако, если Вам всё же интересно запускать приложения Node под Windows, и эта идея ваc вдохновляет:
C:\> node.exe server.js

… тогда Вы можете быть благодарны за то, что Дэн Ньюкоум создал Node.net, который дает нам:
  • Ту же идеологию работы, что и у Node.JS (однопоточный событийный фасад, неблокируемый ввод/вывод на заднем плане);
  • Совместимость с Node.JS по предоставляемому API;
  • Написан полностью на JavaScript (JScript.NET);
  • Работает на движке .NET.

Похожие публикации

Реклама

Комментарии 34

    +2
    Jscript.NET немного смущает, это чудо уже давно не развивается.
      +1
      согласен, насколько я знаю, есть активно развивающаяся альтернатива IronJS, которая построена на DLR и обладает большой производительностью
        0
        В любом случае любой порт на .net радует)
          0
          Лучше всего обеспечить совместимость с обеими имплементациями…

          Отошлю запрос автору.
            0
            Да, DLR для таких случаев больше подходит.
          0
          Наверное, еще стоит сказать, что есть еще нереализованные моменты, например, неблокирующая запись. Полностью на английском о том, что сделано, и что еще нет, можно прочитать на оргинальном посте автора.
            +1
            А можно хотя-бы краткое описание, что собой являет Node.js? С их родного сайта это как-то не очень понятно, даже из секции About. В общем, чтобы быть в теме, будь в теме.
              +2
              Очень интересный проект — неблокирующий ввод/вывод, событийная машина, всё под Javascript с великолепной производительностью (лучше любого другого динамического языка).

              Из коробки держит WebSockets на стороне сервера.

              В общем, крайне интересное направление.
                0
                Спасибо… Теперь хоть немного понятно о чем идет речь :)
                  0
                  будем честными: производительность действительно великолепная, но утверждать, что она лучше любого другого динамического языка, я бы не взялся ;-)
                    0
                    Скажем так, всех известных. По крайней мере быстрее Ruby, Python, Perl, PHP.
                      0
                      А можно ссылки на тесты?
                      Я сейчас проводит тесты с обычным факториалом — node.js отстаёт от ruby 1.9.1
                        0
                        На большом кол-ве вычислений факториала добился многократного(на порядок) превосходства node.js
                    +1
                    Один из плюсов, Javascript вообще асинхронен по природе программирования под браузеры. Нет проблем перехода под EventMachine в Ruby, или под Twisted в Python.

                    Второй плюс — гомогенная среда. Везде один язык и один протокол…
                      0
                      Что вы имели в виду под «переходом под»?
                      Удобную интеграцию или миграцию с тех технологий на node.js?

                      Мы рассматриваем начать использовать в новом проекте node.js для некоторых целей(обработка потоков информации по событийной модели) — выбираем между node.js и rubyeventmachine.
                        0
                        eventmachine неплоха, хотя имеет свои баги (подробнее было в списке рассылки русского сообщества RoR, например, что EM не видит разницы между некоторыми ошибками, таймаутами и закрытием соединения).

                        Основная проблема с EM, — что непонятно заранее, какой сторонний код с ней совместим. Позже выявляется проблема одного ядра на EM.
                          0
                          А как насчёт памяти? Не течёт?
                          По нашему опыту все долгоиграющие демоны на ruby 1.9.1 со временем начинают занимать неоправданно много памяти.
                          Такое ощущение, что сборщик мусора чистит не все объекты без ссылок.
                            +1
                            Лично я работал с ruby 1.9.1 меньше полугода, кажется. Не смогу дать взвешенного мнения.

                            Могу сказать, что течёт даже на ruby 1.8.7 EE, учитывая, что разработчики не особо на этом делают упор.

                            Лечится мониторингом через bluepill/monit/runit.

                            Для тех сервисов, у которых критична остановка, — проще разрабатывать с упором в несколько независимых процессов, с балансированием нагрузки и heartbeat.
                              0
                              В runit тупо ставить лимит через chpst, и оно само рестартует от попытки выйти за ;)
                    0
                    Ох спасибо, осталось проверить совестимость на примерах.
                    Сам яваскрипт, уверен, одинаков (на уровне синтаксиса).
                      0
                      Хм… Сырой.
                      По крайней мере на строке sys.puts('Server running at 127.0.0.1:8000/'); оно дохнет.
                      А также дохнет просто так время от времени.
                      Придётся (для отладки под windows) держать andLinux.
                        0
                        В общем, кому интересно, придётся отказаться от setTimeout с параметром в виде функции, от sys.puts, и от writeHeader, а также надо обязательно указывать второй параметр в listen()
                        Итого рабочая программа выглядит так:
                        var sys = require('sys'), http = require('http');
                        http.createServer(function (req, res) {
                            res.write('Hello World\n');
                            res.end();
                        }).listen(8000,'localhost');


                        Просто создайте файлик и перетащитеего на node.exe
                          0
                          Напишите issue, или просто форкните и почините, если что.
                        0
                        Учитывая, что node.js это, по сути, кусок печени Google Chrome, подключенный к системе жизнебеспечения, то, теоретически, node.js под windows можно организовать как плагин для хрома под windows (а заодно и мак). Правда, есть подозрение, что script.compile там работать не будет (либо будет, но на кроссплатформенно), но базовые функции сервер + сокеты + интерфейсы к базам данных оно предоставлять сможет.
                          +1
                          Что за чушь? Что за бред? Зачем тут нужна эта дотнетовская гадость? Я лично компилировал Node.JS под windows, ну не с первого раза, но заработало же. И не надо весь дотнетовский фреймворк в память грузить.
                            +3
                            Выложите свой форк который бы компилился легко под Windows, думаю все будут только рады.
                              +1
                              Присоединяюсь к просьбе :)
                                0
                                Пока нарыл вот это, дальше надо копать…
                                www.noxa.org/blog/?p=59
                                (под cygwin)
                                  0
                                  Сегодня опубликовали форк порта на Cygwin.

                                  github.com/raff/node

                                  Не все тесты проходит, но базовый сервер уже работает.
                                  0
                                  Также нашёл www.noxa.org/blog/wp-content/uploads/2010/01/node-cygwin-1.7.zip
                                  бинарник node.exe под windows, просит cygwin
                                    0
                                    Боюсь, что «выложить форк» немного выше моих умений, я помню что какой-то патч из сети скачивал, и пару строк где-то в конфигах менял, каких именно, определяется по тому, что пишет make при компиляции.

                                    Использовал cygwin естественно :) Работает более-менее хорошо, хелловорлд в районе пары тысяч запросов в секунду обрабатывает.
                                    0
                                    Выложите, пожалуйста, exeшник! Молю!
                                      0
                                        0
                                        Спасибо, конечно, за отклик, только я уже разобрался.
                                        Более того, я и есть автор этого поста.

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое