NodeJS for .NET web developers

Preview:

DESCRIPTION

by Ugo Lattanzi - Vuoi passare al lato oscuro? Questa è la sessione che fa per te. Un side by side tra il mondo .NET e quello NodeJs in modo da apprenderne vantaggi, differenze, frameworks da utilizzare. Il tutto orientato al web.

Citation preview

Ugo Lattanzi

NodeJs for .NET Web developers and Viceversa:

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, Websocket but also an helpful tool for developers

MILAN november 28th/29th 2014 – Ugo Lattanzi

Why is so cool?is javascript

is fast

optimised (low resources)

runs everywhere

MILAN november 28th/29th 2014 – Ugo Lattanzi

…but is also for nerd!

MILAN november 28th/29th 2014 – Ugo Lattanzi

everybody love it …

Ted Dziuba 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 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 into the view folder

to include a partial into your view is enough to use

@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 aren’t data annotation so the validation is “impractical” 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 mongoldb —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