Blog

BASTA! Blog

BASTA! | 19. - 23. September 2016, Mainz

Jun 20, 2016

Im Jahr 2009 hat Node.js das Licht der Welt erblickt. Mithilfe der Technologie findet JavaScript auch auf dem Webserver eine immer größere Verbreitung, denn Entwickler können damit auf Client und Server die gleiche Programmiersprache verwenden. Namenhafte Firmen wie Microsoft selbst, Google, PayPal, New York Times, GitHub u.v.m. setzen bereits auf das leistungsstarke Node.js.

Wir sprechen mit Gregor Biswanger darüber, wieso sich auch .NET-Entwickler damit auseinandersetzen sollten, wie der aktuelle Entwicklungsstand von Node.js aussieht, welche Einsatzmöglichkeiten es gibt und wo die Stärken und Schwächen der Technologie liegen. Mehr Details zu diesen Fragen verrät Gregor Biswanger in seiner BASTA!-Session „Kuck mal, Node.js! Einstieg für .NET-Entwickler“ am 21. September 2016.

Herr Biswanger, das Jahr 2009 war die Geburtsstunde von Node.js. Wie hat sich die Technologie seitdem entwickelt?

Das Jahr 2009 war für JavaScript allgemein ein evolutionäres Jahr. Nicht nur Node.js erblickte das Licht der Welt, sondern ebenfalls das etablierte Cross-Platform Framework Nitobi PhoneGap, das heute auch als Apache Cordova bekannt ist. Darauf folgten die berühmte NO-SQL-Datenbank MongoDB und viele weitere spannende JavaScript-Technologien.

Zudem erhielt ECMAScript selbst ein wichtiges Update mit dem „strict mode“-Feature, das aus der Sprache Perl übernommen wurde und für eine erweiterte Fehlerprüfung sorgt.

Es hat sich also einiges bewegt in dieser Zeit. Der Papa von Node.js, Ryan Dahl, hatte wohl selbst nicht mit einem so großen Erfolg gerechnet. Denn ein weiteres wichtiges Jahr für ihn und JavaScript war 2011. Er erhielt zu dieser Zeit zwei wertvolle Auszeichnungen. So wurde ihm auf der Oscon-Konferenz der O’Reilly-Open-Source-Award verliehen und auf der InfoWorld erhielt er den Bossie Award für die beste Open-Source-Software in der Kategorie „Entwicklertools“.

Ein Jahr später nahm Node.js auch nochmal so richtig Fahrt auf und landete bei GitHub auf Platz 2, als das beliebteste Repository. Auf Platz 1 war übrigens Twitter Bootstrap.

Ein paar tausend Forks zeigten, dass die Entwickler-Community viele weitere Ideen mit Node.js hatte. So entstand zum Beispiel auch das Node-WebKit, mit dem sich Cross-Platform- Desktop-Software bauen lässt, ohne das ein Framework wie die Java-Runtime oder das .NET-Framework benötigt wird. Das ist aus Deployment-Sicht ein Hochgenuss. Zudem entstanden Module für einen hardwarenahen Zugriff, sodass man auf Mikrocontrollern im IoT-Bereich ebenfalls mit JavaScript arbeiten kann.

Jetzt wäre natürlich die Frage, ob Node.js nicht nur ein Hype ist? Nein, nach sieben Jahren hat sich Node.js mit seinen Vorzügen der Performance, Skalierbarkeit und Produktivität, bei namenhaften Unternehmen etabliert. So setzt PayPal, LinkedIn, Walmart, The New York Times, Trello, ebay, GitHub, Google und sogar Microsoft mit Yammer auf Node.js.

Der Technologieradar von ThoughtWorks bewertet Node.js daher als eine ausgereifte und bewährte Technologie, die für den Unternehmenseinsatz geeignet ist.

Warum sollten sich .NET-Entwickler Ihrer Meinung nach mit Node.js auseinandersetzen?

Wir von CleverSocial arbeiten bereits seit einem Jahrzehnt mit .NET und C#. Wir haben uns auch auf die Cross-Platform-Entwicklung spezialisiert; hierbei ist JavaScript führend an der Spitze. Das JavaScript jetzt auch noch serverseitig zum Einsatz kommen sollte, belächelten wir immer wieder und verstanden nicht, weshalb man sich so etwas antun möchte. Als wir uns durch unsere Erfahrungen mit dem Node-Webkit dann mit Node.js vertrauter machten, wagten wir bei einem neuen Produkt, auf Node.js zu setzen.

Wir wurden extrem positiv überrascht von unserer Produktivität und dem leichtgewichtigen Code, sodass wir uns die Frage stellten, wieso überhaupt noch .NET?

Dass nicht nur wir eine so tolle Erfahrung gemacht haben, zeigt ein spannender Artikel des PayPal-Engineering-Teams. Das Team startete im Januar 2013 mit fünf Java-Entwicklern, um eine Web-App zu programmieren. Sie verwendeten hierbei das Spring Framework. Im März 2013 wagten sie sich zusätzlich mit zwei Entwicklern an Node.js. Nun ist auch für PayPal die große Überraschung gekommen. Im Juni 2013 hatten beide Teams die fertige Web-App mit der gleichen Funktionalität. Das bedeutet: Sie haben mit weniger Entwicklern fast doppelt so schnell programmiert. Außerdem hatten sie beim Node.js-Projekt circa 33 Prozent weniger Code und circa 40 Prozent weniger Daten.

Somit gibt es zahlreiche Gründe für Node.js, nicht nur für .NET-Entwickler. Uns hat es auf jeden Fall überzeugt.

Für welche Zwecke kann Node.js eingesetzt werden?

Node.js läuft auf Windows, Mac und Linux – auf dem Server und auf dem Client. Ebenfalls läuft es auf Mikrocontrollern wie Arduino, Intel Galileo Board oder Intel Edison.

