SlideShare ist ein Scribd-Unternehmen logo
1 von 130
Downloaden Sie, um offline zu lesen
Node.js - Anwendungen
mit Visual Studio
entwickeln
#dwx14
feedback@developer-week.de
Speaker: Peter Hecker
Peter Hecker
• Seit 1986: „Entwickler, Trainer“
• Seit 1995: „Web-Entwicklung“
• Seit 2002: „ASP.NET"
• Seit 2009: „Mobile WebApps“
• Vorstand in der GFU Cyrus AG
GFU Cyrus AG
„Ihr Partner für IT-Schulungen“
s1694
Schulung: „Node.js für NET-Entwicker“
#dwx2014-Teilnehmer bekommen 20% Rabatt!
Agenda
• Einführung in Node.js
• Integration Node.js und .NET
• Web-Anwendungen mit Node.js
• Anwendungsfälle und Beispiele
• Fazit
#dwx14
Einführung in Node.js
#dwx14
Node.js
• Node.js ist eine plattformübergreifende
Laufzeitumgebung für JavaScript-Anwendungen.
• Node.js ermöglicht die einfache Entwicklung von
schnellen und skalierbaren JavaScript-
Anwendungen.
• Node.js JavaScript-Anwendungen laufen
typischerweise auf einem Server.
Der Erfinder
Ryan Dahl: „Node.js, Evented I/O for V8 Javascript“
JSConf.EU, Sunday November 8th, 2009
node.js in brief (2009)
• Server-Side JavaScript
• Built on Google’s V8
• Evented, Non-Blocking I/O
• CommonJS module system
• 8000 lines of C/C++, 2000
lines of JavaScript 

(14 Contributor)
http://www.youtube.com/watch?v=ztspvPYybIY
What ist V8?
• V8 is Google's open source high-
performance JavaScript engine,
written in C++ and used in
Google Chrome, the open source
browser from Google.
• It implements ECMAScript as
specified in ECMA-262, 3rd
edition, and runs on Windows XP
and Vista, Mac OS X 10.5+, and
Linux systems that use IA-32,
ARM or MIPS processors.
• V8 can run standalone, or can be
embedded into any C++
application.
https://developers.google.com/v8/
node standard library
node bindings
(http, socket, file system)
V8 thread pool
(libeio)
event loop
(libev)
cypto
(OpenSSL)
DNS
(c-ares)
JavaScript
C/C++
Node.js - Architektur
• Single Threaded
• Asynchronous
• Event Loop
• Non blocking I/O
Ryan Dahl
„I/O needs to be done differently“
Ryan Dahl
„In many cases, just waiting for the response“
Klassische Server
Multi-Threaded - Blocking I/O
http://blog.cloudfoundry.com/2012/06/27/future-proofing-your-apps-cloud-foundry-and-node-js/
Ryan Dahl
„This is the node.js project: To provide a purely evented, non-
blocking infrastructure to script highly concurrent programs“
Node.js
Single Threaded, Event Loop, Non-Blocking I/O
http://blog.cloudfoundry.com/2012/06/27/future-proofing-your-apps-cloud-foundry-and-node-js/
Single Threaded, Event
Loop, Non-Blocking I/O
• Weniger Speicherverbrauch
• Weniger CPU-Overhead
• Bessere Skalierbarkeit
Fundamentals
• Globals
• STDIO
• Timers
• Modules
• Events
• Buffers
• Streams
• C/C++ Addons
Network I/O
• HTTP
• HTTPS
• URL
• Query Strings
• Net
• UDP/Datagram
• DNS
File system I/O
• File System
• Path
Process I/O / V8 VM
• Process
• VM
• Child Processes
• Cluster
Terminal/Console
• REPL
• Readline
• TTY
Testing & debugging
• Assertion Testing
• Debugger
• Utilities
Misc
• Crypto
• TLS/SSL
• String Decoder
• ZLIB
• OS
http://nodejs.org/api/modules.html
Node.js Core Modules
npm - Der Node.js Paket Manager
https://www.npmjs.org/
Node.js - Homepage
http://nodejs.org/
Joyent
Das Unternehmen hinter Node.js und npm.
http://www.joyent.com
Integration
Node.js und .NET
#dwx14
Node.js und .NET
• Node.js für Windows
• http://nodejs.org/
• Node.js Tools for Visual Studio (NTVS)
• https://nodejstools.codeplex.com/
• Edge.js
• http://tjanczuk.github.io/edge/
„Hello World“
mit Node.js
VS.NET + NTVS
• Verschiedene Projektvorlagen
• Integration der Node.js-Paketverwaltung (npm)
• JavaScript-Code-Vervollständigung (Intellisense)
• Node.js-Interactive Window
• Node.js-Debugger-Integration
• Windows Azure Veröffentlichung
Edge.js
• npm-Module und nuget-
Pakete für die Integration von
Node.js und .NET auf
Prozessebene
• Für C#, F#, Python (mit
IronPython) und Windows
PowerShell
• Ganz aktuell auch für Mac
OSX und Linux
http://tjanczuk.github.io/edge/
„Edge.js is 32x faster
than a cross-process call“
https://github.com/tjanczuk/edge/wiki/Performance
npm install edge
Web-Anwendungen
mit Node.js
#dwx14
Web-Anwendungen
mit Node.js
• Architekturvergleich .NET / Node.js
• Module, Pakete und Abhängigkeiten in Node.js
• Einfache Web-Server in Node.js
• Das Node.js MVC-Framework „Express“
.NET versus Node.js
Software-Architekturvergleich
IIS / ASP.NET / .NET Node.exe / Node Modules
C# / VB.NET / etc. JavaScript
EF/SQL Server NoSQL (MongoDB)
ASP.NET MVC / Razor Express + Jade/Razor
ASP.NET WebForms Express + EJS
ASP.NET WebAPI Express
SignalR WebSockets (Socket.IO)
http://mongodb.org/
http://expressjs.com/
http://socket.io/
Module, Pakete und
Abhängigkeiten in
Node.js
CommonJS
http://www.commonjs.org/
Einfache Web-Server
in Node.js
node web modules
http://nodewebmodules.com/
Express Framework
http://expressjs.com/
Das Node.js
MVC-Framework
„Express“
Installation
Die Node.js-View
Engine „Jade“
npm install jade --save
http://jade-lang.com/
Die Node.js-View
Engine „EJS“
npm install ejs --save
http://embeddedjs.com/
EJS-Hinweise
• Standardmäßig keine Layout-Konzepte!!
• Zusätzliche npm-Projekte
• ejs-locals
• https://github.com/RandomEtc/ejs-locals
• express-ejs-layouts
• https://github.com/Soarez/express-ejs-layouts
• express-partials
• https://github.com/publicclass/express-partials
Die Node.js-View
Engine „Vash“
npm install vash --save
https://github.com/kirbysayshi/vash
Erstellen eines
Node.js-Controllers
Erstellen eines
Node.js-Datenservice
Statische Ressourcen
in Node.js einbinden
Anwendungsfälle und
Beispiele
#dwx14
Node.js
für Web-Entwickler
Grunt
http://gruntjs.com/
Bower
http://bower.io/
Yeoman
http://yeoman.io/
Anwendungsfälle
• The Internet of Things
• E-Commerce
• Payment Processing
• Social Media
• Realtime Services
• Media
• Enterprise Web Services
IBM und Node.js
• „When you add thousands of
devices to a network it’s going
to be impossible to program in
the same way we program
computers today. IBM is
working on Node-RED a tool
to help “wire” the internet of
things.“
http://nodered.org/
LinkedIn und Node.js
• Anforderung: 

