Dieser Artikel wurde maschinell übersetzt.

Azure-Websites

Erstellung eines Node.js- und MongoDB-Webdienstes

Tejaswi Redkar

Laden Sie die Codebeispiele herunter

Die Wolke ist neutral für alle Sprachen. In der Wolke sollte es keine Rolle spielen ob apps, die Sie ausführen, Node.js, ASP.NET, Java oder PHP, sind weil die Wolke eine fertige Infrastruktur bietet für sie ausführen. Die Religion der Wolke ist Agilität und Beweglichkeit erlaubt Ihnen, neue Ideen schnell umzusetzen und Sonnenuntergang diejenigen, die auf dem Markt nicht funktionieren. In den letzten Jahren hat Node.js Popularität unter einer neuen Klasse von Entwickler gewonnen, die das asynchrone Programmierparadigma bevorzugen. Node.js ist eine JavaScript-Runtime-Engine für die Erstellung von Client- und Serveranwendungen. Es enthält eine asynchrone I/O-Framework, das es Tausende von gleichzeitigen Verbindungen auf einem einzelnen Thread mit minimalen CPU oder Speicher-Overhead zu behandeln hilft. Es ist ein beliebter Mythos, dass Node.js als Web-Development-Framework ist; in der Tat ist es eine Singlethread-Runtime-Engine für die Ausführung von JavaScript-Code. Es hat eine modulbasierte Architektur, die ermöglicht jedem Benutzer erstellen und veröffentlichen ein Modul, um bestimmte Aufgaben, wie Web-Entwicklung oder Zugriff auf eine Datenbank MongoDB behandeln. Die Express-Template-Engine ist beispielsweise eine Web-Application-Framework, die Sie als Modul in Node.js herunterladen können. Das Kernmodul von Node.js baut in C++ auf auf der Google V8-JavaScript-Engine, das für den Chrome-Browser entwickelt wurde. Node.js ist in der Websites von Microsoft Azure unterstützt, und Microsoft stellt auch Entwicklungs-Tools und eine native SDK für die Programmierung mit Azure-APIs. Es gibt eine spezielle Developer Center Node.js im Azure Portal unter bit.ly/1iupElQ.

In diesem Artikel zeige ich Ihnen einen RESTful Web-Dienst in Node.js zu entwickeln, die eine MongoDB-Datenbank in der Cloud zugreift, und veranschaulicht auf Azure-Websites bereitzustellen.

Node.js basiert auf einem asynchronen Entwicklungsmodell, was bedeutet, dass jedem Methodenaufruf vorgenommenen ein Rückruf zum Empfangen der Antwort erforderlich. Obwohl .NET Entwickler traditionell synchronen (Anforderung-Antwort)-Methodenaufrufe bevorzugen, asynchrone Funktionen haben immer existiert der Microsoft .NET Framework. Mit der Aufnahme der neuen Async-Programmiermodell in .NET Framework erwarten, asynchrone Anwendungen über Web und mobile Applikationen die Norm geworden. Bei der asynchronen Programmierung die aufrufende Funktion das Rückrufereignis abonniert und stellt einen Delegaten Verarbeitung die Antwort bereit. Die Callback-Funktion wird aufgerufen, wenn die Verarbeitung abgeschlossen ist. Es ist wie eine E-mail im Vergleich zu telefonieren.

Im folgenden finden einen einfachen Node.js-Webserver, der eine Zeichenfolge, die beim Aufruf zurückgibt:

var http = require("http");
http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type":
  "text/plain"});
  response.write("Hello MSDN");
  response.end();
}).listen(8080);

Beachten Sie, dass die Antwort-Funktion aufgerufen wird, wenn eine HTTP-Anfrage-Ereignis ausgelöst wird. Die erfordern-Funktion dient zum Laden von Modulen, ähnlich wie Namespaces aus Assemblys in .NET Framework geladen.

