September 2015

Band 30, Nummer 9

Dieser Artikel wurde maschinell übersetzt.

Die arbeiten Programmierer - wie mittlere zu sein: Node.js

Durch Ted Neward | September 2015

Ted NewardMicrosoft verwendeten Standardbegriffe Technologie von hinweg die Software als Teil seiner mitgelieferten und "AW-Relevancing." Eine der Technologien, die er getroffen hat ist Node.js. Dadurch erhalten Entwickler eine hervorragende Gelegenheit, eines der beliebtesten Software vollständigen Stapel Gruppierungen auf der Node.js-Plattform als Mittelwert bezeichnet verwenden: MongoDB, Express, AngularJS und Node.js.

In der letzten Ausgabe (msdn.microsoft.com/magazine/mt185576), habe ich die grundlegenden Teile von Node.js laufen. In diesem Artikel ich einen einfachen Knoten "Hello World" Webdienst-Endpunkt Hochfahren und in einer Microsoft Azure-Website bereitzustellen. Über die nächsten Ausgaben erstelle langsam Meine Weg durch den Mittelwert Stapel, ich von Grund auf.

Wie im vorherigen Artikel erläutert wird, sind viele Stellen, konnte ich Teile der mittlere Stapel für etwas anderes tauschen – DocumentDB für MongoDB, ASP.NET WebAPI für Node.js und ASP.NET MVC für Express oder BackboneJS (oder einem unzählige andere JavaScript Single-Seite-Anwendungsframeworks) für AngularJS – aber keines der alternativen genießt die Beliebtheit, der Mittelwert enthält (mindestens auf JavaScript-Liebhaber).

Node.js

Node.js ist im Grunde nur "JavaScript auf dem Server." Ja, es gibt ein anderen Programmiersprachen Ansatz für Node.js, die für den Umgang mit der gleichzeitigen Ausführung versucht. Anstatt bei einem Aufruf übergibt der Programmierer eine Funktion literal aufgerufen werden, wenn der Vorgang abgeschlossen ist. Dadurch kann Entwickler Code als Singlethread-vorstellen, obwohl mehrere Threads unterhalb der Fläche verwendet werden. Auf der ganzen ist der größte Unterschied von Node.js jedoch, dass Sie JavaScript verwenden, um die Serverkomponenten, anstelle von c#, Java oder Ruby zu erstellen. In diesem Sinne ist es eigentlich nur eine Änderung der Landschaft – keine völlig andere Universum.

Die einfachste Node.js-Anwendung ist natürlich die weit verbreitete "Hello, World" die einfach schreiben kann mithilfe des integrierten konsolenobjekts:

console.log("Howdy, NodeJS!");

Dies wird in eine Datei mit dem Namen hello.js im aktuellen Verzeichnis unter der Annahme, Ausführen des Dienstprogramms Knoten in der Befehlszeile mit Knoten hello.js verwenden. Oder Sie können mithilfe von Node.js die Erweiterung ableiten, indem einfach ausgeführten "Knoten Hello". In beiden Fällen begrüßt Knoten Sie auf herkömmliche Weise.

Wie die meisten Programmiersprachen-Plattformen hat Node.js einen eigenen Satz von Bibliotheken und APIs im Paket. Wie bereits erwähnt, zuletzt Node.js verwendet die Konvention auf eine installierte Bibliothek verweisen erfordern. Diese fängt das zurückgegebene Objekt in eine lokale Variable mit demselben Namen. Also z. B. kann wenn ich einen einfachen HTTP-Server zu schreiben, der effektiv mir die gleiche Begrüßung über das HTTP-Protokoll ermöglichen möchten, ich die folgenden eine einfache helloHTTP.js-Datei abgelegt:

var http = require('http');
var port = process.env.PORT || 3000;
http.createServer(function(req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
}).listen(port);

Die Zeile erforderlich sucht die Bibliothek "http" innerhalb der Node.js-Installation und speichert ihn in der HTTP-Objekt in der Abhängigkeitsinjektion. Dies ist eine standardmäßige Node.js-Konvention und sollte als ziemlich sacrosanct gehalten werden. Die zweite Zeile greift das integrierte Prozessobjekt auf der Umgebung. In diesem Fall wird das Objekt "Env" innerhalb des Prozess-Objekts verwendet, um zu bestimmen, ob eine Umgebungsvariable mit dem Namen PORT festgelegt wird. Wenn dies der Fall, verwende ich, die als Port auf dem Server ausgeführt. Anderenfalls wird den Standard-Port 3000 verwendet. Viele Node.js-Frameworks bevorzugen standardmäßig Port 3000 obskuren historisch und kulturellen Gründen.