Somit kann Node.js für eine Vielzahl an Zwecken eingesetzt werden. Als Web-Server für das Backend, als Desktop-Software oder eben als Anwendung für IoT-Geräte.

Welche Vorteile ergeben sich für Entwickler bei der Nutzung von Node.js?

Auf jeden Fall Produktivität und eine hohe Performance. Node.js ist aktuell der zweitschnellste Web-Server. Auf Platz eins ist Google´s GO-Lösung; wobei man hier serverseitig wieder eine andere Sprache beherrschen muss. Wenn man heutzutage eine Web-Anwendung baut, muss man spätestens beim Client mit JavaScript arbeiten. Das ist immer wieder dann ein starker Kontext-Wechsel, wenn man serverseitig mit einer anderen Sprache arbeitet. Bei Node.js bewege ich mich immer in der gleichen Umgebung. Das man hierbei auch Code wiederverwenden kann, ist ein erheblicher Vorteil. Man bedenke nur einmal das Datenformat JSON, das sich ohne weiteres in beiden Welten nutzen lässt.

Auf welche Herausforderungen müssen sich Entwickler einstellen, die Node.js nutzen?

Auf ein erneutes lernen. Wobei das für Softwareentwickler zu ihrem Beruf gehört. Sowie jeder Steuerberater jedes Jahr neue Gesetze lernen muss. Wer JavaScript hingegen nur oberflächlich beherrscht und darauf weiter arbeiten möchte, sollte es unbedingt intensiver kennenlernen. Das gefährliche an JavaScript ist die C-ähnliche Syntax, die damals aus Marketingzwecken einfloss. Hierbei möchte der .NET-Entwickler gewohnte Aspekte wiederverwenden und stößt nur auf Probleme. Hat man hingegen die Sprache wirklich richtig kennengelernt, bemerkt man, weshalb selbst C# in Sachen Funktionalität immer mehr in die Richtung von JavaScript rückt. Als Beispiel wäre hier nur mal das dynamic-Feature oder „Projekt Roslyn“ zu erwähnen. Bei meinen JavaScript- und Node.js-Schulungen konnte ich selbst jahrelangen JavaScript-Entwicklern die Augen öffnen. Ich kann es daher nur jedem ans Herz legen. Schaut euch an, was unter der Haube von JavaScript oder Node.js läuft. Ihr könnt nur profitieren.

Node.js und ASP.NET im Vergleich: Wo liegen die jeweiligen Stärken, wo die Schwächen?

Das lustige hierbei ist, das Microsoft mit ASP.NET Core genau die gleichen Konzepte von Node.js adaptieren möchte. Das gelingt ihnen aber nach zwei Jahren Entwicklung nur sehr langsam. Wir haben es bei einem unserer ASP.NET-Core-Prototypen aktuell aufgegeben.

Eine große Stärke von ASP.NET ist auf jeden Fall die tolle Unterstützung von O/R-Mappern wie dem Entity Framework. Wobei man bei Node.js mit einer relationalen Datenbank jeden SQL-Befehl selbst schreiben muss. Anders hingegen ist es bei NO-SQL-Datenbanken. Hier hat man bei Node.js mehr Komfort, als unter .NET. Die Datenbank liefert JSON direkt und für die Abfragen gibt es JavaScript-Funktionen. Für die Kommunikation wird kein Mapping benötigt, was wiederum einen Pluspunkt auf Seiten der Produktivität gibt.

Eine weitere Stärke bei ASP.NET ist, dass es für unterschiedliche Belange einen goldenen Weg gibt. In JavaScript gibt es hingegen tausende an Möglichkeiten für eine Lösung. Was man allerdings auch wieder positiv bewerten kann, wenn man eine wirkliche Auswahl möchte. So verfügt beispielsweise der Node-Package-Manager über 236.209 Pakete. NuGet hingegen über lediglich 49.781 (Stand Januar 2016).

Was die Sprache anbetrifft, ist C# eine richtig tolle Sprache, die aber auch ihre Grenzen hat. Man bedenke nur einmal, wie kompliziert es wird, wenn man mit Generics und Reflection komplexe Lösungen bauen möchte. Das geht bei JavaScript erheblich einfacher. Bei der Verwendung mit TypeScript wird hierbei der gleiche C#-Komfort gewährleistet, was die Fehleranfälligkeit angeht.

Im Großen und Ganzen möchte ich mich aber auch nicht nur auf DIE eine Technologie festlegen. Wir haben bei unseren Produkten ebenfalls polyglotte Lösungen und da wird sich auch der Weg in der Entwicklerwelt hinbewegen. Wir haben für spezielle Anwendungsfälle ein Web-API und nutzen dazu den SQL Server, an anderer Stelle kommt hauptsächlich nur Node.js, MongoDB und Redis zum Einsatz. Das alles für eine Web-Anwendung. Nicht ohne Grund wird das Thema Microservices immer relevanter.

Ihr aktueller Zugang zur .NET- und Microsoft-Welt.
Der BASTA! Newsletter:

Behind the Tracks

.NET Framework & C#
Visual Studio, .NET, Git, C# & mehr

Agile & DevOps
Agile Methoden, wie Scrum oder Kanban und Tools wie Visual Studio, Azure DevOps usw.

Web Development
Alle Wege führen ins Web

Data Access & Storage
Alles rund um´s Thema Data

JavaScript
Leichtegewichtig entwickeln

UI Technology
Alles rund um UI- und UX-Aspekte

Microservices & APIs
Services, die sich über APIs via REST und JavaScript nutzen lassen

Security
Tools und Methoden für sicherere Applikationen

Cloud & Azure
Cloud-basierte & Native Apps