Gab es eine Menge Diskussionen und religiöse Argumente auf ASP.NET versus Node.js, aber ich werde nicht das Thema dieses Artikels berühren. Mein Ansatz war schon immer verwenden dem besten Werkzeug für den Job und was dir gut zu tun Ihr Bestes.

Node.js Anforderungsverarbeitung

Als Abbildung 1 zeigt, das Node.js-Modul beginnt mit einen einzigen Thread für gleichzeitige Client-Verbindungen bearbeiten. Wie der einzelne Thread bereits initialisiert ist, gibt es keine Initialisierung overhead benötigt für die Verarbeitung jeder Anstieg der Anfragen, da der Thread schnell die Anforderung asynchron zu einem Arbeitsthread zur Verarbeitung delegiert.

Node.js Request-Response Orchestration
Abbildung 1 Node.js Anforderung / Antwort-Orchestrierung

Wenn der HTTP-Incudes-eine lang andauernde oder I/O-intensiven Aufgaben, beispielsweise Datenbankzugriff oder ein Web Service-Aufruf-Anforderung ist es asynchron blockierungsfreie Worker Threads ausgeführt. Sobald der lang andauernde Vorgang abgeschlossen ist, geben die Worker-Threads die Ergebnisse als einen Rückruf an den Hauptthread zurück. Der Haupt-Thread gibt das Ergebnis zurück an den Client zurück. Ein Impor­Tant Konzept zu verstehen, ist hier, dass der empfangende Singlethread immer empfangen kann anfordert und nicht bleiben beschäftigt mit der Verarbeitung, da die Verarbeitung an die Worker-Threads delegiert wird.

Node.js-Kernkomponenten

Node.js besteht aus zwei Hauptkomponenten:

Kern/Kernel: Der Kern von Node.js ist oben auf der Google V8-JavaScript-Engine in C++ geschrieben. Der Kern selbst ist Singlethreaded und Lastenausgleich zwischen CPUs geeignet. Node.js ist open Source und Sie können den Quellcode von github.com/joyent/node.

Module: Module sind vergleichbar mit NuGet-Pakete in das .NET Framework. Node.js Paket-Manager (NPM) ist das Tool zur Verwaltung von Node.js Paketen in Ihrer Entwicklungsumgebung. Module erzeugen neue Prozesse oder Threads je nach Intensität der Aufgabe I/O. Zu den beliebten Modulen gehören HTTP, MongoDB, Express (ein Web-Framework für die Vorlage) und Socket.IO. Für eine Liste der beliebtesten Module, besuchen Sie bitte nodejsmodules.org.

Installieren und Ausführen von Node.js lokal

Vor dem Ausführen einer Node.js-Websites in der Wolke, empfehle ich, lokal, bequem mit der Plattform zu ausprobieren. Sie können installieren und Ausführen von Node.js auf einer Windows-Plattform in nur drei Schritten:

  1. Downloaden und Installieren von Node.js: Node.js Windows Installer kann heruntergeladen und installiert werden, von nodejs.org/#download. Das Installationsprogramm installiert die Node.js Laufzeit und NPM.
  2. Erstellen Sie einen einfachen Server: Zum Erstellen eines HTTP-Servers in Node.js öffnen Sie Ihren bevorzugten Text-Editor, kopieren Sie den Code aus Abbildung 1, und speichern Sie die Datei als webserver.js. Der Code, der zuvor gezeigten erstellt einen minimalistischen Webserver, der auf Port 8080 lauscht und antwortet mit der gleichen Zeichenfolge für jede Anforderung.
  3. Führen Sie den HTTP-Server: Schließlich, um den Server ausführen, öffnen Sie die Eingabeaufforderung, navigieren Sie zum Ordner, in dem Sie die webserver.js-Datei gespeichert, und geben Sie Folgendes ein:
    > "C:\Program Files\nodejs\node.exe" webserver.js
  4. Dieser Befehl startet den Web-Server, und Sie können es testen, indem Navigieren Sie im Browser http://localhost: 8080. Dieser einfache Server sollte Ihnen genug Vertrauen, um als Option für die Entwicklung von Web-Sites Node.js ausprobieren.

