INTRODUCTION
Manuel Rauber
[email protected]
@manuelrauber
https://manuel-rauber.com
Slide 3
Slide 3 text
TALKING POINTS
Web APIs
Node.js
Restify
Token
Authentication
Databases
Examples
Slide 4
Slide 4 text
WEB APIS
Slide 5
Slide 5 text
WEB APIS - OVERVIEW
Slide 6
Slide 6 text
WEB APIS - OVERVIEW
REST APIs, HTTP APIs, whatever APIs
Model functional services with dedicated interfaces
Can use several other services for data aggregation
Secured by tokens
Consumable by every client which can speak
HTTP(S)
Slide 7
Slide 7 text
NODE.JS
Slide 8
Slide 8 text
NODE.JS IS
NOT
JQUERY IN COOL ;-)
Slide 9
Slide 9 text
NODE.JS - INTRO
Server-side JavaScript powered by Chrome's V8
JavaScript Engine
Asynchronous, event-driven I/O API
NuGet-like package manager: Node Package Manager
(npm)
Cross platform: OS X, Windows, Linux
Upcoming: alternative runtime Microsoft's ChakraCore
NODE.JS - ASP.NET CORE 1.0
Node.js ASP.NET Core 1.0
JS, TS, CS, ...
Node Package Manager
Dynamic types
Single threaded Event
Loop
but async I/O threads
C#
NuGet
Static types
Multi
threaded
Slide 12
Slide 12 text
NODE.JS - SERVER
Slide 13
Slide 13 text
NODE.JS - PROS
Full stack JS development
Universal JavaScript
Same code on client and server
Built-in streaming
Open Source loving
community
Enterprise proven
Paypal, Netflix, Groupon
Slide 14
Slide 14 text
NODE.JS - WATCH OUT
Single threaded Event Loop
Avoid heavy CPU usage via JS
Utilizes one CPU only
Scale via clustering
Relational databases can be
strange
Code is documentation
Slide 15
Slide 15 text
RESTIFY
Slide 16
Slide 16 text
RESTIFY - OVERVIEW
Node.js module to build Web
APIs
Middleware support (OWIN like)
Client and server components
Routing
Slide 17
Slide 17 text
RESTIFY - MIDDLEWARE
c
o
n
s
t s
e
r
v
e
r = r
e
s
t
i
f
y
.
c
r
e
a
t
e
S
e
r
v
e
r
(
)
;
/
/ R
u
n
s b
e
f
o
r
e .
u
s
e h
a
n
d
l
e
r
s
s
e
r
v
e
r
.
p
r
e
(
(
r
e
q
, r
e
s
, n
e
x
t
) =
> { /
* D
o s
o
m
e
t
h
i
n
g *
/ }
)
;
/
/ R
u
n
s a
f
t
e
r .
p
r
e h
a
n
d
l
e
r
s
s
e
r
v
e
r
.
u
s
e
(
(
r
e
q
, r
e
s
, n
e
x
t
) =
> { /
* D
o s
o
m
e
t
h
i
n
g *
/ }
)
;
/
/ S
a
m
p
l
e
: U
s
i
n
g a p
r
e
d
e
f
i
n
e
d m
i
d
d
l
e
w
a
r
e
s
e
r
v
e
r
.
u
s
e
(
r
e
s
t
i
f
y
.
b
o
d
y
P
a
r
s
e
r
(
)
)
;
Slide 18
Slide 18 text
ASP.NET CORE 1.0 - MIDDLEWARE
p
u
b
l
i
c v
o
i
d C
o
n
f
i
g
u
r
e
S
e
r
v
i
c
e
s
(
I
S
e
r
v
i
c
e
C
o
l
l
e
c
t
i
o
n s
e
r
v
i
c
e
s
)
{
/
/ A
d
d a p
r
e
d
e
f
i
n
e
d m
i
d
d
l
e
w
a
r
e
s
e
r
v
i
c
e
s
.
A
d
d
M
v
c
(
)
;
}
p
u
b
l
i
c v
o
i
d C
o
n
f
i
g
u
r
e
(
I
A
p
p
l
i
c
a
t
i
o
n
B
u
i
l
d
e
r a
p
p
,
I
H
o
s
t
i
n
g
E
n
v
i
r
o
n
m
e
n
t e
n
v
,
I
L
o
g
g
e
r
F
a
c
t
o
r
y l
o
g
g
e
r
F
a
c
t
o
r
y
)
{
/
/ U
s
e a p
r
e
d
e
f
i
n
e
d m
i
d
d
l
e
w
a
r
e
a
p
p
.
U
s
e
M
v
c
(
)
;
}
Slide 19
Slide 19 text
RESTIFY - ROUTING
/
/ H
T
T
P G
E
T
s
e
r
v
e
r
.
g
e
t
(
'
/
h
e
l
l
o
'
, (
r
e
q
, r
e
s
) =
> r
e
s
.
s
e
n
d
(
2
0
0
, '
H
e
l
l
o W
o
r
l
d
'
)
)
;
/
/ H
T
T
P P
O
S
T
s
e
r
v
e
r
.
p
o
s
t
(
'
/
u
p
l
o
a
d
'
, s
o
m
e
M
i
d
d
l
e
w
a
r
e
)
;
/
/ H
T
T
P P
U
T
s
e
r
v
e
r
.
p
u
t
(
'
/
c
u
s
t
o
m
e
r
/
:
i
d
'
, m
i
d
d
l
e
w
a
r
e
1
, m
i
d
d
l
e
w
a
r
e
2
)
;
/
/ H
T
T
P D
E
L
E
T
E
s
e
r
v
e
r
.
d
e
l
(
'
/
c
u
s
t
o
m
e
r
/
:
i
d
'
, a
n
o
t
h
e
r
M
i
d
d
l
e
w
a
r
e
)
;
Slide 20
Slide 20 text
ASP.NET CORE 1.0 - ROUTING
[
H
t
t
p
G
e
t
(
"
h
e
l
l
o
"
)
]
p
u
b
l
i
c I
A
c
t
i
o
n
R
e
s
u
l
t G
e
t
(
) {
r
e
t
u
r
n O
k
(
"
H
e
l
l
o W
o
r
l
d
"
)
;
}
[
H
t
t
p
P
o
s
t
(
"
u
p
l
o
a
d
"
)
]
p
u
b
l
i
c I
A
c
t
i
o
n
R
e
s
u
l
t P
o
s
t
(
) { }
[
H
t
t
p
P
u
t
(
"
c
u
s
t
o
m
e
r
/
{
i
d
}
"
)
]
p
u
b
l
i
c I
A
c
t
i
o
n
R
e
s
u
l
t P
u
t
(
i
n
t i
d
) { }
[
H
t
t
p
D
e
l
e
t
e
(
"
c
u
s
t
o
m
e
r
/
{
i
d
}
"
)
]
p
u
b
l
i
c I
A
c
t
i
o
n
R
e
s
u
l
t D
e
l
e
t
e
(
) { }
Slide 21
Slide 21 text
TOKEN
AUTHENTICATION
Slide 22
Slide 22 text
TOKEN AUTH - OVERVIEW
Securing resources (APIs)
OAuth2 Protocol
Simple & standard method for web, mobile and desktop applications
OpenId Connect
Identity Layer on top of OAuth2
Slide 23
Slide 23 text
TOKEN AUTH - NODE.JS
Several node packages
oauth2-server, oauth2orize, OpenIdConnect, node-oauth2-provider
Currently no state-of-the-art package
Implementation depends on the used
package
Slide 24
Slide 24 text
TOKEN AUTH - ASP.NET CORE 1.0
State-of-the-art
package
IdentityServer4
Slide 25
Slide 25 text
DATABASES
Slide 26
Slide 26 text
DATABASES - NODE.JS
Adapters for lots of databases
NoSQL databases
MongoDB, CouchDB
Relational databases
MSSQL, PostgreSQL, MySQL, Sqlite
ORM: SequelizeJS
Multiple databases, transactions, migrations, replication, query API
Slide 27
Slide 27 text
DATABASES - ASP.NET CORE 1.0
Entity Framework 7
Supports multiple databases
MSSQL, Sqlite, InMemory, PostgreSQL
Code First, Database First
Migrations
Slide 28
Slide 28 text
LIVE DEMO
Slide 29
Slide 29 text
SUMMARY
Node.js overview
Feature support, Node.js server, pros, watch-out
Web APIs with restify
Routing, middlewares
Token Authentication via OAuth2
OAuth2, outh2-server
Relational databases via
SequelizeJS
Models, Query-API
Slide 30
Slide 30 text
SECURE DATA ACCESS
Mobile Apps und Zugriff auf Unternehmensdaten
ohne Cloud-Speicher und VPN
Manuel Rauber Christian Weyer
Today at 14:00 in room Würzburg
Slide 31
Slide 31 text
CHANNEL9
Cross-Platform Development
https://channel9.msdn.com/Series/Thementag-Cross-
Plattform-Entwicklung-mit-HTML5--Javascript