Settembre 2015
Volume 30 Numero 9
Il presente articolo è stato tradotto automaticamente.
Il lavoro programmatore - come essere media: Node.js
Da Ted Neward | Settembre 2015
Microsoft è stata adottare la tecnologia da in spettro software come parte della relativa attribuzione dei marchi usando e "re-relevancing". Una delle tecnologie che ha adottato è Node. js. In questo modo gli sviluppatori opportunità irripetibili per utilizzare uno dei più popolari raggruppamenti full stack software sulla piattaforma Node. js nota come Media: MongoDB, Express, AngularJS e Node.js.
Il numero precedente (msdn.microsoft.com/magazine/mt185576), ho parti Node. js di base su e in esecuzione. In questo oggetto, verrà lasciamo un endpoint del nodo "Hello World" Web semplice e distribuirlo a un sito Web di Microsoft Azure. Tramite le rate più avanti, lentamente creerò in rassegna stack medio, partendo da zero.
Come descritto nell'articolo precedente, esistono una vasta gamma di posizioni di cui potrei scambiare parti dello stack medio per qualcos'altro, DocumentDB per MongoDB, WebAPI di ASP.NET per Node. js e ASP.NET MVC per Express o BackboneJS (o uno qualsiasi di una serie completa di altri framework JavaScript applicazione pagina singolo) per AngularJS, ma nessuna delle alternative piace la popolarità che attualmente contiene Media (almeno tra JavaScript aficionados).
Node.js
Node. js è fondamentalmente semplicemente "JavaScript sul server". Sì, è disponibile un approccio di programmazione diverso per Node. js che tenta di gestire l'esecuzione simultanea. Invece di blocco su una chiamata, il programmatore passa in una funzione letterale da richiamare al completamento dell'operazione. Questo consente allo sviluppatore di pensare a codice a thread singolo, anche se più thread sono in uso sotto la superficie. Nel complesso, tuttavia, la differenza più grande di Node. js è che utilizzare JavaScript per creare i componenti server, in c#, Java o Ruby. In tal senso è semplicemente una modifica di scenari, non un universo completamente diverso.
La più semplice applicazione Node. js è, ovviamente, l'universale "Hello, World", che è possibile scrivere facilmente utilizzando l'oggetto console predefinite:
console.log("Howdy, NodeJS!");
Supponendo che questo va in un file denominato Hello nella directory corrente, eseguire tramite l'utilità di nodo nella riga di comando utilizzando nodo Hello. Oppure è possibile consentire Node. js dedurre l'estensione del file per la semplice esecuzione "nodo hello". In entrambi i casi, nodo augura buon nel modo tradizionale.
Come la maggior parte delle piattaforme di programmazione, Node. js dispone di un proprio set di librerie e API all'esterno della casella. Come ho fatto notare l'ultima volta, Node. js utilizza la convenzione per fare riferimento a una libreria installata richiedono. Si registra l'oggetto restituito in una variabile locale con lo stesso nome. Quindi, ad esempio, se desidera scrivere un semplice server HTTP che effettivamente forniscano il saluto stesso tramite il protocollo HTTP, è possibile inserire le operazioni seguenti in un helloHTTP.js semplice file:
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);
La riga richiesta consente di trovare la libreria "http" all'interno dell'installazione di Node. js e archivia tale oggetto http nell'inserimento di dipendenze. Questa è una convenzione standard di Node. js e deve essere mantenuta come piuttosto sacrosanct. La seconda riga utilizza l'oggetto processo incorporato per accedere all'ambiente circostante. In questo caso, utilizza l'oggetto "env" all'interno dell'oggetto processo per determinare se una variabile di ambiente denominata porta è impostata su un valore. Se si tratta, utilizzerò che la porta su cui eseguire il server. In caso contrario, si utilizzerà la porta predefinita 3000. Molti framework di Node. js preferiscono porta 3000 come impostazione predefinita, per motivi storici e culturali incomprensibili.
La natura della programmazione di Node. js diventa più chiara nelle righe successive. Utilizzo l'oggetto http per creare un server HTTP. L'unico parametro è un valore letterale di funzione che accetta un oggetto (richiesta HTTP) req e oggetto res (risposta HTTP) come parametri e utilizza res la riscrittura della risposta HTTP. Questo linguaggio è ampiamente utilizzato in tutti i livelli dello stack di Node. js.
Questo è uno di questi tipi "apprezzo o si odiano" di elementi. Il verrà contenere più di questo tipo in articoli a venire. Pertanto se non è chiaro, dedicare alcuni esperimenti di tempo. L'oggetto restituito da createServer viene quindi associato a una porta utilizzando la chiamata di ascolto. Ecco, è presente un server HTTP in esecuzione, che è possibile eseguire facilmente utilizzando "nodo helloHTTP" e verso un browser l'indirizzo http://localhost:3000/.
Strumenti da riga di comando di Azure
Dal mio ultimo articolo, si ricordi che Node. js è un'utilità pacchetto chiamata nodo package manager (npm) è possibile utilizzare per scaricare le librerie dipendenti. È possibile inoltre utilizzare per il download è quindi possibile utilizzare gli strumenti da riga di comando. Questo è un aspetto sottile, ma potente, di Node. js. Agisce come un indipendente dalla piattaforma "campo d'azione equalizzatore".
È possibile nascondere in modo efficace eventuali differenze tra Windows, Mac OS o Linux dietro una parete di script JavaScript. Selezione in questo tempo fa da Microsoft e compresse un set di strumenti da riga di comando in un pacchetto Node. js denominato cli di azure. L'installazione è semplice con npm:
npm install –g azure-cli
Il flag -g indica npm per installare gli strumenti "globale" (vale a dire che non è correlati alla directory locale in cui viene eseguito il comando). In questo modo il pacchetto risultante disponibili per l'utilizzo nell'intero sistema. Al termine, una nuova utilità della riga di comando, azure, saranno disponibili per l'utilizzo. Il pacchetto di azure-cli non fornisce alcuna funzionalità maggiore o minore rispetto all'utilizzo del portale di Azure. Spetta vantaggio dello strumento azure cli nella sua capacità di comandi script azure come parte di un processo automatico distribuisce sistema, ad esempio.
Distribuire in Azure
Pertanto, se si desidera che questo piccolo bel greeting affinché siano disponibili per il mondo tramite Internet, è necessario creare un sito Web di Azure come host. Utilizzando lo strumento "azure", è piuttosto semplice. In primo luogo, è necessario associare lo strumento per l'account in Azure:
azure account download
Verrà avviata browser predefinito del sistema che punta al portale di Azure login. Utilizzare le credenziali dell'account Azure per l'accesso. Al termine, esso verrà scaricata automaticamente un file publishSettings contenente le informazioni sulle credenziali delle esigenze di strumento di azure, che possono essere importate direttamente:
azure account import <filename>
Nome del file sarà spesso qualcosa di simile a "Visual Studio Ultimate con MSDN-4-23-2015-c:\Users\<profiloutente>\downloads\<nomesottoscrizione>-Credentials.publishsettings," seconda i dettagli della sottoscrizione Azure e la data che è scaricare il file. publishSettings. Al termine dell'operazione, è sufficiente per creare un nuovo sito Web di Azure mediante l'impostazione Git per eseguire distribuzioni al sito:
azure site create –git
Questo richiederà un nome di sito e (presupponendo che tale nome è univoco) avviare il sito Web appropriato. Se tutto funziona, creare la directory corrente come un repository locale inizializzata git. Supponendo che si è ancora nella stessa directory che contiene il file helloHTTP.js dalla prima, è possibile aggiungerlo al repository Git e inserirla nel cloud Azure:
git add helloHTTP.js
git commit –m "Initial commit"
git push azure master
GIT verrà pensano per alcuni secondi. Quindi passa attraverso una sequenza di passaggi che rimangono opaco per il momento. Quando il completamento, tuttavia, Azure conterrà il nuovo codice Node. js ed è possibile esplorare, come illustrato nella Figura 1.
Figura 1 Hello, World di nodo
Ecco perché il codice helloHTTP utilizza la porta predefinita 3000 o la porta di variabili di ambiente dal processo circostante. Nel cloud di Azure, porta è impostata su un valore che gestisce l'infrastruttura di Azure. Si tratta pertanto Microsoft possono gestire vari endpoint di servizio in modo più efficiente.
Questa è l'ultimo dei passaggi di installazione che è necessario eseguire. Onestamente, richiede più tempo per leggere le informazioni rispetto a quello impiegato per eseguire i comandi, una volta oltre le fasi di installazione iniziale. E anche più Onestamente, qualsiasi lavoro Azure o esplorazione richiedono tipi simili del programma di installazione. Azure rappresenta una piattaforma di passaggi successivi per molte attività di sviluppo. In altre parole, è un elemento che è necessario sapere come eseguire alla fine, pertanto è possibile anche informazioni sull'argomento sono ora.
A questo punto, tutto ciò sarà correlati alla Media. L'unica volta che sarà necessario per visualizzare i dettagli di Azure in mente è quando è necessario configurare l'ambiente in modo che punti al server di database MongoDB, ad esempio, o quando si gestiscono l'interazione di Azure Node. js.
Avvolgendo
È importante sottolineare che Node. js non è una pipeline di HTTP. In effetti, nodo può eseguire qualsiasi tipo di applicazione in rete aprendo la libreria di destra. Lo stesso accade in Microsoft .NET Framework. Tuttavia, come .NET Framework, la maggior parte delle applicazioni Node. js saranno basate su HTTP in natura.
La libreria di http in Node. js è piuttosto basso livello. Di conseguenza, la community di Node. js sviluppato una libreria di livello superiore e serie di astrazioni per semplificare la gestione di endpoint basati su HTTP. Questa libreria viene chiamata Express. Consente di compilare quali le Node. js community chiamate "middleware". Ecco cosa parlerò di fase successiva.
Per ora, provare con la libreria http Node. js, ma non ancora collegato troppo, poiché c' dietro pretty rapidamente una volta che viene visualizzato nell'iterazione successiva. Nel frattempo, tuttavia...
Buona codifica.
Ted Newardè CTO iTrellis, una società di servizi di consulenza. Egli ha scritto oltre 100 articoli e creati o coautore di numerosi libri, tra cui "Professional F # 2.0" (Wrox, 2010). È un MVP di F # e come relatore a conferenze in tutto il mondo. Fornisce consulenze e mentors regolarmente, contattarlo all'indirizzo ted@tedneward.com o ted@itrellis.com se si è interessati.
Grazie all'esperto tecnica seguente per la revisione di questo articolo: Shawn Wildermuth
Shawn Wildermuth è un MVP ASP.NET (/, ora di termine di tredici Microsoft IIS), l'autore di otto libri e decine di articoli sullo sviluppo di software e autore di Pluralsight con oltre 15 corsi per il proprio nome. È una delle menti Wilder (http://wilderminds.com) ed è possibile contattarlo sul suo blog al http://wildermuth.com.