Node.js auf Azure Websites ausgeführt

Wenn ich zuerst Node.js verwendet, beschloss ich, die Befehlszeile, die so weit wie möglich zu vermeiden. Nachdem mein Leben in Visual Studiolebte, schätze ich wirklich die Produktivität, die Sie erreichen können, mithilfe einer IDE. Glücklicherweise hat Microsoft investiert in WebMatrix, ein leistungsfähiges Werkzeug für Devel­oping Node.js-Anwendungen unter Windows. Das Visual Studio -Team veröffentlichte auch die Node.js-Werkzeuge für Visual Studio (nodejstools.codeplex.com). Für den Rest dieses Artikels werde ich WebMatrix als meine primäre Entwicklungstool verwenden. Von WebMatrix können Sie Installationspakete NPM, Veröffentlichen von Websites auf Azure und auch lokal ausführen. WebMatrix installiert auch IISNode für IIS Express, die die Node.js-Anwendung auf IIS hosten können. Erhalten Sie weitere Informationen über IISNode bei github.com/tjanczuk/iisnode.

Vor dem Erstellen eines kompletten RESTful Web-Service, zeige ich Ihnen, wie Sie eine einfache Web-Site auf Azure von WebMatrix zu veröffentlichen.

Erstellen Sie eine neue Azure-Website Sie können eine neue Website in Azure aus dem Azure Portal erstellen, wie in dargestellt Abbildung 2.

Create a New Azure Web Site
Abbildung 2 erstellen neue Azure-Website

Das Portal wird mit einem eindeutigen Namen in der Region, die Sie angeben, eine neue Website erstellen. Die Region ist wichtig für Co Lokalisierung Ihrer Website, Datenbanken und andere Dienste im selben Rechenzentrum. Daten, die ein Rechenzentrum verlässt zahlt.

Erstellen Sie eine Express-Website Express ist eine Web-Application-Framework für Node.js. Es folgt dem Model-View-Controller (MVC)-Muster und daher können Sie Routen für den Aufbau von Node.js MVC Web-Sites sowie RESTful Web Services herstellen. Sie können Express von expressjs.com.

Liebst du .NET Entwicklung in Visual Studio, empfehle ich, mastering WebMatrix Node.js-Anwendungen zu entwickeln. WebMatrix 3 enthält eine nützliche, vorgefertigte Express-Vorlage. Öffnen Sie es und klicken Sie auf neu | Office-Vorlagen. Unter der Kategorie Node.js wählen Sie die Express-Website-Vorlage, siehe Abbildung 3.

Geben Sie einen Sitenamen, und klicken Sie auf weiter, um IISNode und die Express-Website-Vorlage zu installieren.

Express Site Template
Abbildung 3 Express Websitevorlage

Der Node.js-Server baute ich früher nicht ausgeführt, wie auf Azure-Websites ist, da die Infrastruktur Azure Web-Sites von IIS abhängig, für die Ausführung von Web-Sites. Daher brauche ich um ein Node.js-Website ausführen, die Integration zwischen IIS und Node.js, die IISNode bereitstellt.

Abbildung 4 veranschaulicht die Dateistruktur erstellt, indem die Express-Vorlage und den Quellcode für server.js.

Express File Structure
Abbildung 4-Express-Dateistruktur

Beachten Sie, dass das Express und Routen-Module erhalten automatisch importiert. Ich werde diese Module verwenden, um die REST-Dienste zu erstellen.

Die Website lokal ausgeführte Anschluss an meine früheren Empfehlung klicken Sie Run auf WebMatrix Testen der Website auf dem lokalen Computer. Wenn die Installation erfolgreich war, sollten Sie die Express-Homepage sehen.