„Mobilen App-Infrastruktur“
• Weniger Code
• Weniger Ressourcen - von 30
auf 3 Server
• Schneller - teilweise bis 20x
• Stabiler
http://highscalability.com/blog/2012/10/4/linkedin-moved-from-rails-to-node-27-servers-cut-and-up-to-2.html
Groupon und Node.js
• Anforderung: 

„50.000 Requests / Minute“
• Node.js-Infrastruktur schafft
diese Datenverkehr mit
weniger Hardware
• Ladezeiten verbessern sich
um 50%
• Globale Änderungen lassen
sich schneller realisieren und
verteilen
http://www.datacenterknowledge.com/archives/2013/12/06/need-speed-groupon-migrated-node-js/
Walmart und Node.js
• Anforderung: 

„Black Friday“
• 55% des Datenverkehrs
wurde über Node.js-Server
verarbeitet, ohne einen
einzigen Serverausfall
• Die durchschnittliche CPU-
Auslastung lag bei 1%
• Softwareverteilung bei
200.000.000 aktiven Nutzern
http://www.joyent.com/developers/videos/node-js-at-walmart-going-to-production-debugging-monitoring
Yahoo und Node.js
• Ca. 200 Entwickler
programmieren für Node.js
• 500 interne Node-Module
• 800 externe Node-Module
• Node.js-Services verarbeiten
bis zu 2.000.000 Requests /
Minute
Build 2013 - Channel 9
June 28, 2013:
„Doug Crockford and Steve Lucco on JavaScript“
Paypal und Node.js
• Anforderung: 

„Java versus JavaScript“
• Weniger Entwickler, weniger Code
(LoC) in der Hälfte der Zeit
• Verdoppelung der Anzahl der
Anfragen pro Sekunde (Requests/sec)
• Steigerung der Antwortzeit um 35%
auf 200 ms
• Umsetzung von 12 Node.js-
Anwendungen in sechs Monaten
• Alle zukünftigen Anwendungen
werden in Node.js entwickelt
Bill Scott: “Clash of the Titans: Releasing
the Kraken NodeJS @paypal"
http://www.youtube.com/watch?v=tZWGb0HU2QM
Fazit
#dwx14
Die ersten Erfahrungen
mit Node.js
• Weniger Serverkapazitäten
• Weniger Seitenladezeit
• Weniger Entwicklerkapazitäten
• Mehr zufriedene Kunden
• Mehr zufriedene Entwickler
Typische
Node.js - Anwendungen
• NoSQL-CRUD
• REST-Architekturen
• Streaming
• Real-Time
• Single-Page-Application
• One Web-App - One-Language
„Das war’s“
Viel Spaß noch auf der #DWX14
#dwx14
feedback@developer-week.de

