node.js on windows azure

35
Node.js on Windows Azure Name Title Microsoft Corporation

Upload: nuru

Post on 11-Feb-2016

53 views

Category:

Documents


0 download

DESCRIPTION

Node.js on Windows Azure. Name Title Microsoft Corporation. Agenda. What is node.js? When to use node.js? Node.js on Windows Azure. What is node.js?. JavaScript on the Server! Event driven I/O server-side JavaScript Not thread based, each connection uses only a small heap allocation - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Node.js on  Windows  Azure

Node.js on Windows Azure

NameTitle Microsoft Corporation

Page 2: Node.js on  Windows  Azure

Agenda

What is node.js?

When to use node.js?

Node.js on Windows Azure

Page 3: Node.js on  Windows  Azure

What is node.js?

JavaScript on the Server!Event driven I/O server-side JavaScriptNot thread based, each connection uses only a small heap allocationEfficient and highly scalable

Page 4: Node.js on  Windows  Azure

JavaScript Server

Started 2009 by @ryahOpen Source (MIT license)Sponsored by Second most popular project on GitHub

Node process

V8 runtime

Your app.js

Page 5: Node.js on  Windows  Azure

Work queue

Async Model

Single-threaded event loopThread must not stop for anything!

Run DB query

Page 6: Node.js on  Windows  Azure

Doing CPU intensive processingVideo transcoding, etc.Though it could proxy to a transcoder

“Forms over data” CRUD appsRails/ASP.NET give you more

Realtime commsSockets, polling, etc.

Custom network servicesMedia servers, proxies, etc.

JSON web servicesThin app layer on top of a datastore

Client-oriented web UIsAnything you’d build with Sinatra

Node is…Excellent for: OK for:

Wrong for:

Page 7: Node.js on  Windows  Azure

ProsJavaScriptCommon to almost all developersSame language on server & client

Clean, consistent API

Simple concurrency modelEven low-skilled devs can manage it

Idle connections are nearly freeLong polling? No problem.Very high capacity for concurrent reqs

Very modularPlug in whatever behaviors you need

Not a lot of standard frameworkTesting? Validation? Pick your own approach…

Young & not yet widely deployed

Pretty bare-metalNot aimed at drag-drop devs...!

ConsPros and Cons

Page 8: Node.js on  Windows  Azure

Application Frameworks

Connect Standard middleware

Routing + Templates (like Sinatra)

Full-stack MVC (wants to be like Rails)

(fab) Totally bizarre DSL for combining modules

Ni Full-stack MVC (wants to be like Rails)

Inspired by ASP.NET MVC

Page 9: Node.js on  Windows  Azure

Node.js on Windows

Native node.exe IISNode – a native IIS 7.x module that allows hosting of node.js applications in IISMost modules supported as isPerformance on par with Linux implementation

Page 10: Node.js on  Windows  Azure

IIS NodeProcess managementScalability on multi-core serversAuto-updateAccess to logs over HTTPSide by side with other content typesMinimal changes to node.js application codeIntegrated management experience

Page 11: Node.js on  Windows  Azure

IIS Node

<configuration><system.webServer><handlers><add name="iisnode"

path="app.js"verb="*"modules="iisnode" />

</handlers> </system.webServer>

</configuration>

IIS

iisnode (native module)

Page 12: Node.js on  Windows  Azure

Node Package ManagerPackage manager for nodeAllows you to easily add modules to your applicationUse through the command line:C:\nodehello> npm install express

Page 13: Node.js on  Windows  Azure

NPM – Node Package Manager

coffee-script

express

connect

socket.io

jade

redis

async vows request

> npm install somepackage

Page 14: Node.js on  Windows  Azure

Install node.js on WindowsSingle Install: node.js + npmDownload: bit.ly/nodejsdownload

Page 15: Node.js on  Windows  Azure

Hello World

Page 16: Node.js on  Windows  Azure

Node.js “Hello World”

server.js File:

var http = require('http');

http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'});

res.end('Hello, world! ');}).listen(80);

Page 17: Node.js on  Windows  Azure

Run node.js “Hello World”

C:\nodehello> node.exe server.js

Page 18: Node.js on  Windows  Azure

Node.js “Hello World”

Page 19: Node.js on  Windows  Azure

Node.js + Express

demo

Page 20: Node.js on  Windows  Azure

Node.js On Windows Azure

Page 21: Node.js on  Windows  Azure

Node.js on Windows Azure

Web RoleUses IISNode

Worker RoleRuns node.exe as role entry point

PowerShell CmdletsWindows Azure SDK for node.js

Page 22: Node.js on  Windows  Azure

Visual Studio Not Required

Create, run, and publish all from outside of Visual StudioUse command line and editor

or IDE of your choice

Page 23: Node.js on  Windows  Azure

Installation

Single Install using Web Platform InstallerNode.jsIISNodeNPM for WindowsWindows Azure EmulatorsWindows Azure Authoring Components Windows Azure PowerShell for node.js

Page 24: Node.js on  Windows  Azure

Node Roles

Node Web Role

IIS

iisnode (native module)

Node Worker RoleRole

Role Entry Point

Page 25: Node.js on  Windows  Azure

PowerShell Cmdlets

Create Hosted ServiceLaunch Node application in local emulatorSet configuration settingsDeploy to Windows Azure

Page 26: Node.js on  Windows  Azure

Create a Project

Page 27: Node.js on  Windows  Azure

Add Web Role

Page 28: Node.js on  Windows  Azure

Start Local Emulator

Page 29: Node.js on  Windows  Azure

Windows Azure Node SDK

Windows Azure StorageBlobsTablesQueues

> npm install azure

Page 30: Node.js on  Windows  Azure

Blob Storage Examples

var azure = require('azure'); var blobClient = azure.createBlobService();

// Create Blob from Text var text = 'the text of my blob'; blobClient.createBlockBlobFromText('mycontainer', 'myblob', text, function (error, blockBlob, response) {

// Blob created });

// Get Blob Text blobClient.getBlobToText('mycontainer', 'myblob', function (error, text, blockBlob, response) {

// Blob text retrieved });

// Delete Blob blobClient.deleteBlob('mycontainer', 'myblob', function (error, isSuccessful, response) {

// Container deleted });

Page 31: Node.js on  Windows  Azure

Table Storage Examples

var azure = require('azure'); var tableClient = azure.createTableService();

// Insert Entity var item = new MyEntity(); item.PartitionKey = 'part1'; item.RowKey = uuid(); tableClient.insertEntity('mytable', item, function (error, entity, response) {

// Entity saved });

// Query Entity tableClient.queryEntity('mytable', item.PartitionKey, item.PartitionKey, function (error, successful, response) {

// Do something });

// Delete Entity tableClient.deleteEntity('mytable', item, function (error, entity, response) {

// Entity deleted });

Page 32: Node.js on  Windows  Azure

Storage Queue Example

var azure = require('azure');

var queueClient = azure.createQueueService();

// Enqueue a Message

queueClient.createMessage('myqueue', 'my message text',

function (error, queueMessageResult, response) {

// Do something });

// Get Messages

queueClient.getMessages('myqueue',

function (error, queueMessageResults, response) {

// Do Something

});

Page 33: Node.js on  Windows  Azure

Task List

demo

Page 34: Node.js on  Windows  Azure

Summary

Node.js OverviewIIS NodeNode Modules + NPMNode.js + Windows AzureWindows Azure SDK for node.js

Page 35: Node.js on  Windows  Azure

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to

be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.