Ausdrückliche Vorlage wird auch die Jade Template-Engine installiert. Jade ist ein HTML-Template-Engine und dient zum Erstellen von Ansichten aus dem Express-Framework generiert. Jade ist zum Ausdruck bringen, was für ASP.NET MVC Razor ist. Daher werden die index.html-Inhalte von /views/index.jade und /routes/index.js gerendert. Diese Routen sind eingerichtet auf den Linien 16, 17 und 30 des server.js, siehe Abbildung 4. Für weitere Informationen über die Jade Template-Engine, besuchen Sie Jade-lang.com.

Veröffentlichen der Website auf Azure nun, da Sie eine Node.js Website in Express lokal aufgebaut haben, wir veröffentlichen es auf Azure. Klicken Sie auf die Schaltfläche "veröffentlichen" in WebMatrix zum Starten des Prozesses. Das Veröffentlichungsprofil für Ihre Web Site zu importieren und Veröffentlichen-Assistenten zu folgen, wie in Abbildung 5.

Publish to Microsoft Azure
Abbildung 5 veröffentlichen Microsoft Azure

Wenn alles gut geht, wird WebMatrix Ihrer Web-Site in Internet Explorer geladen.

Die URL im Browser sollte der Azure-Website, auf dem Sie die Website veröffentlicht. Dies ist eine gute Veranschaulichung, wie einfach es ist zum entwickeln und Bereitstellen von Node.js Websites und Web-Services auf Azure. Jetzt nehme ich einen Moment MongoDB anzusehen. Ich komme zurück auf Node.js später, Web-Dienste zu erstellen.

MongoDB-Übersicht

MongoDB ist ein Open-source, skalierbare, leistungsstarke, dokumentenorientierte Datenbank, die meisten Infrastrukturfunktionen von relationalen Datenbanken, z. B. Replikation, Splitter, Indizierung und Failover enthält. MongoDB auch bietet Auto-Splitter und verfügt über integrierte Karte-Reduzierung Verarbeitungskapazitäten, die heute von den meisten relationalen Datenbanken angeboten sind nicht. Relationale Datenbanken wurden in einer Zeit entwickelt wo Speichersysteme teuer waren. Speichern von Daten in einer relationalen Format erlaubt Entwicklern, Speicherplatz zu optimieren, ohne schnelle Datenabfrage. In der Welt von heute ist Speicher billig Vergleich um die Kosten zu berechnen. In der Wolke weiter Lagerung Preise sinken. Infolgedessen ist speichern und Abrufen von Daten in relationalen Format teuer im Vergleich zu speichern in der Wolke. Die Nachfrage für kontinuierliche Datenlieferung ist auf dem Vormarsch, mehr Anwendungen, die Echtzeit-Daten aus Ihrem Datenspeicher erwartet. MongoDB können Sie Objekte und Dokumente zu speichern, ohne zu brechen sie in relationalen Komponenten. Dies reduziert die Verarbeitungslast auf die Anwendung, als auch die Datenbank.

MongoDB ist nicht für Anwendungen empfohlen, die Tiefe Objektbeziehungen erfordern, da es nicht vorgesehen ist nicht Objekt und Daten Beziehung verknüpfen, zu verwalten und abzurufen, wie relationale Datenbanken. Wenn Ihre Anwendung für den Abruf tiefe Beziehungen und SQL erfordert, verwenden Sie eine relationale Datenbank. Wenn Ihre Anwendung schnell-Objekt speichern und Abrufen von erfordert, verwenden Sie MongoDB. Wie ich vorhin vorgeschlagen hat, verwenden Sie das beste Werkzeug für den Job.

Bereitstellung von MongoDB in Azure

MongoDB ist als Add-on in der Azure-Store erhältlich und Sie können kostenlos eine Sandbox-Version installieren. Zu dem Azure-Portal einloggen und MongoDB (MongoLab) von neu installieren | Shop | Add-on-Menü, wie im Abbildung 6.

