Die auf der JavaScript-Laufzeitumgebung „V8“ basierende Software Node.JS ist eine serverseitige Plattform, welche im Kommen ist und möglicherweise neuen Wind in die IT bringt. Die ursprünglich für den Browser Chrome entwickelte Lösung bringt einige Neuerungen in die IT. Große Unternehmen wie eBay, Yahoo! und auch Microsoft haben diese Technologie längst im Einsatz. (Quelle: http://nodejs.org/)
Da stellt man sich die Frage was macht Node.JS so besonders?
Node.JS Architektur
Node.JS bietet durch die JavaScript-Laufzeitumgebung eine extrem ressourcensparende Architektur mit der überwiegend skalierbare Netzwerkanwendungen realisiert werden.
Für die ganze Anwendung ist nur ein einziger Thread nötig, da Node.JS eine ereignisgesteuerte Architektur ist. Das Blockieren der Programmabläufe durch Ein-/Ausgabe-Operationen bleibt bei Node.JS aus, weil das Ergebnis einer Operation immer an eine Callback Funktion gesendet wird und der Thread somit nicht warten muss. Dieses Verhalten bietet gerade bei serverseitigen Anwendungen einen erheblichen Vorteil, weil deutlich mehr Verbindungen zur gleichen Zeit mit nur einem „Node.JS“-Prozess aufrechterhalten werden können.
Beispiel:
Bei dem Event „disconnect“ unseres Socketservers wird eine Funktion registriert,
welche in die Konsole „disconnect!“ schreibt, sobald das „disconnect“ Event auftritt.
socketserver.on('disconnect', function() { console.log('disconnect!'); });
Die Operation (bzw. Funktion) „disconnect“ ruft, wenn Sie aufgerufen wird eine Callback-Funktion auf.
Welche Vorteile bietet Node.JS darüber hinaus?
Codebeispiel:
// load http module var http = require("http"); // load url module var url = require("url"); // create webserver on port 1337 and register Callbackfunction "onRequest" for request http.createServer(onRequest).listen('1337'); // log success information-message console.log("Server has started on localhost:1337"); // callback-function to handle request function onRequest(request, response) { // get current url var pathname = url.parse(request.url).pathname; // write head and pathname to response response.writeHead(200, { "Content-Type": "text/plain" }); response.write(pathname); // log debug informations console.log("request handeld - "+pathname); // close response object response.end(); }
Aus der Praxis
Node.JS findet zur Zeit die meiste Anwendung in der Bereitstellung von Webservices. Hier können auf einfache Arte und Weise Datenbank-Tabellen bereitgestellt und somit anderen Anwendungssystemen zur Verfügung gestellt werden.
Die Vorteile liegen dabei auf der Hand. Durch einen Node.JS Webservice, welcher Datenbank-Tabellen bereitstellt, kann auf einfache Weise eine Security Trimmed-Anwendung bereitgestellt werden, welche darüber hinaus sehr Ressourcen schonend arbeitet und viele Anfragen parallel abarbeiten kann. Node.JS kristallisiert sich damit gerade im Bezug auf das Thema Master Data Management und Stammdatenverteilung als eine geeignete Plattform heraus, weil schnell plattformunabhängige REST/XML – Webservices umgesetzt werden können um Daten in andere Anwendungssysteme zu importieren.
Aber auch asynchrone I/O Operations werden immer häufiger mit der Node.JS-Technologie realisiert.
Fazit
Node.JS ist eine schnell wachsende und kommende Technologie, welche man nicht aus den Augen verlieren sollte. Gerade weil immer mehr Anwendungen vom Desktop ins Web wandern und die Systeme immer mehr Webservices bereitstellen. So bieten viele Produkte fast vollständige JavaScript APIs an wie zum Beispiel auch der Microsoft SharePoint Server 2013 (JavaScript API reference for SharePoint 2013). Serverseitige zeitgesteurte Jobs, welche mit Powershell oder C# mit hohen Aufwand entwickelt wurden, um im SharePoint Server Aktionen auszufüren, fallen nun weg und können durch mit serverseitigem JavaScript ersetzt werden.
Laut Google-Trend Analysen ist Node.JS bereits ein Thema, welches ein stetiges wachsendes das Interesse und die Aufmerksamkeit der IT hat.
Weitere Informationen finden Sie auf http://nodejs.org/api/
Haben Sie Fragen zu diesem Artikel oder brauchen Sie Unterstützung?
Nehmen Sie mit uns Kontakt auf!
Wir unterstützen Sie gerne bei Ihren Vorhaben!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hätte mir auch ein Beispiel für den Datenbankzugriff gewünscht. Solange die Applikation auf die Datenbank warten muss, bringt die Struktur von Node.JS nur wenig Vorteile, auch dürften viele Scriptentwickler Probleme haben, sich in die geänderten Abläufe „reinzudenken“. Wenn die Datenbank auch eventbasiert angesteuert wird, gibt es mit der Anzahl der Datenbankverbindungen wieder einen limitierenden Faktor. Beispielsweise unterstützt die Datenbanksimulation mySQL IMHO nur ein asynchones Query gleichzeitig pro Verbindung.
Hallo Sebastian,
danke für dein Feedback. Prinzipiell hast du recht damit, dass der Webserver nur so schnell arbeiten kann wie die Systeme dahinter. Wie derzeit die Skalierbarkeit von mySQL-Datenbanksystemen ist kann ich persönlich nicht beurteilen, aber ich denke, dass man durch ein Datenbank-Clustering oder Loadbalancing die nötige Performance heraus holen kann um einen schnellen Webservice bei Bedarf zu ermöglichen.
In diesem Artikel war auch ein wenig stärker der Fokus auf eine alternative zu gängigen Webservern, um möglicherweise einen Webservice abzubilden oder ergänzend zu einem Webserver zu betreiben. In einem späteren Post stelle ich gerne noch ein Beispiel bereit, wie man mit Node.JS auf die Datenbank zugreift.
Viele Grüße
Jörg