Смешивать проекты node.js и ASP.NET в одной веб-роли Azure?

Разместить несколько проектов ASP.NET в одной веб-роли Azure довольно просто (учебник), но можно ли использовать одну веб-роль для размещения проектов ASP.NET и node.js?


person Mikael Koskinen    schedule 22.10.2012    source источник


Ответы (1)


Да, это возможно, используя 2 разных решения:

  1. У вас может быть фоновая задача запуска, которая запускает node.exe с необходимыми параметрами. Для вашего приложения ASP.NET ничего не меняется, единственное, что вам нужно сделать, это включить файлы узлов в этот проект и ссылаться на этот каталог при запуске node.exe.

  2. Используйте iisnode. Это позволяет вам запускать код вашего узла через IIS HttpModule, который предоставляет некоторые дополнительные полезные функции (цитируя Томаша Янчука):

    • Process management. The iisnode module takes care of lifetime management of node.exe processes making it simple to improve overall reliability. You don’t have to implement infrastructure to start, stop, and monitor the processes.
    • Масштабируемость на многоядерных серверах. Поскольку node.exe — это однопоточный процесс, он масштабируется только до одного ядра ЦП. Модуль iisnode позволяет создавать несколько процессов node.exe для каждого приложения и распределяет нагрузку HTTP-трафика между ними, что позволяет полностью использовать ресурсы ЦП сервера, не требуя дополнительного кода инфраструктуры от разработчика приложения.
    • Автоматическое обновление. Модуль iisnode гарантирует, что при каждом обновлении приложения node.js (т. е. при изменении файла скрипта) процессы node.exe перезапускаются. Текущим запросам разрешено изящно завершать выполнение с использованием старой версии приложения, в то время как все новые запросы отправляются в новую версию приложения.
    • Доступ к журналам через HTTP. Модуль iisnode обеспечивает доступ к выходным данным процесса node.exe (например, сгенерированным вызовами console.log) через HTTP. Это средство играет ключевую роль в отладке приложений node.js, развернутых на удаленных серверах.
    • Наряду с другими типами контента. Модуль iisnode интегрируется с IIS таким образом, что один веб-сайт может содержать различные типы контента. Например, один сайт может содержать приложение node.js, статические файлы HTML и JavaScript, приложения PHP и приложения ASP.NET. Это позволяет выбирать лучшие инструменты для текущей работы, а также осуществлять постепенную миграцию существующих приложений.
    • Минимальные изменения в коде приложения node.js. Модуль iisnode позволяет размещать существующие HTTP-приложения node.js с минимальными изменениями. Обычно все, что требуется, — это изменить указанный адрес HTTP-сервера на тот, который предоставляется модулем iisnode через переменную среды process.env.PORT.
    • Integrated management experience. The iisnode module is fully integrated with IIS configuration system and uses the same tools and mechanism as other IIS components for configuration and maintenance. In addition to benefits specific to the iisnode module, hosting node.js applications in IIS allows the developer to benefit from a range of IIS features, among them:
      • port sharing (hosting multiple HTTP applications over port 80)
      • безопасность (HTTPS, аутентификация и авторизация)
      • перезапись URL
      • компрессия
      • кэширование
      • протоколирование
person Sandrino Di Mattia    schedule 23.10.2012
comment
Спасибо за ответ! У вас случайно нет примера для опции IISNode? Мне удалось заставить все работать на эмуляторе Azure, но при развертывании служба не запускается. - person Mikael Koskinen; 24.10.2012
comment
@MikaelKoskinen, как вы интегрировали IISNode с Azure? Я искал информацию о том, как сделать именно это. - person Seth; 11.03.2013