Nodejs for .NET web developers

Preview:

DESCRIPTION

The slides used during the talk "NodeJS for .NET Web Developers" from the Codemotion Conference (http://www.codemotionworld.com/) on the 28 November in Milan.

Citation preview

Ugo Lattanzi

NodeJs for .NET Web developers and vice versa:

Meet the Dark Side of development

Head of Technologies at Gaia (http://gaia.is.it)@imperugoimperugo@gmail.com http://tostring.it

MILAN november 28th/29th 2014 - @imperugo

MILAN november 28th/29th 2014 – Ugo Lattanzi

What is node?

Node.js® is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-

driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across

distributed devices.

MILAN november 28th/29th 2014 – Ugo Lattanzi

What can I do with Node?

Http, networking, Websockets but also it is an invaluable tool for developers

MILAN november 28th/29th 2014 – Ugo Lattanzi

Why is it so cool?it’s javascript

it’s fast

optimised (low resources)

runs everywhere

MILAN november 28th/29th 2014 – Ugo Lattanzi

but it’s also for nerd!

MILAN november 28th/29th 2014 – Ugo Lattanzi

everybody loves it …

except Ted Dziuba, he defined “Node Js a cancer”

http://teddziuba.com/2011/10/node-js-is-cancer.html

(post removed)

MILAN november 28th/29th 2014 – Ugo Lattanzi

Node vs .NETIIS => Node.exe

C# / VB => Javascript

NuGet => npm

ASP.NET WebForm => Express + EJS

ASP.NET MVC => Express + Vash

ASP.NET WebAPI => Express

SignalR => Socket.io

MILAN november 28th/29th 2014 – Ugo Lattanzi

Visual Studio addicted?

don’t worry, there is a free and open source plugin (NTVS) that turns Visual Studio into a Node.js IDE

http://nodejstools.codeplex.com/

NTVS supports Editing, Intellisense, Profiling, npm, TypeScript, Debugging locally and remotely (Windows/MacOS/Linux), as well as

Azure Web Sites and Cloud Service.

MILAN november 28th/29th 2014 – Ugo Lattanzi

Async

MILAN november 28th/29th 2014 – Ugo Lattanzi

Async

http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js

MILAN november 28th/29th 2014 – Ugo Lattanzi

Async

http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js

MILAN november 28th/29th 2014 – Ugo Lattanzi

Async

MILAN november 28th/29th 2014 – Ugo Lattanzi

Let’s start

MILAN november 28th/29th 2014 – Ugo Lattanzi

npm init

npm install express —save

npm install vash —save

express.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

package.json is the same thing of packages.config in nuget and npm install restore the missing packages

express.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

express.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

express.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

express.js / aspnetControllers

Model

Views

public ??

MILAN november 28th/29th 2014 – Ugo Lattanzi

express.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

vash (@razor)

Vash is a template engine that offers a swift flow between code and content using Razor Syntax

it supports master pages, partial, helpers and so on

it isn’t a porting of Razor View Engine but is very similar

the file extension for the views is .vash

MILAN november 28th/29th 2014 – Ugo Lattanzi

vash (@razor)

MILAN november 28th/29th 2014 – Ugo Lattanzi

vash (@razor)

partials are simple html files in the view folder

to include a partial in your view all you have to do is

@html.include(‘name_of_the_partial’)

MILAN november 28th/29th 2014 – Ugo Lattanzi

vash (@razor)

MILAN november 28th/29th 2014 – Ugo Lattanzi

How to manage 404 and 500?

add your view to the end of routing :-)

express.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

express.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

It’s very similar to render view but without the render command :)

express.js (API)

MILAN november 28th/29th 2014 – Ugo Lattanzi

express.js (API)

MILAN november 28th/29th 2014 – Ugo Lattanzi

there isn't data annotation so validation is more "challenging" than .net

express-validator is a cool middleware for Express.Js that helps you to validate input data

npm install express-validator —save

express.js (validation)

MILAN november 28th/29th 2014 – Ugo Lattanzi

express.js (validation)

MILAN november 28th/29th 2014 – Ugo Lattanzi

express middleware

npm install body-parser —save

npm install compression —save

npm install cookie-parser —save

npm install express-mailer —save

npm install express-session —save

MILAN november 28th/29th 2014 – Ugo Lattanzi

database

of course you can use MS Sql Server (npm install mssql —save)

but

MongoDb “could be better” with Node (npm install mongodb —save)

MILAN november 28th/29th 2014 – Ugo Lattanzi

database

MILAN november 28th/29th 2014 – Ugo Lattanzi

database

MILAN november 28th/29th 2014 – Ugo Lattanzi

edge.js

An edge connects two nodes. This edge connects Node.js and .NET. V8 and CLR/Mono - in process. On Windows, MacOS, and Linux.

MILAN november 28th/29th 2014 – Ugo Lattanzi

edge.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

edge.js

MILAN november 28th/29th 2014 – Ugo Lattanzi

Node vs .NET

C# => NodeJs

F# => NodeJs

Python => NodeJs

TSQL => NodeJs

Powershell => NodeJs

MILAN november 28th/29th 2014 – Ugo Lattanzi

slide and demo

http://tostring.it (next days)

MILAN november 28th/29th 2014 – Ugo Lattanzi

Q/A

MILAN november 28th/29th 2014 – Ugo Lattanzi