Weitere ähnliche Inhalte

Was ist angesagt?

Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay Portal
Stefan Hilpp
 

Was ist angesagt? (9)

JavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UXJavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UX
 
OSMC 2014: Icinga Web 2 kann mehr | Thomas Gelf
OSMC 2014: Icinga Web 2 kann mehr | Thomas GelfOSMC 2014: Icinga Web 2 kann mehr | Thomas Gelf
OSMC 2014: Icinga Web 2 kann mehr | Thomas Gelf
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay Portal
 
Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.Echtzeitvisualisierung von Twitter und Co.
Echtzeitvisualisierung von Twitter und Co.
 
HTML5-Features
HTML5-FeaturesHTML5-Features
HTML5-Features
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?
 

Ähnlich wie JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den Node.js-Tools entwickeln

Ähnlich wie JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den Node.js-Tools entwickeln (20)

WorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-ToolsWorNet Präsentation: Web 2.0, clevere IT-Tools
WorNet Präsentation: Web 2.0, clevere IT-Tools
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
 
Graphing mit Graphite (Webinar vom 06.11.2013)
Graphing mit Graphite (Webinar vom 06.11.2013)Graphing mit Graphite (Webinar vom 06.11.2013)
Graphing mit Graphite (Webinar vom 06.11.2013)
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue Normal
 
Echtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & CoEchtzeitvisualisierung von Twitter & Co
Echtzeitvisualisierung von Twitter & Co
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Nanoservice Architekturen
Nanoservice ArchitekturenNanoservice Architekturen
Nanoservice Architekturen
 
NETWAYS Cloud - Der Weg zur eigenen VM (Webinar vom 15. Juli 2016)
NETWAYS Cloud - Der Weg zur eigenen VM (Webinar vom 15. Juli 2016)NETWAYS Cloud - Der Weg zur eigenen VM (Webinar vom 15. Juli 2016)
NETWAYS Cloud - Der Weg zur eigenen VM (Webinar vom 15. Juli 2016)
 
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
DACHNUG50 Erfolgreiche Digitalisierung Notes Anwendungen mit Low Code L”sung ...
 
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen by Adam Augustin
 
Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue Normal
 
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam AugustinFMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam Augustin
FMK2019 FileMaker Data API mit Node.js nutzen - Workshop by Adam Augustin
 

Mehr von Peter Hecker

Mehr von Peter Hecker (14)

Ist Open Source ein Ersatz für kommerzielle RPA-Tools?
Ist Open Source ein Ersatz für kommerzielle RPA-Tools?Ist Open Source ein Ersatz für kommerzielle RPA-Tools?
Ist Open Source ein Ersatz für kommerzielle RPA-Tools?
 
Vom Framework zur App - Ein Blick in das React-Ökosystem
Vom Framework zur App - Ein Blick in das React-ÖkosystemVom Framework zur App - Ein Blick in das React-Ökosystem
Vom Framework zur App - Ein Blick in das React-Ökosystem
 
Was darf’s denn sein: Angular, React, Vue.js – Über Frontend-Entwicklung im J...
Was darf’s denn sein: Angular, React, Vue.js – Über Frontend-Entwicklung im J...Was darf’s denn sein: Angular, React, Vue.js – Über Frontend-Entwicklung im J...
Was darf’s denn sein: Angular, React, Vue.js – Über Frontend-Entwicklung im J...
 
TypeScript - Gut genug für große Anwendungen? Oder nur Brückentechnologie für...
TypeScript - Gut genug für große Anwendungen? Oder nur Brückentechnologie für...TypeScript - Gut genug für große Anwendungen? Oder nur Brückentechnologie für...
TypeScript - Gut genug für große Anwendungen? Oder nur Brückentechnologie für...
 
AngularJS für .NET-Entwickler
AngularJS für .NET-EntwicklerAngularJS für .NET-Entwickler
AngularJS für .NET-Entwickler
 
Cross Plattform Apps mit Visual Studio und Apache Cordova
Cross Plattform Apps mit Visual Studio und Apache CordovaCross Plattform Apps mit Visual Studio und Apache Cordova
Cross Plattform Apps mit Visual Studio und Apache Cordova
 
NRWConf - Workshop Mobile Apps
NRWConf - Workshop Mobile AppsNRWConf - Workshop Mobile Apps
NRWConf - Workshop Mobile Apps
 
JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...
JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...
JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...
 
JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...
JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...
JavaScript nicht nur für Programmierer: Einblicke in die weltweit am meisten ...
 
Mobile Websites und (Web)-Apps mit jQuery Mobile
Mobile Websites und (Web)-Apps mit jQuery MobileMobile Websites und (Web)-Apps mit jQuery Mobile
Mobile Websites und (Web)-Apps mit jQuery Mobile
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.
 
Internet Marketing
Internet MarketingInternet Marketing
Internet Marketing
 
.NET und jetzt!
.NET und jetzt!.NET und jetzt!
.NET und jetzt!
 

JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den Node.js-Tools entwickeln