Node.js für ASP.NET-Entwickler

Die Node.js-Architektur

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Node.js basiert auf der sogenannten ereignisgesteuerten Architektur, was jede Menge Ressourcen spart und deshalb viele gleichzeitig bestehende Netzwerkverbindungen erlaubt. Alle Input- und Output-Operationen werden asynchron entwickelt.

Transkript

Wie kann denn Node.js so hoch performant und skalierbar sein? Wie funktioniert Node.js genau? Das sehen wir in den nächsten Videos, und zwar werfen wir einmal einen Blick auf die Architektur von Node.js. Der wichtige Aspekt hinter Node.js ist erst mal: Node.js basiert auf eine ereignisgesteuerte Architektur, auch bekannt als "Event-driven Architecture". Und das schöne daran ist, dass das einiges an Ressourcen spart, und damit eben eine Vielzahl an gleichzeitigen Verbindungen möglich ist. Das ist jetzt natürlich sehr oberflächlich. Das bedeutet, wir müssen hier uns das Ganze doch einmal etwas genauer ansehen, und zwar mit der folgenden Grafik. Auf der linken Seite sehen wir, mit einen Blick von oben, die Architektur von Node.js, das heißt, die komplette Node.js-Instanz. Die komplette Node.js-Instanz besteht eben aus unterschiedlichen Komponenten. Ein Mal aus dem Node.js Core Library, die komplett in JavaScript entwickelt wurde, und das ist, zum Beispiel, wenn wir hier rechts die JavaScript-Datei "myFile.js" ansehen, der obere Punkt, das heißt, mittels "require", lade ich mir ein "fs", "FileStream"-Modul, in die Variable "fs", und das entspricht in C Sharp einem sogenannten "Using". Wir rufen mittels "Using" "FileStream" auf und bekommen dann die Instanz. Und wir können dann eben in JavaScript hier auf lokale Dateien, zum Beispiel, zugreifen. Das kann aber die V8-Engine von Haus aus nicht, das bedeutet, man braucht natürlich dazu eine native Implementierung, und die passiert hier ganz rechts unten bei Libuv. Die kümmert sich dann darum, mit der Außenwelt zu kommunizieren, und die Brücke, zwischen diesen ganzen Welten, das sind die sogenannten Node.js Bindings, die dann hier komplett in C++ entwickelt wurden. Und ja, irgendwo muss der JavaScript-Code dennoch ausgeführt werden können, und dazu haben wir dann die Google V8-Engine. Aber was ist jetzt eigentlich genau mit "Event"-basierter Architektur gemeint? Was steckt denn da dahinter? Das schauen wir uns jetzt folgendermaßen an, und zwar haben wir ja bereits beim Video gesehen, wie die "myFile"-JavaScript-Datei in Node.js ausgeführt werden kann und die füllen wir doch jetzt einfach aus. Der JavaScript-Code wird ja von oben nach unten gelesen. An erster Stelle wollen wir jetzt das Modul, also die Funktionalität vom "FileStream" laden, und das bedeutet, die Node.js Core Library gibt uns dazu die nötige Instanz. Anschließend wird die nächste Zeile aufgerufen, und das ist die "readFile"-Funktion. Der sagen wir: "Wir wollen bitte die "Hallo.txt"-Datei lesen, und zwar gebe mir bitte den Inhalt in dem "utf8"-Standard, und dann gebe mir eine sogenannte "Callback"-Funktion mit." Wir können uns das vorstellen. Und da in C Sharp haben wir, zum Beispiel, unsere "Events", und wenn eben die Datei bis zum Schluss eingelesen wurde, dann soll bitte diese Funktion aufgerufen werden. Und da bekommen wir dann automatisch den Inhalt der Textdatei, die dann auf dem Bildschirm ausgegeben werden soll. Das bedeutet, jetzt erst wird auf "readFile" der ganze Vorgang erst mal gestartet. Und zwar geht der ganze Weg jetzt über die Node.js Bindings, natürlich über die V8 Engine zu Libuv, und Libuv kommuniziert hier mit dem jeweiligen System, mit der jeweiligen Plattform. In unserem Fall wäre es, zum Beispiel, Windows. Und dann wird hier ein neuer "Thread" erzeugt zur System-API, der dann eben die Datei liest. Wichtig: Unsere Node.js-Instanz selbst ist nur ein "Thread". Und der läuft weiterhin nebenbei. Das heißt, wenn man jetzt dem System gesagt hat: "Hier, lese mal bitte die Datei ein", wird in der Zwischenzeit unsere JavaScript-Datei weiterbehandelt. Dann haben wir ganz am Ende ein "console.log", und rechts unten sehen wir dann, was als Ausgabe erscheint. Das heißt, wir bekommen erst dann die Meldung "after calling readFile". Das ist unser asynchroner Vorgang. Das System ist natürlich irgendwann fertig mit dem Einlesen der Daten. Die asynchrone Antwort kommt also vom System zurück. Libuv kriegt von dem Geschehen mit und meldet das wieder direkt zurück über die Node.js Core Library, und wir landen direkt wieder in unserer File-JavaScript-Datei. Unsere "Callback"-Funktion wird aufrufen und in der wird dann "console.log" ausgeführt, und dann sehen wir auch den tatsächlichen Inhalt der Textdatei. Und das ist eben hier mit "Event"-getriebener Architektur gemeint. Das heißt, jeder Vorgang, der asynchron ist, der wird ausgelagert, und das was hier wirklich am allermeisten Zeit beansprucht, sind ja Input- und Output-Verarbeitungen. Das heißt, alles was außerhalb von unserem JavaScript-Code stattfindet. Das bedeutet, mit Datenbank-Operationen oder wenn wir externe Webservices aufrufen oder wenn wir irgendwas auf dem System machen. Das sind alles Input- Output-Prozesse, die Node.js elegant auslagert, und er kümmert sich dann immer darum, so schnell wie möglich den eigenen Code auszuführen. Das war jetzt mal so die Beschreibung oberflächlich, was sich hinter der Node.js-Architektur verbirgt. In den kommenden Videos gehen wir näher darauf ein, wie überhaupt auch JavaScript funktioniert und dann auch noch mal, was wirklich beim Webserver der Unterschied ist aus Architektursicht, im Vergleich von den Internetinformationsdiensten, zum Beispiel. In diesem Video haben wir gesehen, wie die Node.js-Architektur aufgebaut ist und das alle Input- und Output-Operationen asynchron entwickelt werden.

Node.js für ASP.NET-Entwickler

Sehen Sie, wie Sie den Umstieg auf auf native JavaScript-Entiwcklung mit Node.js erfolgreich meistern.

2 Std. 52 min (31 Videos)
Derzeit sind keine Feedbacks vorhanden...
Exklusiv für Abo-Kunden
Erscheinungsdatum:15.05.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!