Die Art der Programmierung von Node.js wird klarer, in den folgenden Zeilen. Ich verwende das HTTP-Objekt, um einen HTTP-Server erstellen. Der einzige Parameter ist ein literal Funktion, die eine Req (HTTP-Anforderung)-Objekt und ein Res (HTTP-Antwort)-Objekt als Parameter akzeptiert und Res verwendet, um die HTTP-Antwort zurück zu schreiben. Diese Vorgehensweise ist in allen Ebenen des Stapels Node.js weit verbreitete.

Dies ist eine von diesen "Sie finden es großartig, oder man mag Sie es" Arten von Elementen. Sie werden im kommenden Artikeln sehen. Wenn das nicht klar ist, verwenden Sie einige Zeit experimentieren. Das zurückgegebene Objekt von CreateServer wird dann an den gewünschten Port über einen Aufruf der Listen gebunden. Sitzungsübergreifenden, müssen Sie einen HTTP-Server ausgeführten, wenn, den Sie mithilfe von "Knoten HelloHTTP", und zeigen einen Browser unter http://localhost: 3000 problemlos ausführen können.

Azure-Befehlszeilentools

An meinen letzten Artikel erinnern Sie sich, dass Node.js hat paketausführungshilfsprogramm den Node Package Manager (Npm) zum Herunterladen von abhängiger Bibliotheken verwendet werden können. Sie können es auch verwenden, Herunterladen von Tools, mit denen Sie dann über die Befehlszeile. Dies ist ein Aspekt klein, aber leistungsfähig, Node.js. Es dient als ein plattformneutrales "Spielfeld Ausgleich."

Sie können praktisch alle Unterschiede zwischen Windows, Mac OS oder Linux hinter eine Wand aus JavaScript-Skripts ausblenden. Microsoft an Abholung bis dies einer Weile las und einen Satz von Befehlszeilentools in ein Azure-Cli aufgerufen Node.js-Paket verpackt. Ist die Installation einfach mit Npm:

npm install –g azure-cli

Das g - Flag weist Npm auf "Global" Installieren der Tools (d. h., sie sind nicht gebunden, auf das lokale Verzeichnis, in dem der Befehl ausgeführt wird). Dadurch wird das resultierende Paket im gesamten System zur Verfügung. Wenn der Vorgang abgeschlossen ist, wird ein neues Befehlszeilendienstprogramm Azure, für die Verwendung verfügbar sein. Das Azure-Cli-Paket liefert keine Funktionalität größer oder kleiner als die Verwendung der Azure-Verwaltungsportal. Bereitstellen von der Azure-Cli-Tool Vorteil liegt in der Möglichkeit, Azure Skriptbefehle als Teil eines automatisierten System, z. B..

Bereitstellen für Azure

Wenn diese schöne wenig Grußformel über das Internet weltweit verfügbar sein sollen, müssen Sie also eine Azure-Website als Host zu erstellen. Verwenden das Tool "Azure", ist es ziemlich einfach. Zuerst müssen Sie das Tool in der Azure-Konto zu verknüpfen:

azure account download

Dadurch wird das System als Standardbrowser auf das Portal Azure-Anmeldung ausgelöst werden. Verwenden Sie die Azure-Konto-Anmeldeinformationen anmelden. Wenn Sie fertig sind, wird es automatisch einer PublishSettings-Datei mit den Anmeldeinformationen die Bedürfnisse Azure Tools herunterladen, die direkt importiert werden können:

azure account import <filename>

FileName häufig handelt es sich etwa "Visual Studio Ultimate mit MSDN-4-23-2015-credentials.publishsettings," abhängig von den Details der Azure-Abonnement und das Datum, das Sie die PublishSettings-Datei herunterladen. Wenn Sie fertig sind, ist es lediglich so erstellen Sie eine neue Azure-Website einrichten der Git Bereitstellungen auf der Website zu tun:

azure site create –git