MongoDB Add-on from MongoLab
Abbildung 6 MongoDB Zubehör von MongoLab

Wählen Sie auf der Seite personalisieren Add-on die Sandbox-Version, und achten die MongoDB-Instanz in der gleichen Region als Ihre Web-Site zu installieren, wie in Abbildung 7.

Configuring MongoDB
Abbildung 7 konfigurieren MongoDB

Sobald die Installation abgeschlossen ist, navigieren Sie zu der Add-on-Seite und die Verbindungszeichenfolge für die installierte Datenbank zu speichern, wie in Abbildung 8. Sie werden die Verbindungszeichenfolge verwenden, um aus Ihrem Node.js Web Service zu verbinden.

Connection String for the Installed Database
Abbildung 8-Verbindungszeichenfolge für die installierte Datenbank

MongoDB läuft nun in Azure. MongoLab (von ObjectLabs Corp.) hat seinen eigenen dedizierten Management-Portal, das Sie anzeigen können, indem Sie auf den Link verwalten Ihre Add-ons anzeigen.

Sie haben nun eine MongoDB-Datenbank in der Cloud ausgeführt, und Sie haben eine leere Node.js-Vorlage erstellt. Um die Anwendung zu beenden, müssen Sie füllen die MongoDB-Datenbank, und erstellen Sie die Web-Services, die Daten aus dieser Datenbank abrufen. Dies ist die standard-Software-Entwicklung in der Cloud.

Installation Node.js Voraussetzungen für MongoDB-Konnektivität

JSON ist eine erstklassige Staatsbürger in MongoDB und daher ergänzt Node.js. Weil der Webdienst MongoDB herstellen, ich brauche den neuesten Node.js-Treiber für MongoDB aus der NPM-Galerie zu installieren (siehe Abbildung 9).

Node.js Driver for MongoDB
Abbildung 9 Node.js Treiber für MongoDB

Die Verbindungsinformationen MongoDB wird in einer Konfigurationsdatei gespeichert. Nconf-Modul können Sie Konfigurationsinformationen aus Dateien lesen (siehe Abbildung 10).

The nconf Module
Abbildung 10 Nconf Modul

Sobald die Mongodb und Nconf Module installiert sind, haben Sie die Voraussetzungen für das Einrichten einer Entwicklungsumgebung Node.js und MongoDB abgeschlossen.

Die REST Web Service Signaturen erstellen

Um einen REST-Webdienst zu erstellen, definieren Sie zuerst Abhängigkeiten und Routen in server.js:

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path'),
  pkgs=require('./routes/pkgs');

Anschließend definieren Sie die REST-Funktionen in der /routes/pkgs.js-Datei, weil im vorhergehenden Code, Sie die Funktion zum Pkgs Modul Behandlung delegieren. Erstellen Sie Routen im Ordner eine Datei namens pkgs.js, die den Webdienst definiert, wie in Abbildung 11.

Abbildung 11-REST-Vorgangssignaturen

exports.findAll = function(req, res) {
  res.send([{name:'app1'}, {name:'app2'}, {name:'app3'}]);
};
exports.findById = function(req, res) {
  res.send({id:req.params.id, 
  name: "DisplayName", description: "description"});
};
exports.addPkg = function (req, res) {
  res.send("Success");
};
exports.updatePkg = function (req, res) {
  res.send("Success");
};

Um die grundlegende Funktionsweise der Vorgänge zu testen, erstellen Sie einfach Funktion Skelette statische Daten zurückzugeben. Sie können die Datenbank Access-Code später hinzufügen. Server.js definieren Sie die Route-Methoden, die entsprechen auf die Modul-Methoden, die Sie gerade erstellt haben:

app.get('/pkgs', pkgs.findAll);
app.get('/pkgs/:id', pkgs.findById);
app.post('/pkgs', pkgs.addPkg);
app.put('/pkgs/:id', pkgs.updatePkg);

