17. Mai 2013 · von Joerg Sager

Trend: Serverseitiges Javascript mit Node.JS

logo-lightDie 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?

  • Einheitliche Entwicklungssprache für Client- und Serveranwendungen
    Es kommt bei Webprojekten zu erheblichen Einsparungen von Programmcode. Wo früher für Serveranwendungen und serverseitig zeitgesteuerte Jobs Programmcode dupliziert wurde, wird man nun in die Lage versetzt bestehende Funktions-Bibliotheken wiederzuverwenden. Diese können sowohl server- als auch clientseitig genutzt werden.
  • Plattformunabhängige Software
    Node.JS steht für alle gängigen Betriebsystem-Plattformen zur Verfügung wie zum Beispiel Windows, MacOS, Linux oder auch SunOS.
  • Durch Module erweiterbar
    Seit Node.JS 2009 von Ryan Dahl gestartet wurde sind neben vielen Standardmodulen, welche für die serverseitge Entwicklung notwenig sind, wie zum Beispiel File System-, TLS/SSL-, HTTP-, HTTPS- oder auch Socket Operations, viele weitere Module dazu gekommen. So auch das node-sqlserver Modul von Microsoft, um mit dem Microsoft SQL-Server zu kommunizieren. (http://www.microsoft.com/en-us/download/details.aspx?id=29995) Aber auch die Community liefert Input und es gibt unter anderem fertige Module wie node-sharepoint (https://github.com/lstak/node-sharepoint) um mit einem SharePoint Server zu kommunizieren.
  • Ressourcen schonend
    Node.JS ist durch seine Architektur und Umsetzung schlank und schnell. Durch die built-in HTTP Server Bibliothek ist Node.JS in der Lage Webserver bereitzustellen ohne auf externe Software wie Apache, Tomcat oder Lighthttpd zurückzugreifen und ermöglicht somit mehr Kontrolle darüber, wie der Webserver reagiert und arbeitet.
  • Node.JS bringt Sie schnell zum Ziel!
    Frei nach dem Motto „Quick and Easy“ kann man mit Node.JS schnell zum Ziel kommen.
    Mit etwa ca. 10 Zeilen Code kann man einen kompletten Webserver erstellen.

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();
}

Ergebnis:
nodejs_www_example

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/

 


Kategorien: Sonstiges, Technical, Trend

Schlagwörter: , , ,


Diesen Blogeintrag bewerten:

2 Stimmen mit durchschnittlich 4.5/5 Punkten

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!


2 Kommentare zu “Trend: Serverseitiges Javascript mit Node.JS”

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

Schreibe einen Kommentar zu Sebastian

Kontakt.
Lassen Sie sich von uns beraten
Wir freuen uns über Ihr Interesse an unseren Leistungen. Hinterlassen Sie
uns Ihren Namen, Ihre Telefonnummer und E-Mail Adresse – wir melden
uns schnellstmöglich bei Ihnen.
Kontakt aufnehmen