Dies fordert für einen Standortnamen und (sofern dieser Name ist eindeutig) dreht sich der entsprechenden Website. Wenn alles funktioniert, einfach das aktuelle Verzeichnis als lokalen Repository Git initialisiert. Vorausgesetzt, dass Sie immer noch im selben Verzeichnis befinden, die die helloHTTP.js-Datei vor dem enthält, können Sie die Git-Repository hinzufügen und schieben Sie ihn in der Azure-Cloud:

git add helloHTTP.js
git commit –m "Initial commit"
git push azure master

Git ist ein paar Sekunden lang vorstellen. Dann geht es über eine Abfolge von Schritten, die für den Moment deckend bleiben. Wenn es abgeschlossen ist, jedoch Azure den neuen Node.js-Code enthalten wird und Sie suchen können, siehe Abbildung 1.

Hallo Welt von Knoten
Abbildung 1 Hallo Welt von Knoten

Deshalb ist der HelloHTTP-Code den Standard-Port 3000 oder den PORT der Umgebung Variable aus dem umgebenden Prozess verwendet. Auf der Azure-Cloud ist PORT auf einen Wert festgelegt, die Azure-Infrastruktur behält. Dies ist Microsoft die verschiedenen Dienstendpunkte effizienter verwalten kann.

Das ist wirklich der letzten Installationsschritte aus, die Sie tun müssen. Ehrlich gesagt, dauert es länger zu lesen als muss nicht tatsächlich die Befehle ausführen, sobald Sie über das Anfangssetup Phasen sind. Und noch mehr ehrlich gesagt, alle Azure arbeiten oder die Untersuchung erfordert ähnliche Arten von Setup. Azure stellt wirklich eine Plattform Folgeaktionen für viele Entwicklungsaufwand dar. Anders ausgedrückt, ist Sie wissen, wie Sie zu einem späteren Zeitpunkt führen Sie damit auch sie nun erfahren Sie möglicherweise benötigen.

Hier wird nahezu alles Mittelwert verursacht werden. Nur dann Sie Azure Details in Betracht zu bringen müssen ist oder wenn Sie die Umgebung auf dem MongoDB Datenbankserver, z. B. konfigurieren müssen beim Umgang mit einer Interaktion zwischen Azure und Node.js.

Nachbereitung

Es ist erwähnenswert, dass Node.js ist eine HTTP-Pipeline nicht. Knoten kann tatsächlich jede Art von Netzwerk-Anwendung ausführen, durch die richtige Bibliothek öffnen. Dies gilt auch für Microsoft .NET Framework. Allerdings werden wie .NET Framework die meisten Node.js-Anwendung jetzt HTTP-basierte Natur sein.

Die http-Bibliothek in Node.js ist ziemlich auf niedriger Ebene. Daher entwickelt Node.js-Community eine höherer Ebene Bibliothek und Abstraktionen Umgang mit HTTP-basierte Endpunkte zu erleichtern. Diese Bibliothek wird Express bezeichnet. Es können Sie erstellen, welcher Node.js Aufrufe der Gemeinschaft "Middleware". Was ich am nächsten beschäftigt ist.

Jetzt mit der Node.js-http-Bibliothek zu experimentieren, aber nicht zu angefügt werden, da ich werden sie sehr schnell hinterlassen werden nach ich bei der nächsten Iteration erhalte. In der Zwischenzeit jedoch...

Viel Spaß beim Programmieren.


Ted Neward ist CTO bei iTrellis, einer Beratungsfirma. Er verfügt über mehr als 100 Artikel geschrieben und verfasst oder Mitautor ein Dutzend Bücher, darunter "Professional f# 2.0" (Wrox 2010). Er ist ein F#-MVP und spricht auf Konferenzen in der ganzen Welt. Er berät und hilft regelmäßig. Bei Interesse erreichen Sie Ihn unter ted@tedneward.com oder ted@itrellis.com.

Dank den folgenden technischen Experten für die Überprüfung dieses Artikels: Shawn Wildermuth
Shawn Wildermuth ist eine dreizehn Mal Microsoft MVP (ASP.NET/IIS-Schnittstellen), der Verfasser von acht Büchern und Dutzende von Artikeln zur Softwareentwicklung und Pluralsight-Autor mit mehr als 15 Kursen auf seinen Namen. Er ist einer Gedanken-und Erfahrungsaustausch Wilder (http://wilderminds.com) und erreichen Sie unter seinen Blog unter http://wildermuth.com.