Wenn Sie mit der ASP.NET Web API vertraut sind, werden Sie schnell verstehen, diese Routen und deren Zuordnung zu den entsprechenden Implementierungsklasse. Mit der Route Erklärung und Zuordnung wird jede Anforderung an /pkgs an eine der Funktionen in pkgs.js weitergeleitet. Mit dem Web-Dienst Vorgangssignaturen und Definitionen vorhanden können Sie testen, ob die Routen ordnungsgemäß funktionieren durch Ausführen der Website lokal, als auch wie Azure. Die URLs zu testen sind: http://[Web-Site-URL] / Pkgs, http://[Web-Site-URL] / Pkgs/remote und http://[Web Site-Url] / Pkgs/1. Wenn diese URLs die erwarteten Werte zurückgeben, können die Routen arbeiten gut und Sie mit der MongoDB-Integration.

Durchführung der REST Web Service Maßnahmen

Jetzt müssen Sie die Web-Dienstvorgänge zum Verbinden MongoDB und Abrufen der Daten implementieren. Vier Schritten werden dies zu erreichen:

  1. Erstellen einer config.json-Datei, und speichern die Verbindungszeichenfolge MongoDB drin.
  2. Initialisieren den MongoDB-Client.
  3. Auffüllen von MongoDB mit Beispieldaten. In diesem Schritt die Funktion macht einen HTTP-GET-http://storage.appsforazure.com/appsforazureobjectstest/servicepackages.json anrufen und die abgerufenen Daten in die MongoDB-Instanz gespeichert.
  4. Umsetzung der Data-Access-Funktionen zum Abrufen und Speichern von Daten in MongoDB.

Erstellen die config.json Datei die config.json-Datei, die ähnlich wie in einem .NET "app.config" aber im JSON-Format speichert die Konfigurationsinformationen. Fügen Sie das folgende Name / Wert-Paar in die neue Datei:

{
  "MONGOLAB_URI" :
    "mongodb://nodeapps:xxxxxxxx.f.migd9GGB9Ck3M17jlkVCUVI-@ds027758.
mongolab.com:27758/nodeapps"
}

Der Wert ist die MongoDB-Verbindungszeichenfolge, die Sie zuvor aus dem Azure-Portal gespeichert.

In pkgs.js müssen Sie das Modul Nconf um die Konfigurationswerte lesen importieren:

var nconf = require('nconf');
nconf.env().file({ file: 'config.json' });
var connectionString = nconf.get("MONGOLAB_URI");

Die ConnectionString-Variable kann dann durch die Funktionen zum Herstellen einer Verbindung mit der MongoDB-Datenbank verwendet werden. Beachten Sie, dass die ConnectionString als globale Variable in pkgs.js deklariert wird, so dass es auf alle Funktionen zugreifen können.

Initialisieren den MongoDB-Client: Um eine Verbindung zur Datenbank MongoDB zu initialisieren, du musst das Mongodb-Modul importieren, und rufen Sie die Connect-Methode, siehe Abbildung 12.

Abbildung 12 verbinden mit MongoDB-Datenbank

