So installieren Sie Node.js-Anwendungen erfolgreich auf IIS

Node.js ist eine der am schnellsten wachsenden und am meisten unterstützten Technologien zum Erstellen von Webanwendungen ….

Dies macht es wiederum zu einer guten Ergänzung für die Bereitstellung für eine IIS-Installation. Die genaue Art und Weise, wie Node.js Anwendungen und Internetinformationsdienste zusammenarbeiten – und für sich allein – kann diese Installation jedoch etwas schwierig machen.
Zuerst, Node.js ist eigentlich kein Webserver. Es ist eine eigenständige Engine zum Ausführen von JavaScript, die mit erstellt wurde Googles V8, die ein asynchrones, ereignisgesteuertes Programmiermodell verwendet. Das heißt, viele Node.js Anwendungen Funktion als Web-Stack.
Aufgrund der Risiken und der damit verbundenen Arbeitsbelastung kommunizieren nur wenige solcher Anwendungen direkt mit dem Internet. Stattdessen wird jeglicher Datenverkehr zum oder vom gesamten Web über einen Proxy geleitet – beispielsweise Nginx oder Microsofts eigenen IIS.
Für diejenigen mit IIS-Programmiererfahrung, Programmierer Scott Hanselman hat eine nützliche Analogie zu beschreiben, wie Node.js arbeitet in Verbindung mit IIS. Er vergleicht es mit “an IHttpHandler geschrieben in JavaScript, “mit dem Tausende von Anfragen pro Sekunde effizient verarbeitet werden können. Dies ist natürlich der Fall, wenn Sie wissen, was Sie mit Ihrem Code tun – aber das ist für einen anderen Tag.
Wenn Sie Node.js nur eigenständig für das ausführen möchten der Entwicklung zuliebe, das ist nicht schwer: Starten Sie die betreffende App und richten Sie einen Webbrowser darauf. Starten von a Einsatz von einem Node.js unter IIS ist eine andere Geschichte.
Zum Glück Microsoft, das Node.js jetzt ziemlich ernst nimmt vor allem auf Azureund einige ehrgeizige Dritte haben Lösungen gefunden, um Node.js Apps elegant in IIS zu hosten. Das grundlegendste und nützlichste ist iisnode, ein Open-Source-Projekt, das die überwiegende Mehrheit der Schwerarbeit aus einer solchen Integration herausholt.
Der Hauptvorteil ist, dass iisnode ein natives IIS-Modul ist, kein Shim. Es werden auch viele Arten der Integration zwischen einem Node.js-Projekt und IIS behandelt, einschließlich der folgenden:

  • Das IIS-Konfigurationsmanagement wird verwendet. Node.js Projekte werden wie jede andere IIS-Site verwaltet, sodass Sie kein separates Verwaltungstool verwenden müssen. Alles kann über IIS Manager abgewickelt werden.
  • Prozesse und Prozessrecycling werden automatisch abgewickelt. Ein häufiges Problem mit Node.js tritt auf, wenn Sie Dateien für ein Node.js-Projekt aktualisieren. Sie müssen den Node.js-Prozess von Hand neu starten, damit die Änderungen wirksam werden. Python-Apps unter IIS leiden beispielsweise häufig unter demselben Problem.
  • Es bietet Multi-Core-Skalierung. Node.js läuft mit einem Thread und daher auf einem einzelnen CPU-Kern. Iisnode kann aus mehreren Node.js-Prozessen einen Webgarten erstellen, sodass eingehender Datenverkehr möglich ist lastausgeglichen über jeden von ihnen. Spawnen Sie so viele Prozesse, wie Sie über Kerne verfügen, und Sie können so viele eingehende Anforderungen gleichzeitig erfüllen. Beachten Sie, dass dies die Thread-Sicherheit Ihres Codes nicht berücksichtigt – das ist Ihre Aufgabe.
  • Es unterstützt das Debuggen über das Knoteninspektor Werkzeug. Das Ausführen einer App in einem beliebigen Stapel ist nur dann sinnvoll, wenn Sie über robuste Debugging-Tools verfügen. iisnode enthält das Node-Inspector-Tool für detaillierte Debugging-Arbeiten – Haltepunkte, Objektinspektion und vieles mehr.

Probleme beim Hosten von Node.js in IIS

Eine häufige Beschwerde über das Hosten von Node.js unter IIS – eine, die sich auf viele andere Sprachlaufzeiten einschließlich .NET erstreckt – ist, dass die erste Anforderung an Node.js-Apps lange dauert, um eine Antwort zurückzugeben. Wenn eine solche Anforderung zum ersten Mal eingeht, muss die Node.js-Instanz “hochgefahren” werden. Dies kann manchmal sehr viel Zeit in Anspruch nehmen, wenn Sie über besonders komplexe Node.js-Anwendungen verfügen. Der Schöpfer von iisnode, Tomasz Janczuk, hat einige Anleitung wie man mit diesem Problem umgeht. Fans cleverer Lösungen werden dies zu schätzen wissen: Beim Start wird eine gefälschte Anfrage generiert, die vollständig über die Konfigurationsdatei von IIS für die Site erfolgt.
Eine andere Möglichkeit, die Leistung oft drastisch zu beschleunigen, besteht darin, den eigenen HTTP-Server von Node.js durch Windows und HTTP.SYS von IIS zu ersetzen, wie Janczuk erklärt. Dies bedeutet, dass Sie keine zusätzliche Routing-Ebene über IIS hinzufügen müssen, obwohl dies auf Kosten der fehlenden Verwaltungsfunktionen von IIS geht. Daher sollte dies als fortgeschrittene Übung betrachtet werden – die Art der Leistungsoptimierung, die später im Entwicklungszyklus und nicht früher erfolgen sollte.
Janczuk hat auch erstellt Edge.js, eine Bibliothek, mit der Node.js-Anwendungen innerhalb desselben Prozesses mit.NET kommunizieren können. Wenn Sie bereits über .NET-Bibliotheken verfügen, die Sie für andere Projekte erstellt haben, und Ihr neues Node.js-Projekt mit ihnen kommunizieren möchten, ist dies ein möglicher Weg. C #, F #, Python, T-SQL und PowerShell können über Edge.js aufgerufen werden.
Wenn Sie ein Node.js-Projekt von Grund auf neu erstellen und darüber nachdenken, es in der Cloud bereitzustellen, können Sie dies mithilfe der Framework-Tools von Microsoft verwenden WebMatrix, Microsofts kostenloses Tool für das Projektmanagement in der Webentwicklung. Es unterstützt Node.j.s als erstklassige Komponente und Sie können sie bei jedem Hosting-Anbieter bereitstellen, der sie unterstützt, einschließlich Windows Azure.
Über den Autor:
Serdar Yegulalp schreibt seit mehr als 15 Jahren für eine Vielzahl von Publikationen über Computer und Informationstechnologie, darunter Informationswoche und Windows Magazine. Schauen Sie sich seinen Blog unter an GenjiPress.com.

Similar Posts

Leave a Reply