var mongo = require('mongodb');
var MongoClient = mongo.MongoClient
MongoClient.connect(connectionString, function (err, db) {
  if (err) throw err;
  if (!err) {
    console.log("Connected to 'pkgsdb' database");
    db.collection('pkgs', { strict: true }, 
      function (err, collection) {
      if (err) {
        console.log(
          "The 'pkgsdb' collection doesn't exist.
Creating it with sample data...");
        populateDB(db);
      }
    });
  }
})

Wenn die Verbindung erfolgreich ist, die Db-Variable in Abbildung 12 enthält das Datenbank-Connection-Objekt. Die db.collection-Funktion versucht, Herstellen einer Verbindung mit einer Auflistung mit dem Namen pkgs. Wenn Pkgs nicht existiert, wird eine neue erstellt, durch Aufrufen der PopulateDB-Funktion. In einer realen Anwendung müssten Sie dies tun, weil die Sammlung tatsächlich entstehen würden, bevor Sie die Anwendung ausführen. (Eine Auflistung in MongoDB ist eine Gruppierung von Beiträge zu diesem Thema, analog zu einer Datenbank-Tabelle in einem relationalen Datenbanksystem.)

MongoDB mit Beispieldaten füllen für diesen Artikel, ich habe Beispieldaten zur Verfügung als eine Sammlung von Software-Paketen von dynamicdeploy.com. In der PopulateDB-Funktion, ich lade diese Sammlung im JSON-Format von http://storage.appsforazure.com/appsforazureobjectstest/servicepackages.json, siehe Abbildung 13.

Abbildung 13 Auffüllen der Datenbank

var populateDB = function (db) {
  var body = "";
  var url =
    "http://storage.appsforazure.com/appsforazureobjectstest/servicepackages.json";
  http.get(url, function (res2) {
    res2.on('data', function (chunk) {
      body += chunk;
    });
    res2.on("end", function () {
    var pkgs = JSON.parse(body)
    db.collection('pkgs', function (err, collection) {
      collection.insert(pkgs, { safe: true }, 
      function (err, result) { });
    });
    });
      res2.on("error", function (error) {
        // You can log here further
    })
  });

Beachten Sie, dass JSON eine erstklassige Bürger in Node.js, ist also Sie keines Modul zum analysieren die JSON-Objekte importieren müssen. Die collection.insert-Funktion fügt das gesamte JSON-Dokument (Var Pkgs) in die MongoDB-Auflistung. MongoDB bestimmt das Schema der Objekte zur Laufzeit und macht intelligente Entscheidungen über sie speichern. In einer relationalen Datenbank müssten Sie das Schema der Tabelle definieren, bevor alle Daten darin speichern. Eine Auflistung gibt Ihnen die Flexibilität, das Schema zur Laufzeit zu ändern, einfach durch Ändern der Eigenschaften der JSON-Objekte. Wenn die Objekteigenschaften ändern, gilt MongoDB diese Änderungen am Schema vor dem Speichern des Objekts. Dies ist nützlich für die Erstellung von Anwendungen, wie soziale und das Internet der Dinge RSS-Feeds, die mit Änderungen in Datentypen dynamisch ändern.

Umsetzung der Data-Access-Funktionen schließlich Sie implementieren müssen, die Daten-Access-Funktionen für das HTTP-GET, POST und PUT-Funktionen deklariert früher. Die HTTP-GET-Funktion zugeordnet ist die Funktionen FindById und FindAll im Dienst, wie in Abbildung 14.

Abbildung 14 die suchen-Funktionen

exports.findById = function (req, res) {
  var id = req.params.id;
  console.log('Retrieving pkg: ' + id);
  MongoClient.connect(connectionString, function (err, db) {
    if (err) throw err;
    if (!err) {
        db.collection('pkgs', function (err, collection) {
          collection.findOne({ '_id': new BSON.ObjectID(id) },
            function (err, item) {
            res.send(item);
            });
        });
      }
    })
  };
exports.findAll = function(req, res) {
  MongoClient.connect(connectionString, function(err, db) {
  if(err) throw err;
  if(!err) {
    db.collection('pkgs', function(err, collection) {
      collection.find().toArray(function(err, items) {
        res.send(items);
      });
    });
    }
  })
};

Die FindById-Funktion Ruft ein Objekt seine ID, während die FindAll-Funktion alle Objekte ruft. Funktionen collection.find­One collection.find abrufen und die Ergebnisse dieser Operationen von MongoDB, beziehungsweise. Ebenso Abbildung 15 zeigt die AddPkg-Methode, die eine HTTP-POST zugeordnet ist, und die UpdatePkg-Methode, die ein HTTP-PUT zugeordnet ist.

Abbildung 15 hinzufügen und Aktualisieren von Funktionen

exports.addPkg = function (req, res) {
  var pkg = req.body;
  console.log('Adding pkgs: ' + JSON.stringify(pkg));
  MongoClient.connect(connectionString, function (err, db) {
    if (err) throw err;
    if (!err) {
      db.collection('pkgs', function (err, collection) {
        collection.insert(pkg, { safe: true }, function (err, result) {
          if (err) {
            res.send({ 'error': 'An error has occurred' });
          } else {
            console.log('Success: ' + JSON.stringify(result[0]));
            res.send(result[0]);
          }
        });
      });
    }
  })
};
exports.updatePkg = function (req, res) {
  var id = req.params.id;
  var pkg = req.body;
  console.log('Updating pkgs: ' + id);
  console.log(JSON.stringify(pkg));
  MongoClient.connect(connectionString, function (err, db) {
    if (err) throw err;
    if (!err) {
      db.collection('pkgs', function (err, collection) {
        collection.update({ '_id': new BSON.ObjectID(id) },
          pkg, { safe: true }, function (err, result) {
          if (err) {
            console.log('Error updating pkg: ' + err);
            res.send({ 'error': 'An error has occurred' });
          } else {
            console.log('' + result + ' document(s) updated');
            res.send(pkg);
          }
        });
      });
    }
  })
};

Wenn Sie den Artikel bisher befolgt haben, sollten Sie auf eigene Faust eine Löschfunktion implementieren können. Ich lasse das als Übung für Sie. Speichern und die Website zuerst lokal ausführen und dann veröffentlichen auf Azure-Websites um jede REST-Funktion zu testen. Der vollständige Quellcode für den REST-Webdienst und die Website ist unter github.com/dynamicdeploy/appsforazure.

Sobald Sie die End-to-End-Anwendung ausgeführt haben, können Sie Ihre MongoDB Infrastruktur (oder Service) abhängig von der Benutzerauslastung skalieren. Wie dieser Artikel zeigt, brauchen Sie keine Infrastruktur groß angelegte Node.js und MongoDB-Websites auf Azure bereitstellen. Das Skelett, die ich in den zugehörigen Quellcode bereitgestellt wird Ihnen helfen, erste Schritte Erstellen von Webdiensten und Websites in Node.js auf Azure-Websites.

Zusammenfassung

Der Zweck dieses Artikels war, erhalten Sie komfortable Erstellung von Webdiensten in Node.js auf Azure-Websites. Node.js und MongoDB ergänzen einander und weil beide als Everything as a Service (PaaS) verfügbar sind, gibt es keine vorab Infrastruktur, die Kosten für den Aufbau einer kompletten Web Site und es dynamisch skalieren. Als Entwickler können Sie zum Erstellen und Verwenden von Webdiensten direkt aus der Wolke in Ihrer mobilen Anwendungen konzentrieren. Daher halte ich Azure Web-Sites PaaS richtig gemacht.

Tejaswi Redkar ist ein Autor und ein Softwareentwickler. Derzeit arbeitet er als Direktor der Anwendung Plattformstrategie und Gemeinschaften für Microsoft. Sein Buch "Windows Azure-Websites: Erstellen von Web-Anwendungen in einem rasanten Tempo"(Dynamic bereitstellen LLC, 2013), ist die umfassendsten und Best-Selling zum Thema. Redkar ist auch der Schöpfer der Appsforazure Windows-Speicher-App und dynamicdeploy.com, wo er Erfahrungen aus erster Hand ausgeführte Produktion Anwendungen in der Cloud. Sie erreichen ihn am tejaswi_redkar@hotmail.com und folgen Sie ihm auf Twitter bei twitter.com/tejaswiredkar.

Unser Dank gilt den folgenden technischen Experten für die Durchsicht dieses Artikels: Microsoft Azure das Product Managementteam